diff --git a/plugins/housekeeping/gsd-housekeeping-manager.c b/plugins/housekeeping/gsd-housekeeping-manager.c index f84cfad..e8f474a 100644 --- a/plugins/housekeeping/gsd-housekeeping-manager.c +++ b/plugins/housekeeping/gsd-housekeeping-manager.c @@ -85,9 +85,13 @@ thumb_data_free (gpointer data) } } +typedef enum { + HASH, + HASH_PNG +} FileType; static GList * -read_dir_for_purge (const char *path, GList *files) +read_dir_for_purge (const char *path, GList *files, FileType type) { GFile *read_path; GFileEnumerator *enum_dir; @@ -105,9 +109,20 @@ read_dir_for_purge (const char *path, GList *files) GFileInfo *info; while ((info = g_file_enumerator_next_file (enum_dir, NULL, NULL)) != NULL) { const char *name; + gboolean prune = FALSE; + name = g_file_info_get_name (info); - if (strlen (name) == 36 && strcmp (name + 32, ".png") == 0) { + switch (type) { + case HASH: + prune = (strlen (name) == 36); + break; + case HASH_PNG: + prune = (strlen (name) == 36 && strcmp (name + 32, ".png") == 0); + break; + } + + if (prune) { ThumbData *td; GFile *entry; char *entry_path; @@ -197,14 +212,14 @@ purge_thumbnail_cache (void) ".thumbnails", "normal", NULL); - files = read_dir_for_purge (path, NULL); + files = read_dir_for_purge (path, NULL, HASH_PNG); g_free (path); path = g_build_filename (g_get_home_dir (), ".thumbnails", "large", NULL); - files = read_dir_for_purge (path, files); + files = read_dir_for_purge (path, files, HASH_PNG); g_free (path); path = g_build_filename (g_get_home_dir (), @@ -212,7 +227,14 @@ purge_thumbnail_cache (void) "fail", "gnome-thumbnail-factory", NULL); - files = read_dir_for_purge (path, files); + files = read_dir_for_purge (path, files, HASH_PNG); + g_free (path); + + path = g_build_filename (g_get_user_cache_dir (), + "mojito", + "thumbnails", + NULL); + files = read_dir_for_purge (path, files, HASH); g_free (path); g_get_current_time (¤t_time);