comparison libpurple/buddyicon.c @ 18046:58e28ccf08e6

merge of '9d95292d55daedb7f74c7df323ad2c69d347d384' and 'fc5f9423f83f31e42ce80066eec30cdbbae7be01'
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 05 Jun 2007 01:38:09 +0000
parents c588a4a9d287
children 4ca97b26a8fb
comparison
equal deleted inserted replaced
18043:6b7b13adb9b1 18046:58e28ccf08e6
22 * along with this program; if not, write to the Free Software 22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */ 24 */
25 #include "internal.h" 25 #include "internal.h"
26 #include "buddyicon.h" 26 #include "buddyicon.h"
27 #include "cipher.h"
28 #include "conversation.h" 27 #include "conversation.h"
29 #include "dbus-maybe.h" 28 #include "dbus-maybe.h"
30 #include "debug.h" 29 #include "debug.h"
31 #include "imgstore.h" 30 #include "imgstore.h"
32 #include "util.h" 31 #include "util.h"
91 g_hash_table_insert(icon_file_cache, g_strdup(filename), 90 g_hash_table_insert(icon_file_cache, g_strdup(filename),
92 GINT_TO_POINTER(refs - 1)); 91 GINT_TO_POINTER(refs - 1));
93 } 92 }
94 } 93 }
95 94
96 static char *
97 purple_buddy_icon_data_calculate_filename(guchar *icon_data, size_t icon_len)
98 {
99 PurpleCipherContext *context;
100 gchar digest[41];
101
102 context = purple_cipher_context_new_by_name("sha1", NULL);
103 if (context == NULL)
104 {
105 purple_debug_error("buddyicon", "Could not find sha1 cipher\n");
106 g_return_val_if_reached(NULL);
107 }
108
109 /* Hash the icon data */
110 purple_cipher_context_append(context, icon_data, icon_len);
111 if (!purple_cipher_context_digest_to_str(context, sizeof(digest), digest, NULL))
112 {
113 purple_debug_error("buddyicon", "Failed to get SHA-1 digest.\n");
114 g_return_val_if_reached(NULL);
115 }
116 purple_cipher_context_destroy(context);
117
118 /* Return the filename */
119 return g_strdup_printf("%s.%s", digest,
120 purple_util_get_image_extension(icon_data, icon_len));
121 }
122
123 static void 95 static void
124 purple_buddy_icon_data_cache(PurpleStoredImage *img) 96 purple_buddy_icon_data_cache(PurpleStoredImage *img)
125 { 97 {
126 const char *dirname; 98 const char *dirname;
127 char *path; 99 char *path;
236 g_return_val_if_fail(icon_data != NULL, NULL); 208 g_return_val_if_fail(icon_data != NULL, NULL);
237 g_return_val_if_fail(icon_len > 0, NULL); 209 g_return_val_if_fail(icon_len > 0, NULL);
238 210
239 if (filename == NULL) 211 if (filename == NULL)
240 { 212 {
241 file = purple_buddy_icon_data_calculate_filename(icon_data, icon_len); 213 file = purple_util_get_image_filename(icon_data, icon_len);
242 if (file == NULL) 214 if (file == NULL)
243 { 215 {
244 g_free(icon_data); 216 g_free(icon_data);
245 return NULL; 217 return NULL;
246 } 218 }
964 return; 936 return;
965 } 937 }
966 938
967 g_free(path); 939 g_free(path);
968 940
969 new_filename = purple_buddy_icon_data_calculate_filename(icon_data, icon_len); 941 new_filename = purple_util_get_image_filename(icon_data, icon_len);
970 if (new_filename == NULL) 942 if (new_filename == NULL)
971 { 943 {
972 purple_debug_error("buddyicon", 944 purple_debug_error("buddyicon",
973 "New icon filename is NULL. This should never happen! " 945 "New icon filename is NULL. This should never happen! "
974 "The old filename was: %s\n", path); 946 "The old filename was: %s\n", path);