[gnome-desktop/wip/thumbnail-resources: 27/32] thumbnail: Clean up path generation code
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-desktop/wip/thumbnail-resources: 27/32] thumbnail: Clean up path generation code
- Date: Wed, 14 Nov 2012 21:08:21 +0000 (UTC)
commit c523b6166e0bb15d99c0a6b62b87cc14ad49f3db
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 | 157 +++++++++++-----------------
1 files changed, 61 insertions(+), 96 deletions(-)
---
diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
index daf8ed5..bf0dc71 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -846,6 +846,57 @@ gnome_desktop_thumbnail_factory_new (GnomeDesktopThumbnailSize size)
return factory;
}
+static char *
+thumbnail_filename (const char *uri,
+ GnomeDesktopThumbnailSize size)
+{
+ 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);
+
+ g_checksum_free (checksum);
+
+ return g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
+}
+
+static char *
+thumbnail_fail_path (const char *uri,
+ GnomeDesktopThumbnailSize size)
+{
+ char *file, *path;
+ file = thumbnail_filename (uri, size);
+ /* 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;
+}
+
+static char *
+thumbnail_path (const char *uri,
+ GnomeDesktopThumbnailSize size)
+{
+ char *file, *path;
+ file = thumbnail_filename (uri, size);
+ path = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails",
+ size == GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE ? "large" : "normal",
+ file,
+ NULL);
+ g_free (file);
+ return path;
+}
+
/**
* gnome_desktop_thumbnail_factory_lookup:
* @factory: a #GnomeDesktopThumbnailFactory
@@ -866,31 +917,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)
@@ -905,7 +940,7 @@ gnome_desktop_thumbnail_factory_lookup (GnomeDesktopThumbnailFactory *factory,
return path;
g_free (path);
- return FALSE;
+ return NULL;
}
/**
@@ -929,29 +964,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_fail_path (uri, priv->size);
pixbuf = gdk_pixbuf_new_from_file (path, NULL);
g_free (path);
@@ -1378,34 +1397,14 @@ 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);
@@ -1487,32 +1486,14 @@ 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];
gboolean saved_ok;
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_fail_path (uri, priv->size);
tmp_path = g_strconcat (path, ".XXXXXX", NULL);
@@ -1588,23 +1569,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]