[gnome-desktop] thumbnail: Clean up path generation code
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-desktop] thumbnail: Clean up path generation code
- Date: Tue, 18 Nov 2014 18:37:44 +0000 (UTC)
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]