comparison src/prefs.c @ 5013:e44e68aa6ea3

[gaim-migrate @ 5349] doing get_filename_from_uri in theme_dnd_recv committer: Tailor Script <tailor@pidgin.im>
author Herman Bloggs <hermanator12002@yahoo.com>
date Sat, 05 Apr 2003 01:55:57 +0000
parents 330a78666a5b
children 74dd2e4ed0c1
comparison
equal deleted inserted replaced
5012:3ee1b1409660 5013:e44e68aa6ea3
259 259
260 void theme_install_theme(char *path, char *extn) { 260 void theme_install_theme(char *path, char *extn) {
261 gchar *command; 261 gchar *command;
262 gchar *destdir; 262 gchar *destdir;
263 gchar *tail; 263 gchar *tail;
264 gchar *tmp;
265 GError *converr = NULL;
266 264
267 /* Just to be safe */ 265 /* Just to be safe */
268 g_strchomp(path); 266 g_strchomp(path);
269
270 if(!(tmp = g_filename_from_uri(path, NULL, &converr))) {
271 debug_printf("%s\n", converr ? converr->message : "g_filename_from_uri error");
272 return;
273 }
274 267
275 /* I dont know what you are, get out of here */ 268 /* I dont know what you are, get out of here */
276 if (extn != NULL) 269 if (extn != NULL)
277 tail = extn; 270 tail = extn;
278 else if ((tail = strrchr(tmp, '.')) == NULL) { 271 else if ((tail = strrchr(path, '.')) == NULL)
279 g_free(tmp);
280 return; 272 return;
281 } 273
282 destdir = g_strconcat(gaim_user_dir(), G_DIR_SEPARATOR_S "smileys", NULL); 274 destdir = g_strconcat(gaim_user_dir(), G_DIR_SEPARATOR_S "smileys", NULL);
283 275
284 /* We'll check this just to make sure. This also lets us do something different on 276 /* We'll check this just to make sure. This also lets us do something different on
285 * other platforms, if need be */ 277 * other platforms, if need be */
286 if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) { 278 if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) {
287 #ifndef _WIN32 279 #ifndef _WIN32
288 command = g_strdup_printf("tar > /dev/null xzf \"%s\" -C %s", tmp, destdir); 280 command = g_strdup_printf("tar > /dev/null xzf \"%s\" -C %s", tmp, destdir);
289 #else 281 #else
290 if(!wgaim_gz_untar(tmp, destdir)) { 282 if(!wgaim_gz_untar(path, destdir)) {
291 g_free(destdir); 283 g_free(destdir);
292 g_free(tmp);
293 return; 284 return;
294 } 285 }
295 #endif 286 #endif
296 } 287 }
297 else { 288 else {
298 g_free(tmp);
299 g_free(destdir); 289 g_free(destdir);
300 return; 290 return;
301 } 291 }
302 292
303 #ifndef _WIN32 293 #ifndef _WIN32
304 /* Fire! */ 294 /* Fire! */
305 system(command); 295 system(command);
306 296
307 g_free(command); 297 g_free(command);
308 #endif 298 #endif
309 g_free(tmp);
310 g_free(destdir); 299 g_free(destdir);
311 300
312 theme_refresh_theme_list(); 301 theme_refresh_theme_list();
313 } 302 }
314 303
333 if ((sd->length >= 0) && (sd->format == 8)) { 322 if ((sd->length >= 0) && (sd->format == 8)) {
334 /* Well, it looks like the drag event was cool. 323 /* Well, it looks like the drag event was cool.
335 * Let's do something with it */ 324 * Let's do something with it */
336 325
337 if (!g_ascii_strncasecmp(name, "file://", 7)) { 326 if (!g_ascii_strncasecmp(name, "file://", 7)) {
327 GError *converr = NULL;
328 gchar *tmp;
338 /* It looks like we're dealing with a local file. Let's 329 /* It looks like we're dealing with a local file. Let's
339 * just untar it in the right place */ 330 * just untar it in the right place */
340 theme_install_theme(name, NULL); 331 if(!(tmp = g_filename_from_uri(name, NULL, &converr))) {
332 debug_printf("%s\n", converr ? converr->message : "g_filename_from_uri error");
333 return;
334 }
335 theme_install_theme(tmp, NULL);
336 g_free(tmp);
341 } else if (!g_ascii_strncasecmp(name, "http://", 7)) { 337 } else if (!g_ascii_strncasecmp(name, "http://", 7)) {
342 /* Oo, a web drag and drop. This is where things 338 /* Oo, a web drag and drop. This is where things
343 * will start to get interesting */ 339 * will start to get interesting */
344 gchar *tail; 340 gchar *tail;
345 341