Mercurial > geeqie
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 |