static gboolean ensure_path_exists(const char *dir) { if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) { if (gaim_build_dir(dir, S_IRUSR | S_IWUSR | S_IXUSR)) return FALSE; } return TRUE; }
void gaym_fetch_thumbnail_cb(void *user_data, const char *pic_data, size_t len) { if (!user_data) return; struct gaym_fetch_thumbnail_data *d = user_data; if (!pic_data) { return; } if (len && !g_strrstr_len(pic_data, len, "Server Error")) { char *dir = g_build_filename(gaim_user_dir(), "icons", "gaym", d->who, NULL); char *filename = g_strdup(d->filename); char *path = g_build_filename(dir, filename, NULL); gaim_debug_misc("gayminfo", "dir: %s\n", dir); gaim_debug_misc("gayminfo", "filename: %s\n", filename); gaim_debug_misc("gayminfo", "path: %s\n", path); if (!g_file_test(dir, G_FILE_TEST_EXISTS)) gaim_build_dir(dir, S_IRUSR | S_IWUSR | S_IXUSR); if (path && !g_file_test(path, G_FILE_TEST_EXISTS)) { FILE *file; if ((file = g_fopen(path, "wb"))) { fwrite(pic_data, 1, len, file); fclose(file); } else { gaim_debug_misc("fetch_thumbnail_cb", "Couldn't write file\n"); } g_free(filename); g_free(path); g_free(dir); } } if (GAIM_CONNECTION_IS_VALID(d->gc) && len) { gaim_signal_emit(gaim_accounts_get_handle(), "info-updated", d->gc, NULL, d->who); if (gaim_find_conversation_with_account(d->who, d->gc->account)) { //gaim_buddy_icons_set_for_user(gaim_connection_get_account // (d->gc), d->who, // (void *) pic_data, len); } } else { gaim_debug_error("gaym", "Fetching buddy icon failed.\n"); } g_free(d->who); g_free(d); }
void fetch_thumbnail_cb(void *user_data, const char *pic_data, size_t len) { if (!user_data) return; struct fetch_thumbnail_data *d = user_data; if (!pic_data) { return; } if (len && !g_strrstr_len(pic_data, len, "Server Error")) { char *dir; if ((dir = g_build_filename(gaim_user_dir(), "icons", "gaym", NULL)) != NULL) { d->pic_data = pic_data; d->pic_data_len = len; gaim_build_dir(dir, S_IRUSR | S_IWUSR | S_IXUSR); char *filename = g_strdup_printf("%s.jpg", d->who); char *path = g_build_filename(dir, filename, NULL); FILE *file; if ((file = g_fopen(path, "wb"))) { fwrite(pic_data, 1, len, file); fclose(file); } else { gaim_debug_misc("chaticon", "Couldn't write file\n"); } g_free(filename); g_free(path); g_free(dir); } } else { d->pic_data = 0; d->pic_data_len = 0; } g_hash_table_foreach_remove(pending_updates, (GHRFunc) check_for_update, d); g_free(d); }