diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2012-09-05 18:07:09 -0300 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-11-18 19:36:33 +0100 |
commit | 57c18b88f2f4e0c80579ca6088af982b5a40fb06 (patch) | |
tree | 6519b4677883d2b50e57be86fe2974b46ce1bc63 /libgnome-desktop | |
parent | 8abaa436f7b498d4e08de034f37bafdd3d88be45 (diff) | |
download | gnome-desktop-57c18b88f2f4e0c80579ca6088af982b5a40fb06.tar.gz |
thumbnail: Clean up path generation code
Put the path calculation code in one spot.
https://bugzilla.gnome.org/show_bug.cgi?id=684026
Diffstat (limited to 'libgnome-desktop')
-rw-r--r-- | 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 e60a44cc..39123b0b 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); } /** |