comparison 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
comparison
equal deleted inserted replaced
782:3f7a0420c293 783:d6a7fb4b8e7c
171 171
172 if (g_list_find(cm->done_list, fd) == NULL) 172 if (g_list_find(cm->done_list, fd) == NULL)
173 { 173 {
174 cm->done_list = g_list_prepend(cm->done_list, fd); 174 cm->done_list = g_list_prepend(cm->done_list, fd);
175 175
176 if (filelist_read(fd->path, &list, &dlist)) 176 if (filelist_read(fd, &list, &dlist))
177 { 177 {
178 GList *work; 178 GList *work;
179 179
180 just_done = TRUE; 180 just_done = TRUE;
181 still_have_a_file = FALSE; 181 still_have_a_file = FALSE;
274 void cache_maintain_home(gint metadata, gint clear, GtkWidget *parent) 274 void cache_maintain_home(gint metadata, gint clear, GtkWidget *parent)
275 { 275 {
276 CMData *cm; 276 CMData *cm;
277 GList *dlist; 277 GList *dlist;
278 gchar *base; 278 gchar *base;
279 FileData *dir_fd;
279 const gchar *msg; 280 const gchar *msg;
280 const gchar *cache_folder; 281 const gchar *cache_folder;
281 GtkWidget *hbox; 282 GtkWidget *hbox;
282 283
283 if (metadata) 284 if (metadata)
288 { 289 {
289 cache_folder = GQ_CACHE_RC_THUMB; 290 cache_folder = GQ_CACHE_RC_THUMB;
290 } 291 }
291 292
292 base = g_build_filename(homedir(), cache_folder, NULL); 293 base = g_build_filename(homedir(), cache_folder, NULL);
293 294 dir_fd = file_data_new_simple(base);
294 if (!filelist_read(base, NULL, &dlist)) 295 if (!filelist_read(dir_fd, NULL, &dlist))
295 { 296 {
296 g_free(base); 297 g_free(base);
298 file_data_unref(dir_fd);
297 return; 299 return;
298 } 300 }
299 301
300 dlist = g_list_append(dlist, file_data_new_simple(base)); 302 dlist = g_list_append(dlist, dir_fd);
303 g_free(base);
301 304
302 cm = g_new0(CMData, 1); 305 cm = g_new0(CMData, 1);
303 cm->list = dlist; 306 cm->list = dlist;
304 cm->done_list = NULL; 307 cm->done_list = NULL;
305 cm->clear = clear; 308 cm->clear = clear;
359 gint cache_maintain_home_dir(const gchar *dir, gint recursive, gint clear) 362 gint cache_maintain_home_dir(const gchar *dir, gint recursive, gint clear)
360 { 363 {
361 gchar *base; 364 gchar *base;
362 gint base_length; 365 gint base_length;
363 GList *dlist = NULL; 366 GList *dlist = NULL;
367 FileData *dir_fd;
364 GList *flist = NULL; 368 GList *flist = NULL;
365 gint still_have_a_file = FALSE; 369 gint still_have_a_file = FALSE;
366 370
367 DEBUG_1("maintainance check: %s", dir); 371 DEBUG_1("maintainance check: %s", dir);
368 372
369 base_length = strlen(homedir()) + strlen("/") + strlen(GQ_CACHE_RC_THUMB); 373 base_length = strlen(homedir()) + strlen("/") + strlen(GQ_CACHE_RC_THUMB);
370 base = g_strconcat(homedir(), "/", GQ_CACHE_RC_THUMB, dir, NULL); 374 base = g_strconcat(homedir(), "/", GQ_CACHE_RC_THUMB, dir, NULL);
371 375 dir_fd = file_data_new_simple(base);
372 if (filelist_read(base, &flist, &dlist)) 376 g_free(base);
377
378 if (filelist_read(dir_fd, &flist, &dlist))
373 { 379 {
374 GList *work; 380 GList *work;
375 381
376 work = dlist; 382 work = dlist;
377 while (work) 383 while (work)
419 } 425 }
420 } 426 }
421 427
422 filelist_free(dlist); 428 filelist_free(dlist);
423 filelist_free(flist); 429 filelist_free(flist);
424 g_free(base); 430 file_data_unref(dir_fd);
425 431
426 return still_have_a_file; 432 return still_have_a_file;
427 } 433 }
428 434
429 /* This checks relative caches in dir/.thumbnails and 435 /* This checks relative caches in dir/.thumbnails and
430 * removes them if they have no source counterpart. 436 * removes them if they have no source counterpart.
431 */ 437 */
432 gint cache_maintain_dir(const gchar *dir, gint recursive, gint clear) 438 gint cache_maintain_dir(FileData *dir_fd, gint recursive, gint clear)
433 { 439 {
434 GList *list = NULL; 440 GList *list = NULL;
435 gchar *cachedir; 441 gchar *cachedir;
442 FileData *cachedir_fd;
436 gint still_have_a_file = FALSE; 443 gint still_have_a_file = FALSE;
437 GList *work; 444 GList *work;
438 445
439 cachedir = g_build_filename(dir, GQ_CACHE_LOCAL_THUMB, NULL); 446 cachedir = g_build_filename(dir, GQ_CACHE_LOCAL_THUMB, NULL);
440 447 cachedir_fd = file_data_new_simple(cachedir);
441 filelist_read(cachedir, &list, NULL); 448 g_free(cachedir);
449
450 filelist_read(cachedir_fd, &list, NULL);
442 work = list; 451 work = list;
443 452
444 while (work) 453 while (work)
445 { 454 {
446 FileData *fd; 455 FileData *fd;
447 gchar *source; 456 gchar *source;
448 457
449 fd = work->data; 458 fd = work->data;
450 work = work->next; 459 work = work->next;
451 460
452 source = g_build_filename(dir, fd->name, NULL); 461 source = g_build_filename(dir->path, fd->name, NULL);
453 462
454 if (clear || 463 if (clear ||
455 extension_truncate(source, GQ_CACHE_EXT_THUMB) || 464 extension_truncate(source, GQ_CACHE_EXT_THUMB) ||
456 extension_truncate(source, GQ_CACHE_EXT_SIM)) 465 extension_truncate(source, GQ_CACHE_EXT_SIM))
457 { 466 {
474 } 483 }
475 g_free(source); 484 g_free(source);
476 } 485 }
477 486
478 filelist_free(list); 487 filelist_free(list);
479 g_free(cachedir); 488 file_data_unref(cachedir_fd);
480 489
481 if (recursive) 490 if (recursive)
482 { 491 {
483 list = NULL; 492 list = NULL;
484 493
485 filelist_read(dir, NULL, &list); 494 filelist_read(dir_fd, NULL, &list);
486 work = list; 495 work = list;
487 while (work) 496 while (work)
488 { 497 {
489 FileData *fd = work->data; 498 FileData *fd = work->data;
490 work = work->next; 499 work = work->next;
706 CleanData *cd = data; 715 CleanData *cd = data;
707 716
708 cache_manager_render_finish(cd); 717 cache_manager_render_finish(cd);
709 } 718 }
710 719
711 static void cache_manager_render_folder(CleanData *cd, const gchar *path) 720 static void cache_manager_render_folder(CleanData *cd, FileData *dir_fd)
712 { 721 {
713 GList *list_d = NULL; 722 GList *list_d = NULL;
714 GList *list_f = NULL; 723 GList *list_f = NULL;
715 724
716 if (cd->recurse) 725 if (cd->recurse)
717 { 726 {
718 filelist_read(path, &list_f, &list_d); 727 filelist_read(dir_fd, &list_f, &list_d);
719 } 728 }
720 else 729 else
721 { 730 {
722 filelist_read(path, &list_f, NULL); 731 filelist_read(dir_fd, &list_f, NULL);
723 } 732 }
724 733
725 list_f = filelist_filter(list_f, FALSE); 734 list_f = filelist_filter(list_f, FALSE);
726 list_d = filelist_filter(list_d, TRUE); 735 list_d = filelist_filter(list_d, TRUE);
727 736
777 FileData *fd; 786 FileData *fd;
778 787
779 fd = cd->list_dir->data; 788 fd = cd->list_dir->data;
780 cd->list_dir = g_list_remove(cd->list_dir, fd); 789 cd->list_dir = g_list_remove(cd->list_dir, fd);
781 790
782 cache_manager_render_folder(cd, fd->path); 791 cache_manager_render_folder(cd, fd);
783 792
784 file_data_unref(fd); 793 file_data_unref(fd);
785 794
786 return TRUE; 795 return TRUE;
787 } 796 }
807 _("The specified folder can not be found."), 816 _("The specified folder can not be found."),
808 GTK_STOCK_DIALOG_WARNING, cd->gd->dialog); 817 GTK_STOCK_DIALOG_WARNING, cd->gd->dialog);
809 } 818 }
810 else 819 else
811 { 820 {
821 FileData *dir_fd;
812 gtk_widget_set_sensitive(cd->group, FALSE); 822 gtk_widget_set_sensitive(cd->group, FALSE);
813 gtk_widget_set_sensitive(cd->button_start, FALSE); 823 gtk_widget_set_sensitive(cd->button_start, FALSE);
814 gtk_widget_set_sensitive(cd->button_stop, TRUE); 824 gtk_widget_set_sensitive(cd->button_stop, TRUE);
815 gtk_widget_set_sensitive(cd->button_close, FALSE); 825 gtk_widget_set_sensitive(cd->button_close, FALSE);
816 826
817 spinner_set_interval(cd->spinner, SPINNER_SPEED); 827 spinner_set_interval(cd->spinner, SPINNER_SPEED);
818 828
819 cache_manager_render_folder(cd, path); 829 dir_fd = file_data_new_simple(path);
830 cache_manager_render_folder(cd, dir_fd);
831 file_data_unref(dir_fd);
820 while (cache_manager_render_file(cd)); 832 while (cache_manager_render_file(cd));
821 } 833 }
822 834
823 g_free(path); 835 g_free(path);
824 } 836 }
999 static void cache_manager_standard_clean_start_cb(GenericDialog *gd, gpointer data) 1011 static void cache_manager_standard_clean_start_cb(GenericDialog *gd, gpointer data)
1000 { 1012 {
1001 CleanData *cd = data; 1013 CleanData *cd = data;
1002 GList *list; 1014 GList *list;
1003 gchar *path; 1015 gchar *path;
1016 FileData *dir_fd;
1004 1017
1005 if (cd->list || !GTK_WIDGET_SENSITIVE(cd->button_start)) return; 1018 if (cd->list || !GTK_WIDGET_SENSITIVE(cd->button_start)) return;
1006 1019
1007 gtk_widget_set_sensitive(cd->button_start, FALSE); 1020 gtk_widget_set_sensitive(cd->button_start, FALSE);
1008 gtk_widget_set_sensitive(cd->button_stop, TRUE); 1021 gtk_widget_set_sensitive(cd->button_stop, TRUE);
1009 gtk_widget_set_sensitive(cd->button_close, FALSE); 1022 gtk_widget_set_sensitive(cd->button_close, FALSE);
1010 1023
1011 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(cd->progress), _("running...")); 1024 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(cd->progress), _("running..."));
1012 1025
1013 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_NORMAL, NULL); 1026 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_NORMAL, NULL);
1014 filelist_read(path, &list, NULL); 1027 dir_fd = file_data_new_simple(path);
1028 filelist_read(dir_fd, &list, NULL);
1015 cd->list = list; 1029 cd->list = list;
1030 file_data_unref(dir_fd);
1016 g_free(path); 1031 g_free(path);
1017 1032
1018 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_LARGE, NULL); 1033 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_LARGE, NULL);
1019 filelist_read(path, &list, NULL); 1034 dir_fd = file_data_new_simple(path);
1035 filelist_read(dir_fd, &list, NULL);
1020 cd->list = g_list_concat(cd->list, list); 1036 cd->list = g_list_concat(cd->list, list);
1037 file_data_unref(dir_fd);
1021 g_free(path); 1038 g_free(path);
1022 1039
1023 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_FAIL, NULL); 1040 path = g_build_filename(homedir(), THUMB_FOLDER_GLOBAL, THUMB_FOLDER_FAIL, NULL);
1024 filelist_read(path, &list, NULL); 1041 dir_fd = file_data_new_simple(path);
1042 filelist_read(dir_fd, &list, NULL);
1025 cd->list = g_list_concat(cd->list, list); 1043 cd->list = g_list_concat(cd->list, list);
1044 file_data_unref(dir_fd);
1026 g_free(path); 1045 g_free(path);
1027 1046
1028 cd->count_total = g_list_length(cd->list); 1047 cd->count_total = g_list_length(cd->list);
1029 cd->count_done = 0; 1048 cd->count_done = 0;
1030 1049