# HG changeset patch # User Mark Huetsch # Date 1154448939 0 # Node ID 9c5790820ac6bd2ac14e5f7fcc66914993b2cb67 # Parent e9fe337fa9aa89465cd92236d42e199aa6f8423a [gaim-migrate @ 16606] QQ no longer supports changing one's password through the client. Users must go to password.qq.com instead. I also squashed a compiler warning. committer: Tailor Script diff -r e9fe337fa9aa -r 9c5790820ac6 src/protocols/qq/buddy_info.c --- a/src/protocols/qq/buddy_info.c Tue Aug 01 13:08:03 2006 +0000 +++ b/src/protocols/qq/buddy_info.c Tue Aug 01 16:15:39 2006 +0000 @@ -180,7 +180,7 @@ } // info_fields are compared by their group positions -static gint info_field_compare(gconstpointer a, gconstpointer b, gpointer unused) +static gint info_field_compare(gconstpointer a, gconstpointer b) { return ((info_field *) a)->group_pos - ((info_field *) b)->group_pos; } @@ -318,31 +318,22 @@ } } -// send packet to modify personal information, and/or change password -void qq_send_packet_modify_info(GaimConnection *gc, contact_info *info, gchar *new_passwd) +// send packet to modify personal information +void qq_send_packet_modify_info(GaimConnection *gc, contact_info *info) { - GaimAccount *a; - gchar *old_passwd, *info_field[QQ_CONTACT_FIELDS]; + gchar *info_field[QQ_CONTACT_FIELDS]; gint i; guint8 *raw_data, *cursor, bar; g_return_if_fail(gc != NULL && info != NULL); - a = gc->account; - old_passwd = a->password; bar = 0x1f; raw_data = g_newa(guint8, MAX_PACKET_SIZE - 128); cursor = raw_data; g_memmove(info_field, info, sizeof(gchar *) * QQ_CONTACT_FIELDS); - if (new_passwd == NULL || strlen(new_passwd) == 0) - create_packet_b(raw_data, &cursor, bar); - else { // we're gonna change passwd - create_packet_data(raw_data, &cursor, (guint8 *) old_passwd, strlen(old_passwd)); - create_packet_b(raw_data, &cursor, bar); - create_packet_data(raw_data, &cursor, (guint8 *) new_passwd, strlen(new_passwd)); - } + create_packet_b(raw_data, &cursor, bar); // important!, skip the first uid entry for (i = 1; i < QQ_CONTACT_FIELDS; i++) { @@ -427,7 +418,7 @@ } info = (contact_info *) info_field; - qq_send_packet_modify_info(gc, info, NULL); + qq_send_packet_modify_info(gc, info); g_free(mid); for (i = 0; i < QQ_CONTACT_FIELDS; i++) g_free(info_field[i]); diff -r e9fe337fa9aa -r 9c5790820ac6 src/protocols/qq/buddy_info.h --- a/src/protocols/qq/buddy_info.h Tue Aug 01 13:08:03 2006 +0000 +++ b/src/protocols/qq/buddy_info.h Tue Aug 01 16:15:39 2006 +0000 @@ -114,7 +114,7 @@ void qq_refresh_buddy_and_myself(contact_info *info, GaimConnection *gc); void qq_send_packet_get_info(GaimConnection *gc, guint32 uid, gboolean show_window); -void qq_send_packet_modify_info(GaimConnection *gc, contact_info *info, gchar *new_passwd); +void qq_send_packet_modify_info(GaimConnection *gc, contact_info *info); void qq_prepare_modify_info(GaimConnection *gc); void qq_process_modify_info_reply(guint8 *buf, gint buf_len, GaimConnection *gc); void qq_process_get_info_reply(guint8 *buf, gint buf_len, GaimConnection *gc); diff -r e9fe337fa9aa -r 9c5790820ac6 src/protocols/qq/qq.c --- a/src/protocols/qq/qq.c Tue Aug 01 13:08:03 2006 +0000 +++ b/src/protocols/qq/qq.c Tue Aug 01 16:15:39 2006 +0000 @@ -447,6 +447,12 @@ qq_prepare_modify_info(gc); } + +static void _qq_menu_change_password(GaimPluginAction * action) +{ + gaim_notify_uri(NULL, "https://password.qq.com"); +} + /* remove a buddy from my list and remove myself from his list */ /* TODO: re-enable this static void _qq_menu_block_buddy(GaimBlistNode * node) @@ -668,6 +674,9 @@ act = gaim_plugin_action_new(_("Modify My Information"), _qq_menu_modify_my_info); m = g_list_append(m, act); + act = gaim_plugin_action_new(_("Change Password"), _qq_menu_change_password); + m = g_list_append(m, act); + act = gaim_plugin_action_new(_("Show Login Information"), _qq_menu_show_login_info); m = g_list_append(m, act);