diff src/cache_maint.c @ 783:d6a7fb4b8e7c

replaced directory path with FileData* dir_fd
author nadvornik
date Tue, 03 Jun 2008 19:44:19 +0000
parents 44128da39e13
children baade53888be
line wrap: on
line diff
--- a/src/cache_maint.c	Tue Jun 03 15:54:05 2008 +0000
+++ b/src/cache_maint.c	Tue Jun 03 19:44:19 2008 +0000
@@ -173,7 +173,7 @@
 		{
 		cm->done_list = g_list_prepend(cm->done_list, fd);
 
-		if (filelist_read(fd->path, &list, &dlist))
+		if (filelist_read(fd, &list, &dlist))
 			{
 			GList *work;
 
@@ -276,6 +276,7 @@
 	CMData *cm;
 	GList *dlist;
 	gchar *base;
+	FileData *dir_fd;
 	const gchar *msg;
 	const gchar *cache_folder;
 	GtkWidget *hbox;
@@ -290,14 +291,16 @@
 		}
 
 	base = g_build_filename(homedir(), cache_folder, NULL);
-	
-	if (!filelist_read(base, NULL, &dlist))
+	dir_fd = file_data_new_simple(base);
+	if (!filelist_read(dir_fd, NULL, &dlist))
 		{
 		g_free(base);
+		file_data_unref(dir_fd);
 		return;
 		}
 
-	dlist = g_list_append(dlist, file_data_new_simple(base));
+	dlist = g_list_append(dlist, dir_fd);
+	g_free(base);
 
 	cm = g_new0(CMData, 1);
 	cm->list = dlist;
@@ -361,6 +364,7 @@
 	gchar *base;
 	gint base_length;
 	GList *dlist = NULL;
+	FileData *dir_fd;
 	GList *flist = NULL;
 	gint still_have_a_file = FALSE;
 
@@ -368,8 +372,10 @@
 
 	base_length = strlen(homedir()) + strlen("/") + strlen(GQ_CACHE_RC_THUMB);
 	base = g_strconcat(homedir(), "/", GQ_CACHE_RC_THUMB, dir, NULL);
+	dir_fd = file_data_new_simple(base);
+	g_free(base);
 
-	if (filelist_read(base, &flist, &dlist))
+	if (filelist_read(dir_fd, &flist, &dlist))
 		{
 		GList *work;
 
@@ -421,7 +427,7 @@
 
 	filelist_free(dlist);
 	filelist_free(flist);
-	g_free(base);
+	file_data_unref(dir_fd);
 
 	return still_have_a_file;
 }
@@ -429,16 +435,19 @@
 /* This checks relative caches in dir/.thumbnails and
  * removes them if they have no source counterpart.
  */
-gint cache_maintain_dir(const gchar *dir, gint recursive, gint clear)
+gint cache_maintain_dir(FileData *dir_fd, gint recursive, gint clear)
 {
 	GList *list = NULL;
 	gchar *cachedir;
+	FileData *cachedir_fd;
 	gint still_have_a_file = FALSE;
 	GList *work;
 
 	cachedir = g_build_filename(dir, GQ_CACHE_LOCAL_THUMB, NULL);
+	cachedir_fd = file_data_new_simple(cachedir);
+	g_free(cachedir);
 
-	filelist_read(cachedir, &list, NULL);
+	filelist_read(cachedir_fd, &list, NULL);
 	work = list;
 
 	while (work)
@@ -449,7 +458,7 @@
 		fd = work->data;
 		work = work->next;
 
-		source = g_build_filename(dir, fd->name, NULL);
+		source = g_build_filename(dir->path, fd->name, NULL);
 
 		if (clear ||
 		    extension_truncate(source, GQ_CACHE_EXT_THUMB) ||
@@ -476,13 +485,13 @@
 		}
 
 	filelist_free(list);
-	g_free(cachedir);
+	file_data_unref(cachedir_fd);
 
 	if (recursive)
 		{
 		list = NULL;
 
-		filelist_read(dir, NULL, &list);
+		filelist_read(dir_fd, NULL, &list);
 		work = list;
 		while (work)
 			{
@@ -708,18 +717,18 @@
 	cache_manager_render_finish(cd);
 }
 
-static void cache_manager_render_folder(CleanData *cd, const gchar *path)
+static void cache_manager_render_folder(CleanData *cd, FileData *dir_fd)
 {
 	GList *list_d = NULL;
 	GList *list_f = NULL;
 
 	if (cd->recurse)
 		{
-		filelist_read(path, &list_f, &list_d);
+		filelist_read(dir_fd, &list_f, &list_d);
 		}
 	else
 		{
-		filelist_read(path, &list_f, NULL);
+		filelist_read(dir_fd, &list_f, NULL);
 		}
 
 	list_f = filelist_filter(list_f, FALSE);
@@ -779,7 +788,7 @@
 		fd = cd->list_dir->data;
 		cd->list_dir = g_list_remove(cd->list_dir, fd);
 
-		cache_manager_render_folder(cd, fd->path);
+		cache_manager_render_folder(cd, fd);
 
 		file_data_unref(fd);
 
@@ -809,6 +818,7 @@
 		}
 	else
 		{
+		FileData *dir_fd;
 		gtk_widget_set_sensitive(cd->group, FALSE);
 		gtk_widget_set_sensitive(cd->button_start, FALSE);
 		gtk_widget_set_sensitive(cd->button_stop, TRUE);
@@ -816,7 +826,9 @@
 
 		spinner_set_interval(cd->spinner, SPINNER_SPEED);
 
-		cache_manager_render_folder(cd, path);
+		dir_fd = file_data_new_simple(path);
+		cache_manager_render_folder(cd, dir_fd);
+		file_data_unref(dir_fd);
 		while (cache_manager_render_file(cd));
 		}
 
@@ -1001,6 +1013,7 @@
 	CleanData *cd = data;
 	GList *list;
 	gchar *path;
+	FileData *dir_fd;
 
 	if (cd->list || !GTK_WIDGET_SENSITIVE(cd->button_start)) return;
 
@@ -1011,18 +1024,24 @@
 	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(cd->progress), _("running..."));
 
 	path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_NORMAL, NULL);
-	filelist_read(path, &list, NULL);
+	dir_fd = file_data_new_simple(path);
+	filelist_read(dir_fd, &list, NULL);
 	cd->list = list;
+	file_data_unref(dir_fd);
 	g_free(path);
 
 	path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_LARGE, NULL);
-	filelist_read(path, &list, NULL);
+	dir_fd = file_data_new_simple(path);
+	filelist_read(dir_fd, &list, NULL);
 	cd->list = g_list_concat(cd->list, list);
+	file_data_unref(dir_fd);
 	g_free(path);
 
 	path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_FAIL, NULL);
-	filelist_read(path, &list, NULL);
+	dir_fd = file_data_new_simple(path);
+	filelist_read(dir_fd, &list, NULL);
 	cd->list = g_list_concat(cd->list, list);
+	file_data_unref(dir_fd);
 	g_free(path);
 
 	cd->count_total = g_list_length(cd->list);