libpurple/util.c

changeset 16545
5188ffbaeb6e
parent 16493
d12e208140c7
parent 16437
7ff7c3405ea2
child 16557
b0e9ddccdbb9
equal deleted inserted replaced
16514:e8896810a485 16545:5188ffbaeb6e
63 unsigned long len; 63 unsigned long len;
64 unsigned long data_len; 64 unsigned long data_len;
65 }; 65 };
66 66
67 static char custom_home_dir[MAXPATHLEN]; 67 static char custom_home_dir[MAXPATHLEN];
68 static char home_dir[MAXPATHLEN]; 68 static char home_dir[MAXPATHLEN] = "";
69 69
70 PurpleMenuAction * 70 PurpleMenuAction *
71 purple_menu_action_new(const char *label, PurpleCallback callback, gpointer data, 71 purple_menu_action_new(const char *label, PurpleCallback callback, gpointer data,
72 GList *children) 72 GList *children)
73 { 73 {
2243 #else 2243 #else
2244 return wpurple_data_dir(); 2244 return wpurple_data_dir();
2245 #endif 2245 #endif
2246 } 2246 }
2247 2247
2248 /* Returns the argument passed to -c IFF it was present, or ~/.gaim IFF it 2248 /* Returns the argument passed to -c IFF it was present, or ~/.purple. */
2249 * exists, else ~/.purple. */
2250 const char * 2249 const char *
2251 purple_user_dir(void) 2250 purple_user_dir(void)
2252 { 2251 {
2253 if (custom_home_dir != NULL && strlen(custom_home_dir) > 0) { 2252 if (custom_home_dir != NULL && *custom_home_dir) {
2254 strcpy ((char*) &home_dir, (char*) &custom_home_dir); 2253 strcpy ((char*) &home_dir, (char*) &custom_home_dir);
2255 } else { 2254 } else if (!*home_dir) {
2256 const gchar *hd = purple_home_dir(); 2255 const gchar *hd = purple_home_dir();
2257 2256
2258 if (hd) { 2257 if (hd) {
2259 g_strlcpy((char*) &home_dir, hd, sizeof(home_dir));
2260 g_strlcat((char*) &home_dir, G_DIR_SEPARATOR_S ".gaim",
2261 sizeof(home_dir));
2262
2263 if (g_file_test(home_dir, G_FILE_TEST_EXISTS))
2264 return home_dir;
2265
2266 g_strlcpy((char*) &home_dir, hd, sizeof(home_dir)); 2258 g_strlcpy((char*) &home_dir, hd, sizeof(home_dir));
2267 g_strlcat((char*) &home_dir, G_DIR_SEPARATOR_S ".purple", 2259 g_strlcat((char*) &home_dir, G_DIR_SEPARATOR_S ".purple",
2268 sizeof(home_dir)); 2260 sizeof(home_dir));
2269 } 2261 }
2270 } 2262 }
2573 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", 2565 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp",
2574 "g_get_tmp_dir() failed!\n"); 2566 "g_get_tmp_dir() failed!\n");
2575 } 2567 }
2576 2568
2577 return fp; 2569 return fp;
2570 }
2571
2572 const char *
2573 purple_util_get_image_extension(gpointer data, size_t len)
2574 {
2575 g_return_val_if_fail(data != NULL, NULL);
2576 g_return_val_if_fail(len > 0, NULL);
2577
2578 if (len >= 4)
2579 {
2580 if (!strncmp((char *)data, "BM", 2))
2581 return "bmp";
2582 else if (!strncmp((char *)data, "GIF8", 4))
2583 return "gif";
2584 else if (!strncmp((char *)data, "\xff\xd8\xff\xe0", 4))
2585 return "jpg";
2586 else if (!strncmp((char *)data, "\x89PNG", 4))
2587 return "png";
2588 }
2589
2590 return "icon";
2578 } 2591 }
2579 2592
2580 gboolean 2593 gboolean
2581 purple_program_is_valid(const char *program) 2594 purple_program_is_valid(const char *program)
2582 { 2595 {

mercurial