--- a/libpurple/protocols/qq/buddy_info.c Thu Dec 04 04:15:28 2008 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Fri Dec 05 14:51:36 2008 +0000 @@ -228,7 +228,7 @@ g_return_if_fail(uid != 0); qd = (qq_data *) gc->proto_data; - g_snprintf(raw_data, sizeof(raw_data), "%d", uid); + g_snprintf(raw_data, sizeof(raw_data), "%u", uid); qq_send_cmd_mess(gc, QQ_CMD_GET_BUDDY_INFO, (guint8 *) raw_data, strlen(raw_data), update_class, action); } @@ -504,6 +504,8 @@ { PurpleAccount *account = purple_connection_get_account(gc); const gchar *icon_path = purple_account_get_buddy_icon_path(account); + gchar **segments; + gint index; g_return_if_fail(icon_path != NULL); @@ -512,6 +514,12 @@ * purple_imgstore_get_filename is always new file * QQ buddy may set custom icon if level is over 16 */ purple_debug_info("QQ", "Change my icon to %s\n", icon_path); + segments = g_strsplit_set(icon_path, G_DIR_SEPARATOR_S, 0); + for (index = 0; segments[index] != NULL; index++) { + purple_debug_info("QQ", "Split to %s\n", segments[index]); + } + + g_strfreev(segments); } gchar *qq_get_icon_name(gint face) @@ -553,7 +561,7 @@ return icon_path; } -static void update_buddy_icon(PurpleAccount *account, const gchar *who, gint face) +void qq_update_buddy_icon(PurpleAccount *account, const gchar *who, gint face) { PurpleBuddy *buddy; const gchar *icon_name_prev = NULL; @@ -564,19 +572,21 @@ g_return_if_fail(account != NULL && who != NULL); - purple_debug_info("QQ", "Update %s icon to %d\n", who, face); + /* purple_debug_info("QQ", "Update %s icon to %d\n", who, face); */ icon_name = qq_get_icon_name(face); - purple_debug_info("QQ", "icon file name is %s\n", icon_name); + g_return_if_fail(icon_name != NULL); + /* purple_debug_info("QQ", "icon file name is %s\n", icon_name); */ if ((buddy = purple_find_buddy(account, who))) { icon_name_prev = purple_buddy_icons_get_checksum_for_user(buddy); - if (icon_name_prev != NULL) { - purple_debug_info("QQ", "Previous icon is %s\n", icon_name_prev); - } + /* + purple_debug_info("QQ", "Previous icon is %s\n", + icon_name_prev != NULL ? icon_name_prev : "(NULL)"); + */ } if (icon_name_prev != NULL && !strcmp(icon_name, icon_name_prev)) { - purple_debug_info("QQ", "Icon is not changed\n"); + /* purple_debug_info("QQ", "Icon is not changed\n"); */ g_free(icon_name); return; } @@ -590,6 +600,8 @@ if (!g_file_get_contents(icon_path, &icon_file_content, &icon_file_size, NULL)) { purple_debug_error("QQ", "Failed reading icon file %s\n", icon_path); } else { + purple_debug_info("QQ", "Update %s icon to %d (%s)\n", + who, face, icon_path); purple_buddy_icons_set_for_user(account, who, icon_file_content, icon_file_size, icon_name); } @@ -610,7 +622,7 @@ qd = (qq_data *) gc->proto_data; - uid = strtol(segments[QQ_INFO_UID], NULL, 10); + uid = strtoul(segments[QQ_INFO_UID], NULL, 10); who = uid_to_purple_name(uid); qq_filter_str(segments[QQ_INFO_NICK]); @@ -648,7 +660,7 @@ purple_blist_server_alias_buddy(buddy, bd->nickname); /* convert face num from packet (0-299) to local face (1-100) */ - update_buddy_icon(gc->account, who, bd->face); + qq_update_buddy_icon(gc->account, who, bd->face); g_free(who); g_free(alias_utf8); @@ -786,12 +798,12 @@ bytes += qq_get32(&onlineTime, data + bytes); bytes += qq_get16(&level, data + bytes); bytes += qq_get16(&timeRemainder, data + bytes); - purple_debug_info("QQ_LEVEL", "%d, tmOnline: %d, level: %d, tmRemainder: %d\n", - uid, onlineTime, level, timeRemainder); + purple_debug_info("QQ", "level: %d, uid %d, tmOnline: %d, tmRemainder: %d\n", + level, uid, onlineTime, timeRemainder); bd = qq_buddy_data_find(gc, uid); if (bd == NULL) { - purple_debug_error("QQ", "Got levels of %d not in my buddy list\n", uid); + purple_debug_error("QQ", "Got levels of %u not in my buddy list\n", uid); continue; } @@ -821,8 +833,8 @@ bytes += qq_get32(&onlineTime, data + bytes); bytes += qq_get16(&level, data + bytes); bytes += qq_get16(&timeRemainder, data + bytes); - purple_debug_info("QQ_LEVEL", "%d, tmOnline: %d, level: %d, tmRemainder: %d\n", - uid, onlineTime, level, timeRemainder); + purple_debug_info("QQ", "level: %d, uid %d, tmOnline: %d, tmRemainder: %d\n", + level, uid, onlineTime, timeRemainder); bd = qq_buddy_data_find(gc, uid); if (bd == NULL) {