+
+static GSList* deletion_list = NULL;
+
+/**
+ * util_add_to_deletion_list:
+ *
+ * Add a name of a file into the list that is to be deleted on program exit
+ * Normally this is for files that get used asynchronously,
+ * so we don't know when it's time to delete them - other than at this program's end
+ */
+void util_add_to_deletion_list ( const gchar* filename )
+{
+ deletion_list = g_slist_append ( deletion_list, g_strdup (filename) );
+}
+
+/**
+ * util_remove_all_in_deletion_list:
+ *
+ * Delete all the files in the deletion list
+ * This should only be called on program exit
+ */
+void util_remove_all_in_deletion_list ( void )
+{
+ while ( deletion_list )
+ {
+ g_remove ( deletion_list->data );
+ g_free ( deletion_list->data );
+ deletion_list = g_slist_delete_link ( deletion_list, deletion_list );
+ }
+}