[gnome-desktop] thumbnail: Clean up path generation code



commit 57c18b88f2f4e0c80579ca6088af982b5a40fb06
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Sep 5 18:07:09 2012 -0300

    thumbnail: Clean up path generation code
    
    Put the path calculation code in one spot.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=684026

 libgnome-desktop/gnome-desktop-thumbnail.c |  162 +++++++++++-----------------
 1 files changed, 63 insertions(+), 99 deletions(-)
---
diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
index e60a44c..39123b0 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -1018,6 +1018,59 @@ gnome_desktop_thumbnail_factory_new (GnomeDesktopThumbnailSize size)
   return factory;
 }
 
+static char *
+thumbnail_filename (const char *uri)
+{
+  GChecksum *checksum;
+  guint8 digest[16];
+  gsize digest_len = sizeof (digest);
+  char *file;
+
+  checksum = g_checksum_new (G_CHECKSUM_MD5);
+  g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
+
+  g_checksum_get_digest (checksum, digest, &digest_len);
+  g_assert (digest_len == 16);
+
+  file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
+
+  g_checksum_free (checksum);
+
+  return file;
+}
+
+static char *
+thumbnail_path (const char                *uri,
+                GnomeDesktopThumbnailSize  size)
+{
+  char *path, *file;
+
+  file = thumbnail_filename (uri);
+  path = g_build_filename (g_get_user_cache_dir (),
+                           "thumbnails",
+                           size == GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE ? "large" : "normal",
+                           NULL);
+  g_free (file);
+  return path;
+}
+
+static char *
+thumbnail_failed_path (const char *uri)
+{
+  char *path, *file;
+
+  file = thumbnail_filename (uri);
+  /* XXX: appname is only used for failed thumbnails. Is this a mistake? */
+  path = g_build_filename (g_get_user_cache_dir (),
+                           "thumbnails",
+                           "fail",
+                           appname,
+                           file,
+                           NULL);
+  g_free (file);
+  return path;
+}
+
 /**
  * gnome_desktop_thumbnail_factory_lookup:
  * @factory: a #GnomeDesktopThumbnailFactory
@@ -1038,31 +1091,15 @@ gnome_desktop_thumbnail_factory_lookup (GnomeDesktopThumbnailFactory *factory,
                                        time_t                 mtime)
 {
   GnomeDesktopThumbnailFactoryPrivate *priv = factory->priv;
-  char *path, *file;
-  GChecksum *checksum;
-  guint8 digest[16];
-  gsize digest_len = sizeof (digest);
   GdkPixbuf *pixbuf;
   gboolean res;
+  char *path;
 
   g_return_val_if_fail (uri != NULL, NULL);
 
   res = FALSE;
 
-  checksum = g_checksum_new (G_CHECKSUM_MD5);
-  g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
-  g_checksum_get_digest (checksum, digest, &digest_len);
-  g_assert (digest_len == 16);
-
-  file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-  
-  path = g_build_filename (g_get_user_cache_dir (),
-                          "thumbnails",
-                          (priv->size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
-                          file,
-                          NULL);
-  g_free (file);
+  path = thumbnail_path (uri, priv->size);
 
   pixbuf = gdk_pixbuf_new_from_file (path, NULL);
   if (pixbuf != NULL)
@@ -1071,13 +1108,11 @@ gnome_desktop_thumbnail_factory_lookup (GnomeDesktopThumbnailFactory *factory,
       g_object_unref (pixbuf);
     }
 
-  g_checksum_free (checksum);
-
   if (res)
     return path;
 
   g_free (path);
-  return FALSE;
+  return NULL;
 }
 
 /**
@@ -1101,29 +1136,13 @@ gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail (GnomeDesktopThumbnai
                                                            const char            *uri,
                                                            time_t                 mtime)
 {
-  char *path, *file;
+  char *path;
   GdkPixbuf *pixbuf;
   gboolean res;
-  GChecksum *checksum;
-  guint8 digest[16];
-  gsize digest_len = sizeof (digest);
-
-  checksum = g_checksum_new (G_CHECKSUM_MD5);
-  g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
-  g_checksum_get_digest (checksum, digest, &digest_len);
-  g_assert (digest_len == 16);
 
   res = FALSE;
 
-  file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
-  path = g_build_filename (g_get_user_cache_dir (),
-                          "thumbnails/fail",
-                          appname,
-                          file,
-                          NULL);
-  g_free (file);
+  path = thumbnail_failed_path (uri);
 
   pixbuf = gdk_pixbuf_new_from_file (path, NULL);
   g_free (path);
@@ -1134,8 +1153,6 @@ gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail (GnomeDesktopThumbnai
       g_object_unref (pixbuf);
     }
 
-  g_checksum_free (checksum);
-
   return res;
 }
 
@@ -1550,34 +1567,15 @@ gnome_desktop_thumbnail_factory_save_thumbnail (GnomeDesktopThumbnailFactory *fa
                                                time_t                 original_mtime)
 {
   GnomeDesktopThumbnailFactoryPrivate *priv = factory->priv;
-  char *path, *file;
+  char *path;
   char *tmp_path;
   const char *width, *height;
   int tmp_fd;
   char mtime_str[21];
   gboolean saved_ok;
-  GChecksum *checksum;
-  guint8 digest[16];
-  gsize digest_len = sizeof (digest);
   GError *error;
 
-  checksum = g_checksum_new (G_CHECKSUM_MD5);
-  g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
-  g_checksum_get_digest (checksum, digest, &digest_len);
-  g_assert (digest_len == 16);
-
-  file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
-  path = g_build_filename (g_get_user_cache_dir (),
-                          "thumbnails",
-                          (priv->size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
-                          file,
-                          NULL);
-
-  g_free (file);
-
-  g_checksum_free (checksum);
+  path = thumbnail_path (uri, priv->size);
 
   tmp_path = g_strconcat (path, ".XXXXXX", NULL);
 
@@ -1659,31 +1657,13 @@ gnome_desktop_thumbnail_factory_create_failed_thumbnail (GnomeDesktopThumbnailFa
                                                         const char            *uri,
                                                         time_t                 mtime)
 {
-  char *path, *file;
+  char *path;
   char *tmp_path;
   int tmp_fd;
   char mtime_str[21];
   GdkPixbuf *pixbuf;
-  GChecksum *checksum;
-  guint8 digest[16];
-  gsize digest_len = sizeof (digest);
 
-  checksum = g_checksum_new (G_CHECKSUM_MD5);
-  g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
-  g_checksum_get_digest (checksum, digest, &digest_len);
-  g_assert (digest_len == 16);
-
-  file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
-  path = g_build_filename (g_get_user_cache_dir (),
-                          "thumbnails/fail",
-                          appname,
-                          file,
-                          NULL);
-  g_free (file);
-
-  g_checksum_free (checksum);
+  path = thumbnail_failed_path (uri);
 
   tmp_path = g_strconcat (path, ".XXXXXX", NULL);
 
@@ -1757,23 +1737,7 @@ char *
 gnome_desktop_thumbnail_path_for_uri (const char         *uri,
                                      GnomeDesktopThumbnailSize  size)
 {
-  char *md5;
-  char *file;
-  char *path;
-
-  md5 = gnome_desktop_thumbnail_md5 (uri);
-  file = g_strconcat (md5, ".png", NULL);
-  g_free (md5);
-  
-  path = g_build_filename (g_get_user_cache_dir (),
-                          "thumbnails",
-                          (size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
-                          file,
-                          NULL);
-    
-  g_free (file);
-
-  return path;
+  return thumbnail_path (uri, size);
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]