From fd9c907758d0e421d4c1807eec3c7ea55b4eb3a1 Mon Sep 17 00:00:00 2001 From: SHiNE CsyFeK Date: Sun, 6 Feb 2011 05:23:22 +0000 Subject: 2010.01.23 - flos * added an option to force incoming message in chat room to use a default font instead of the font in message itself 2010.01.18 - flos * added type 'UPDCLS' and 'UID' for implementing business logic layer 2010.01.13 - ccpaging * qq2009-1 patch from ccpaging --- libpurple/protocols/qq/ChangeLog | 9 +++++ libpurple/protocols/qq/buddy_info.c | 18 +++++---- libpurple/protocols/qq/buddy_info.h | 9 ++--- libpurple/protocols/qq/buddy_list.c | 14 +++---- libpurple/protocols/qq/buddy_list.h | 12 +++--- libpurple/protocols/qq/buddy_memo.c | 36 ++++++++++------- libpurple/protocols/qq/buddy_memo.h | 5 ++- libpurple/protocols/qq/buddy_opt.c | 72 ++++++++++++++++----------------- libpurple/protocols/qq/buddy_opt.h | 24 +++++------ libpurple/protocols/qq/file_trans.c | 12 +++--- libpurple/protocols/qq/file_trans.h | 3 +- libpurple/protocols/qq/group.h | 2 +- libpurple/protocols/qq/group_im.c | 15 ++++++- libpurple/protocols/qq/group_im.h | 8 +++- libpurple/protocols/qq/group_info.c | 11 +++-- libpurple/protocols/qq/group_info.h | 2 +- libpurple/protocols/qq/group_internal.c | 6 +-- libpurple/protocols/qq/group_internal.h | 6 +-- libpurple/protocols/qq/group_join.c | 2 +- libpurple/protocols/qq/group_join.h | 3 +- libpurple/protocols/qq/im.c | 22 +++++++--- libpurple/protocols/qq/im.h | 5 +++ libpurple/protocols/qq/qq.c | 16 ++++++-- libpurple/protocols/qq/qq.h | 9 ++++- libpurple/protocols/qq/qq_base.c | 10 ++--- libpurple/protocols/qq/qq_base.h | 7 ++-- libpurple/protocols/qq/qq_define.c | 2 + libpurple/protocols/qq/qq_define.h | 3 +- libpurple/protocols/qq/qq_network.c | 10 ++--- libpurple/protocols/qq/qq_network.h | 4 +- libpurple/protocols/qq/qq_process.c | 10 ++--- libpurple/protocols/qq/qq_process.h | 6 +-- libpurple/protocols/qq/qq_trans.c | 8 ++-- libpurple/protocols/qq/qq_trans.h | 4 +- libpurple/protocols/qq/send_file.c | 24 +++++------ libpurple/protocols/qq/send_file.h | 12 +++--- libpurple/protocols/qq/utils.c | 6 +-- libpurple/protocols/qq/utils.h | 5 ++- 38 files changed, 255 insertions(+), 177 deletions(-) diff --git a/libpurple/protocols/qq/ChangeLog b/libpurple/protocols/qq/ChangeLog index b0a7534071..be4bdcae11 100644 --- a/libpurple/protocols/qq/ChangeLog +++ b/libpurple/protocols/qq/ChangeLog @@ -1,3 +1,12 @@ +2010.01.23 - flos + * added an option to force incoming message in chat room to use a default font instead of the font in message itself + +2010.01.18 - flos + * added type 'UPDCLS' and 'UID' for implementing business logic layer + +2010.01.13 - ccpaging + * qq2009-1 patch from ccpaging + 2009.04.23 - flos * Fixed a bug of updating buddy who is not in user's buddy list diff --git a/libpurple/protocols/qq/buddy_info.c b/libpurple/protocols/qq/buddy_info.c index a66e56465d..6ece2ed9a7 100644 --- a/libpurple/protocols/qq/buddy_info.c +++ b/libpurple/protocols/qq/buddy_info.c @@ -222,8 +222,8 @@ static void info_display_only(PurpleConnection *gc, gchar **segments) g_strfreev(segments); } -void qq_request_buddy_info(PurpleConnection *gc, guint32 uid, - guint32 update_class, int action) +void qq_request_buddy_info(PurpleConnection *gc, UID uid, + UPDCLS update_class, int action) { gchar raw_data[16] = {0}; @@ -621,7 +621,7 @@ static void update_buddy_info(PurpleConnection *gc, gchar **segments) PurpleBuddy *buddy = NULL; qq_data *qd = NULL; qq_buddy_data *bd = NULL; - guint32 uid; + UID uid; gchar *who; gchar *alias_utf8; @@ -742,7 +742,7 @@ void qq_process_get_buddy_info(guint8 *data, gint data_len, guint32 action, Purp return; } -void qq_request_get_level(PurpleConnection *gc, guint32 uid) +void qq_request_get_level(PurpleConnection *gc, UID uid) { qq_data *qd = (qq_data *) gc->proto_data; guint8 buf[16] = {0}; @@ -757,7 +757,7 @@ void qq_request_get_level(PurpleConnection *gc, guint32 uid) qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); } -void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid) +void qq_request_get_level_2007(PurpleConnection *gc, UID uid) { guint8 buf[16] = {0}; gint bytes = 0; @@ -768,7 +768,7 @@ void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid) qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); } -void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class) +void qq_request_get_buddies_level(PurpleConnection *gc, UPDCLS update_class) { qq_data *qd = (qq_data *) gc->proto_data; PurpleBuddy *buddy; @@ -798,7 +798,8 @@ void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class) static void process_level(PurpleConnection *gc, guint8 *data, gint data_len) { gint bytes = 0; - guint32 uid, onlineTime; + UID uid; + guint32 onlineTime; guint16 level, timeRemainder; qq_buddy_data *bd; @@ -830,7 +831,8 @@ static void process_level(PurpleConnection *gc, guint8 *data, gint data_len) static void process_level_2007(PurpleConnection *gc, guint8 *data, gint data_len) { gint bytes; - guint32 uid, onlineTime; + UID uid; + guint32 onlineTime; guint16 level, timeRemainder; qq_buddy_data *bd; guint16 str_len; diff --git a/libpurple/protocols/qq/buddy_info.h b/libpurple/protocols/qq/buddy_info.h index 08fa23b291..edd493bc8a 100644 --- a/libpurple/protocols/qq/buddy_info.h +++ b/libpurple/protocols/qq/buddy_info.h @@ -78,15 +78,14 @@ gchar *qq_get_icon_name(gint face); gchar *qq_get_icon_path(gchar *icon_name); void qq_change_icon_cb(PurpleConnection *gc, const char *filepath); -void qq_request_buddy_info(PurpleConnection *gc, guint32 uid, - guint32 update_class, int action); +void qq_request_buddy_info(PurpleConnection *gc, UID uid, UPDCLS update_class, int action); void qq_set_custom_icon(PurpleConnection *gc, PurpleStoredImage *img); void qq_process_change_info(PurpleConnection *gc, guint8 *data, gint data_len); void qq_process_get_buddy_info(guint8 *data, gint data_len, guint32 action, PurpleConnection *gc); -void qq_request_get_level(PurpleConnection *gc, guint32 uid); -void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid); -void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class); +void qq_request_get_level(PurpleConnection *gc, UID uid); +void qq_request_get_level_2007(PurpleConnection *gc, UID uid); +void qq_request_get_buddies_level(PurpleConnection *gc, UPDCLS update_class); void qq_process_get_level_reply(guint8 *buf, gint buf_len, PurpleConnection *gc); void qq_update_buddy_icon(PurpleAccount *account, const gchar *who, gint face); diff --git a/libpurple/protocols/qq/buddy_list.c b/libpurple/protocols/qq/buddy_list.c index a927a87f3a..b107b404a6 100644 --- a/libpurple/protocols/qq/buddy_list.c +++ b/libpurple/protocols/qq/buddy_list.c @@ -53,7 +53,7 @@ typedef struct _qq_buddy_online { } qq_buddy_online; /* get a list of online_buddies */ -void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, guint32 update_class) +void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, UPDCLS update_class) { guint8 *raw_data; gint bytes = 0; @@ -77,7 +77,7 @@ void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, guint3 /* position starts with 0x0000, * server may return a position tag if list is too long for one packet */ -void qq_request_get_buddies(PurpleConnection *gc, guint16 position, guint32 update_class) +void qq_request_get_buddies(PurpleConnection *gc, guint16 position, UPDCLS update_class) { qq_data *qd; guint8 raw_data[16] = {0}; @@ -101,7 +101,7 @@ void qq_request_get_buddies(PurpleConnection *gc, guint16 position, guint32 upda } /* get all list, buddies & Quns with groupsid support */ -void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, guint32 update_class) +void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, UPDCLS update_class) { guint8 raw_data[16] = {0}; gint bytes = 0; @@ -362,7 +362,7 @@ guint32 qq_process_get_buddies_and_rooms(guint8 *data, gint data_len, PurpleConn gint bytes; guint8 sub_cmd, reply_code; guint32 unknown, position; - guint32 uid; + UID uid; guint8 type; qq_room_data *rmd; @@ -455,7 +455,7 @@ static guint8 get_status_from_purple(PurpleConnection *gc) } /* send a packet to change my online status */ -void qq_request_change_status(PurpleConnection *gc, guint32 update_class) +void qq_request_change_status(PurpleConnection *gc, UPDCLS update_class) { qq_data *qd; guint8 raw_data[16] = {0}; @@ -525,7 +525,7 @@ void qq_process_buddy_change_status(guint8 *data, gint data_len, PurpleConnectio { qq_data *qd; gint bytes; - guint32 my_uid; + UID my_uid; gchar *who; PurpleBuddy *buddy; qq_buddy_data *bd; @@ -583,7 +583,7 @@ void qq_process_buddy_change_status(guint8 *data, gint data_len, PurpleConnectio } /*TODO: maybe this should be qq_update_buddy_status() ?*/ -void qq_update_buddy_status(PurpleConnection *gc, guint32 uid, guint8 status, guint8 flag) +void qq_update_buddy_status(PurpleConnection *gc, UID uid, guint8 status, guint8 flag) { gchar *who; const gchar *status_id; diff --git a/libpurple/protocols/qq/buddy_list.h b/libpurple/protocols/qq/buddy_list.h index 00d3e6a07b..d4a01268ce 100644 --- a/libpurple/protocols/qq/buddy_list.h +++ b/libpurple/protocols/qq/buddy_list.h @@ -30,7 +30,7 @@ #include "qq.h" typedef struct _qq_buddy_status { - guint32 uid; + UID uid; guint8 unknown1; struct in_addr ip; guint16 port; @@ -40,20 +40,20 @@ typedef struct _qq_buddy_status { guint8 unknown_key[QQ_KEY_LENGTH]; } qq_buddy_status; -void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, guint32 update_class); +void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, UPDCLS update_class); guint8 qq_process_get_buddies_online(guint8 *data, gint data_len, PurpleConnection *gc); -void qq_request_get_buddies(PurpleConnection *gc, guint16 position, guint32 update_class); +void qq_request_get_buddies(PurpleConnection *gc, guint16 position, UPDCLS update_class); guint16 qq_process_get_buddies(guint8 *data, gint data_len, PurpleConnection *gc); -void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, guint32 update_class); +void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, UPDCLS update_class); guint32 qq_process_get_buddies_and_rooms(guint8 *data, gint data_len, PurpleConnection *gc); -void qq_request_change_status(PurpleConnection *gc, guint32 update_class); +void qq_request_change_status(PurpleConnection *gc, UPDCLS update_class); void qq_process_change_status(guint8 *data, gint data_len, PurpleConnection *gc); void qq_process_buddy_change_status(guint8 *data, gint data_len, PurpleConnection *gc); void qq_update_buddyies_status(PurpleConnection *gc); -void qq_update_buddy_status(PurpleConnection *gc, guint32 uid, guint8 status, guint8 flag); +void qq_update_buddy_status(PurpleConnection *gc, UID uid, guint8 status, guint8 flag); void qq_buddy_data_free_all(PurpleConnection *gc); #endif diff --git a/libpurple/protocols/qq/buddy_memo.c b/libpurple/protocols/qq/buddy_memo.c index 906e99f5ea..bffcb88254 100644 --- a/libpurple/protocols/qq/buddy_memo.c +++ b/libpurple/protocols/qq/buddy_memo.c @@ -83,7 +83,7 @@ static const gchar *memo_txt[] = { typedef struct _modify_memo_request { PurpleConnection *gc; - guint32 bd_uid; + UID bd_uid; gchar **segments; } modify_memo_request; @@ -107,7 +107,7 @@ static void memo_free(gchar **segments) purple_debug_info("QQ", "memo freed\n"); } -static void update_buddy_memo(PurpleConnection *gc, guint32 bd_uid, gchar *alias) +static void update_buddy_memo(PurpleConnection *gc, UID bd_uid, gchar *alias) { PurpleAccount *account; PurpleBuddy *buddy; @@ -127,7 +127,7 @@ static void update_buddy_memo(PurpleConnection *gc, guint32 bd_uid, gchar *alias purple_blist_alias_buddy(buddy, (const char*)alias); } -static void request_change_memo(PurpleConnection *gc, guint32 bd_uid, gchar **segments) +static void request_change_memo(PurpleConnection *gc, UID bd_uid, gchar **segments) { gint bytes; /* Attention, length of each segment must be guint8(0~255), @@ -170,7 +170,7 @@ static void memo_modify_cancle_cb(modify_memo_request *memo_request, PurpleReque static void memo_modify_ok_cb(modify_memo_request *memo_request, PurpleRequestFields *fields) { PurpleConnection *gc; - guint32 bd_uid; + UID bd_uid; gchar **segments; const gchar *utf8_str; gchar *value = NULL; @@ -187,7 +187,7 @@ static void memo_modify_ok_cb(modify_memo_request *memo_request, PurpleRequestFi utf8_str = purple_request_fields_get_string(fields, memo_id[index]); /* update alias */ if (QQ_MEMO_ALIAS == index) { - update_buddy_memo(gc, bd_uid, segments[QQ_MEMO_ALIAS]); + update_buddy_memo(gc, (UID)bd_uid, segments[QQ_MEMO_ALIAS]); } if (NULL == utf8_str) { value = g_strdup(""); @@ -213,7 +213,7 @@ static void memo_modify_ok_cb(modify_memo_request *memo_request, PurpleRequestFi } /* memo modify dialogue */ -static void memo_modify_dialogue(PurpleConnection *gc, guint32 bd_uid, gchar **segments, guint32 action) +static void memo_modify_dialogue(PurpleConnection *gc, UID bd_uid, gchar **segments, guint32 action) { modify_memo_request *memo_request; PurpleRequestField *field; @@ -272,7 +272,7 @@ static void memo_modify_dialogue(PurpleConnection *gc, guint32 bd_uid, gchar **s } } -static void qq_create_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 action) +static void qq_create_buddy_memo(PurpleConnection *gc, UID bd_uid, guint32 action) { gchar **segments; gint index; @@ -285,9 +285,11 @@ static void qq_create_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 a memo_modify_dialogue(gc, bd_uid, segments, action); } -/* process reply to get_memo packet */ +/* process reply to get_memo packet + * here, update_class will be regarded as buddy's uid. because some + * memo packages returned without uid, which will make us confused */ void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, - guint32 update_class, guint32 action) + UPDCLS update_class, guint32 action) { gchar **segments; gint bytes; @@ -314,7 +316,9 @@ void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len if (1 == data_len) { /* only one byte */ purple_debug_info("QQ", "memo packet contains no buddy uid and memo...\n"); if (QQ_BUDDY_MEMO_MODIFY == action) { - qq_create_buddy_memo(gc, (guint32)update_class, QQ_BUDDY_MEMO_MODIFY); + UID mod_uid; + mod_uid = (UID)update_class; + qq_create_buddy_memo(gc, mod_uid, QQ_BUDDY_MEMO_MODIFY); return; } return; @@ -354,9 +358,9 @@ void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len } /* common action, update buddy memo */ - update_buddy_memo(gc, rcv_uid, segments[QQ_MEMO_ALIAS]); + update_buddy_memo(gc, (UID)rcv_uid, segments[QQ_MEMO_ALIAS]); - /* memo is thing that we regard our buddy as, so we need one more buddy_uid */ + /* memo is a thing that we regard our buddy as, so we need one more buddy_uid */ memo_modify_dialogue(gc, rcv_uid, segments, action); break; default: @@ -365,8 +369,12 @@ void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len } } -/* request buddy memo */ -void qq_request_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 update_class, guint32 action) +/* request buddy memo + * + * param: gc, uid, update_class, action + * here, update_class will be set to buddy's uid. because some memo + * packages returned without uid, which will make us confused */ +void qq_request_buddy_memo(PurpleConnection *gc, UID bd_uid, UPDCLS update_class, guint32 action) { guint8 raw_data[16] = {0}; gint bytes; diff --git a/libpurple/protocols/qq/buddy_memo.h b/libpurple/protocols/qq/buddy_memo.h index 4d932d6728..80b1cc7801 100644 --- a/libpurple/protocols/qq/buddy_memo.h +++ b/libpurple/protocols/qq/buddy_memo.h @@ -28,6 +28,7 @@ #include #include "connection.h" #include "blist.h" +#include "qq.h" #define QQ_BUDDY_MEMO_REQUEST_SUCCESS 0x00 @@ -40,9 +41,9 @@ enum }; -void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, guint32 update_class, guint32 action); +void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, UPDCLS update_class, guint32 action); -void qq_request_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 update_class, guint32 action); +void qq_request_buddy_memo(PurpleConnection *gc, UID bd_uid, UPDCLS update_class, guint32 action); #endif diff --git a/libpurple/protocols/qq/buddy_opt.c b/libpurple/protocols/qq/buddy_opt.c index 63ad5d182f..ef0379b035 100644 --- a/libpurple/protocols/qq/buddy_opt.c +++ b/libpurple/protocols/qq/buddy_opt.c @@ -51,12 +51,12 @@ enum { typedef struct _qq_buddy_req { PurpleConnection *gc; - guint32 uid; + UID uid; guint8 *auth; guint8 auth_len; } qq_buddy_req; -void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid, +void add_buddy_authorize_input(PurpleConnection *gc, UID uid, guint8 *auth, guint8 auth_len); static void buddy_req_free(qq_buddy_req *add_req) @@ -88,7 +88,7 @@ PurpleGroup *qq_group_find_or_new(const gchar *group_name) return g; } -static qq_buddy_data *qq_buddy_data_new(guint32 uid) +static qq_buddy_data *qq_buddy_data_new(UID uid) { qq_buddy_data *bd = g_new0(qq_buddy_data, 1); memset(bd, 0, sizeof(qq_buddy_data)); @@ -97,7 +97,7 @@ static qq_buddy_data *qq_buddy_data_new(guint32 uid) return bd; } -qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid) +qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, UID uid) { gchar *who; PurpleBuddy *buddy; @@ -131,7 +131,7 @@ void qq_buddy_data_free(qq_buddy_data *bd) } /* create purple buddy without data and display with no-auth icon */ -PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid) +PurpleBuddy *qq_buddy_new(PurpleConnection *gc, UID uid) { PurpleBuddy *buddy; PurpleGroup *group; @@ -175,7 +175,7 @@ static void qq_buddy_free(PurpleBuddy *buddy) purple_blist_remove_buddy(buddy); } -PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid) +PurpleBuddy *qq_buddy_find(PurpleConnection *gc, UID uid) { PurpleBuddy *buddy; gchar *who; @@ -188,7 +188,7 @@ PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid) return buddy; } -PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid) +PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, UID uid) { PurpleBuddy *buddy; qq_buddy_data *bd; @@ -213,7 +213,7 @@ PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid) } /* send packet to remove a buddy from my buddy list */ -static void request_remove_buddy(PurpleConnection *gc, guint32 uid) +static void request_remove_buddy(PurpleConnection *gc, UID uid) { gchar uid_str[11]; gint bytes; @@ -226,7 +226,7 @@ static void request_remove_buddy(PurpleConnection *gc, guint32 uid) } static void request_remove_buddy_ex(PurpleConnection *gc, - guint32 uid, guint8 *auth, guint8 auth_len) + UID uid, guint8 *auth, guint8 auth_len) { gint bytes; guint8 *raw_data; @@ -246,7 +246,7 @@ static void request_remove_buddy_ex(PurpleConnection *gc, qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, raw_data, bytes, 0, uid); } -void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid) +void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, UID uid) { guint8 raw_data[16]; gint bytes; @@ -260,7 +260,7 @@ void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, gui qq_send_cmd_mess(gc, QQ_CMD_AUTH_CODE, raw_data, bytes, 0, uid); } -void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid) +void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, UID uid) { gint bytes; guint8 cmd, reply; @@ -308,7 +308,7 @@ static void add_buddy_question_cb(qq_buddy_req *add_req, const gchar *text) buddy_req_free(add_req); } -static void add_buddy_question_input(PurpleConnection *gc, guint32 uid, gchar *question) +static void add_buddy_question_input(PurpleConnection *gc, UID uid, gchar *question) { gchar *who, *msg; qq_buddy_req *add_req; @@ -336,7 +336,7 @@ static void add_buddy_question_input(PurpleConnection *gc, guint32 uid, gchar *q } void qq_request_question(PurpleConnection *gc, - guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8) + guint8 cmd, UID uid, const gchar *question_utf8, const gchar *answer_utf8) { guint8 raw_data[MAX_PACKET_SIZE - 16]; gint bytes; @@ -371,7 +371,7 @@ void qq_request_question(PurpleConnection *gc, return; } -static void request_add_buddy_by_question(PurpleConnection *gc, guint32 uid, +static void request_add_buddy_by_question(PurpleConnection *gc, UID uid, guint8 *code, guint16 code_len) { guint8 raw_data[MAX_PACKET_SIZE - 16]; @@ -395,7 +395,7 @@ static void request_add_buddy_by_question(PurpleConnection *gc, guint32 uid, qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes); } -void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid) +void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, UID uid) { gint bytes; guint8 cmd, reply; @@ -461,7 +461,7 @@ void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guin } /* try to remove myself from someone's buddy list */ -static void request_buddy_remove_me(PurpleConnection *gc, guint32 uid) +static void request_buddy_remove_me(PurpleConnection *gc, UID uid) { guint8 raw_data[16] = {0}; gint bytes = 0; @@ -474,7 +474,7 @@ static void request_buddy_remove_me(PurpleConnection *gc, guint32 uid) } /* try to add a buddy without authentication */ -static void request_add_buddy_no_auth(PurpleConnection *gc, guint32 uid) +static void request_add_buddy_no_auth(PurpleConnection *gc, UID uid) { gchar uid_str[11]; @@ -486,7 +486,7 @@ static void request_add_buddy_no_auth(PurpleConnection *gc, guint32 uid) (guint8 *) uid_str, strlen(uid_str), 0, uid); } -static void request_add_buddy_no_auth_ex(PurpleConnection *gc, guint32 uid) +static void request_add_buddy_no_auth_ex(PurpleConnection *gc, UID uid) { guint bytes; guint8 raw_data[16]; @@ -499,7 +499,7 @@ static void request_add_buddy_no_auth_ex(PurpleConnection *gc, guint32 uid) } /* this buddy needs authentication, text conversion is done at lowest level */ -static void request_add_buddy_auth(PurpleConnection *gc, guint32 uid, const gchar response, const gchar *text) +static void request_add_buddy_auth(PurpleConnection *gc, UID uid, const gchar response, const gchar *text) { guint8 raw_data[MAX_PACKET_SIZE - 16]; gint bytes; @@ -526,7 +526,7 @@ static void request_add_buddy_auth(PurpleConnection *gc, guint32 uid, const gcha qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH, raw_data, bytes); } -static void request_add_buddy_auth_ex(PurpleConnection *gc, guint32 uid, +static void request_add_buddy_auth_ex(PurpleConnection *gc, UID uid, const gchar *text, guint8 *auth, guint8 auth_len) { guint8 raw_data[MAX_PACKET_SIZE - 16]; @@ -643,7 +643,7 @@ static void add_buddy_no_auth_cb(qq_buddy_req *add_req) buddy_req_free(add_req); } -void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid, +void add_buddy_authorize_input(PurpleConnection *gc, UID uid, guint8 *auth, guint8 auth_len) { gchar *who, *msg; @@ -683,7 +683,7 @@ void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid, void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { qq_data *qd; - guint32 uid; + UID uid; g_return_if_fail(NULL != gc && NULL != gc->proto_data); g_return_if_fail(buddy != NULL); @@ -733,7 +733,7 @@ void qq_process_add_buddy_auth(guint8 *data, gint data_len, PurpleConnection *gc } /* process the server reply for my request to remove a buddy */ -void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid) +void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, UID uid) { PurpleBuddy *buddy = NULL; gchar *msg; @@ -756,7 +756,7 @@ void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, } /* process the server reply for my request to remove myself from a buddy */ -void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid) +void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, UID uid) { gchar *msg; @@ -772,7 +772,7 @@ void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_le } void qq_process_add_buddy_no_auth(PurpleConnection *gc, - guint8 *data, gint data_len, guint32 uid) + guint8 *data, gint data_len, UID uid) { qq_data *qd; gchar **segments; @@ -834,11 +834,11 @@ void qq_process_add_buddy_no_auth(PurpleConnection *gc, } void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc, - guint8 *data, gint data_len, guint32 uid) + guint8 *data, gint data_len, UID uid) { qq_data *qd; gint bytes; - guint32 dest_uid; + UID dest_uid; guint8 reply; guint8 auth_type; @@ -903,7 +903,7 @@ void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *grou { qq_data *qd; qq_buddy_data *bd; - guint32 uid; + UID uid; g_return_if_fail(gc != NULL && gc->proto_data != NULL); g_return_if_fail(buddy != NULL); @@ -933,7 +933,7 @@ void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *grou * otherwise purple segmentation fault */ } -static void buddy_add_input(PurpleConnection *gc, guint32 uid, gchar *reason) +static void buddy_add_input(PurpleConnection *gc, UID uid, gchar *reason) { PurpleAccount *account = purple_connection_get_account(gc); qq_buddy_req *add_req; @@ -967,7 +967,7 @@ static void buddy_add_input(PurpleConnection *gc, guint32 uid, gchar *reason) static void server_buddy_add_request(PurpleConnection *gc, gchar *from, gchar *to, guint8 *data, gint data_len) { - guint32 uid; + UID uid; gchar *msg, *reason; g_return_if_fail(from != NULL && to != NULL); @@ -996,7 +996,7 @@ void qq_process_buddy_check_code(PurpleConnection *gc, guint8 *data, gint data_l gint bytes; guint8 cmd; guint8 reply; - guint32 uid; + UID uid; guint16 flag1, flag2; g_return_if_fail(data != NULL && data_len >= 5); @@ -1026,7 +1026,7 @@ static void request_buddy_check_code(PurpleConnection *gc, { guint8 *raw_data; gint bytes; - guint32 uid; + UID uid; g_return_if_fail(code != NULL && code_len > 0 && from != NULL); @@ -1073,7 +1073,7 @@ static void server_buddy_add_request_ex(PurpleConnection *gc, gchar *from, gchar guint8 *data, gint data_len) { gint bytes; - guint32 uid; + UID uid; gchar *msg; guint8 allow_reverse; @@ -1103,7 +1103,7 @@ static void server_buddy_added(PurpleConnection *gc, gchar *from, gchar *to, { PurpleAccount *account = purple_connection_get_account(gc); PurpleBuddy *buddy; - guint32 uid; + UID uid; qq_buddy_req *add_req; gchar *who; gchar *primary; @@ -1177,7 +1177,7 @@ static void server_buddy_added_me(PurpleConnection *gc, gchar *from, gchar *to, { PurpleAccount *account = purple_connection_get_account(gc); qq_data *qd; - guint32 uid; + UID uid; g_return_if_fail(from != NULL && to != NULL); @@ -1204,7 +1204,7 @@ static void server_buddy_added_me(PurpleConnection *gc, gchar *from, gchar *to, static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *to, guint8 *data, gint data_len) { - guint32 uid; + UID uid; PurpleBuddy *buddy; gchar *msg, *msg_utf8; gint bytes; diff --git a/libpurple/protocols/qq/buddy_opt.h b/libpurple/protocols/qq/buddy_opt.h index b7c74d7fda..b986c6b384 100644 --- a/libpurple/protocols/qq/buddy_opt.h +++ b/libpurple/protocols/qq/buddy_opt.h @@ -54,31 +54,31 @@ void qq_change_buddys_group(PurpleConnection *gc, const char *who, void qq_remove_buddy_and_me(PurpleBlistNode * node); void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group); -void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid); -void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid); +void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, UID uid); +void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, UID uid); void qq_process_add_buddy_no_auth(PurpleConnection *gc, - guint8 *data, gint data_len, guint32 uid); + guint8 *data, gint data_len, UID uid); void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc, - guint8 *data, gint data_len, guint32 uid); + guint8 *data, gint data_len, UID uid); void qq_process_add_buddy_auth(guint8 *data, gint data_len, PurpleConnection *gc); void qq_process_buddy_from_server(PurpleConnection *gc, int funct, gchar *from, gchar *to, guint8 *data, gint data_len); void qq_process_buddy_check_code(PurpleConnection *gc, guint8 *data, gint data_len); -void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid); -void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid); +void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, UID uid); +void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, UID uid); void qq_request_question(PurpleConnection *gc, - guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8); -void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid); + guint8 cmd, UID uid, const gchar *question_utf8, const gchar *answer_utf8); +void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, UID uid); void qq_process_add_buddy_auth_ex(PurpleConnection *gc, guint8 *data, gint data_len, guint32 ship32); -qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid); +qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, UID uid); void qq_buddy_data_free(qq_buddy_data *bd); -PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid); -PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid); -PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid); +PurpleBuddy *qq_buddy_new(PurpleConnection *gc, UID uid); +PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, UID uid); +PurpleBuddy *qq_buddy_find(PurpleConnection *gc, UID uid); PurpleGroup *qq_group_find_or_new(const gchar *group_name); #endif diff --git a/libpurple/protocols/qq/file_trans.c b/libpurple/protocols/qq/file_trans.c index 306fd96733..8c35b05830 100644 --- a/libpurple/protocols/qq/file_trans.c +++ b/libpurple/protocols/qq/file_trans.c @@ -41,8 +41,8 @@ struct _qq_file_header { guint16 client_ver; guint8 file_key; - guint32 sender_uid; - guint32 receiver_uid; + UID sender_uid; + UID receiver_uid; }; typedef struct _qq_file_header qq_file_header; @@ -62,12 +62,12 @@ static guint32 _gen_file_key(void) return _get_file_key(seed); } -static guint32 _decrypt_qq_uid(guint32 uid, guint32 key) +static guint32 _decrypt_qq_uid(UID uid, guint32 key) { return ~(uid ^ key); } -static guint32 _encrypt_qq_uid(guint32 uid, guint32 key) +static guint32 _encrypt_qq_uid(UID uid, guint32 key) { return (~uid) ^ key; } @@ -232,7 +232,7 @@ void qq_xfer_close_file(PurpleXfer *xfer) } #endif -static gint _qq_send_file(PurpleConnection *gc, guint8 *data, gint len, guint16 packet_type, guint32 to_uid) +static gint _qq_send_file(PurpleConnection *gc, guint8 *data, gint len, guint16 packet_type, UID to_uid) { guint8 *raw_data; gint bytes = 0; @@ -259,7 +259,7 @@ static gint _qq_send_file(PurpleConnection *gc, guint8 *data, gint len, guint16 } /* send a file to udp channel with QQ_FILE_CONTROL_PACKET_TAG */ -void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, guint32 to_uid, guint8 hellobyte) +void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, UID to_uid, guint8 hellobyte) { qq_data *qd; gint bytes, bytes_expected, encrypted_len; diff --git a/libpurple/protocols/qq/file_trans.h b/libpurple/protocols/qq/file_trans.h index 18c6bd1b7b..078377a9ea 100644 --- a/libpurple/protocols/qq/file_trans.h +++ b/libpurple/protocols/qq/file_trans.h @@ -26,6 +26,7 @@ #define _QQ_QQ_FILE_TRANS_H_ #include "server.h" +#include "qq.h" enum { QQ_FILE_CMD_SENDER_SAY_HELLO = 0x31, @@ -59,7 +60,7 @@ enum { #define QQ_FILE_AGENT_PACKET_TAG 0x04 /* #define QQ_PACKET_TAIL 0x03 */ /* all QQ text packets end with it */ -void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, guint32 to_uid, guint8 hellobyte); +void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, UID to_uid, guint8 hellobyte); void qq_process_recv_file(PurpleConnection *gc, guint8 *data, gint len); /* void qq_send_file_data_packet(PurpleConnection *gc, guint16 packet_type, guint8 sub_type, guint32 fragment_index, guint16 seq, guint8 *data, gint len); */ void qq_xfer_close_file(PurpleXfer *xfer); diff --git a/libpurple/protocols/qq/group.h b/libpurple/protocols/qq/group.h index 0477ca205a..75dbe2161b 100644 --- a/libpurple/protocols/qq/group.h +++ b/libpurple/protocols/qq/group.h @@ -47,7 +47,7 @@ struct _qq_room_data { guint32 id; guint32 ext_id; guint8 type8; /* permanent or temporory */ - guint32 creator_uid; + UID creator_uid; guint32 category; guint8 auth_type; gchar *title_utf8; diff --git a/libpurple/protocols/qq/group_im.c b/libpurple/protocols/qq/group_im.c index 2816e124c7..bd00ddd851 100644 --- a/libpurple/protocols/qq/group_im.c +++ b/libpurple/protocols/qq/group_im.c @@ -161,7 +161,7 @@ void qq_room_conv_set_onlines(PurpleConnection *gc, qq_room_data *rmd) } void qq_room_got_chat_in(PurpleConnection *gc, - guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time) + guint32 room_id, UID uid_from, const gchar *msg, time_t in_time) { PurpleConversation *conv; qq_data *qd; @@ -207,10 +207,11 @@ void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnectio { gchar *msg_smiley, *msg_fmt, *msg_utf8; gint bytes, tail_len; + qq_data *qd; struct { guint32 ext_id; guint8 type8; - guint32 member_uid; + UID member_uid; guint16 unknown; guint16 msg_seq; time_t send_time; @@ -222,11 +223,15 @@ void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnectio guint16 content_type; guint8 frag_count, frag_index; guint16 msg_id; + guint32 use_default_font; qq_im_format *fmt = NULL; + qd = (qq_data *) gc->proto_data; /* at least include im_text.msg_len */ g_return_if_fail(data != NULL && data_len > 23); + use_default_font = (qd->custom) & QQ_CUSTOM_USE_DEFAULT_FONT; + /* qq_show_packet("ROOM_IM", data, data_len); */ memset(&im_text, 0, sizeof(im_text)); bytes = 0; @@ -279,8 +284,14 @@ void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnectio /* group im_group has no flag to indicate whether it has font_attr or not */ msg_smiley = qq_emoticon_to_purple(im_text.msg); if (fmt != NULL) { + purple_debug_info("QQ", "going to use_default_font\n"); + if (QQ_CUSTOM_USE_DEFAULT_FONT == use_default_font) { + qq_im_fmt_reset_font(fmt); + purple_debug_info("QQ", "use_default_font set\n"); + } msg_fmt = qq_im_fmt_to_purple(fmt, msg_smiley); msg_utf8 = qq_to_utf8(msg_fmt, QQ_CHARSET_DEFAULT); + purple_debug_info("QQ", "passed!\n"); g_free(msg_fmt); qq_im_fmt_free(fmt); } else { diff --git a/libpurple/protocols/qq/group_im.h b/libpurple/protocols/qq/group_im.h index 66bf950e1e..86c4b5f11d 100644 --- a/libpurple/protocols/qq/group_im.h +++ b/libpurple/protocols/qq/group_im.h @@ -30,11 +30,16 @@ #include "conversation.h" #include "group.h" +enum { + QQ_CUSTOM_USE_DEFAULT_FONT = 0x00000001, + QQ_CUSTOM_NONE = 0x00000000 +}; + PurpleConversation *qq_room_conv_open(PurpleConnection *gc, qq_room_data *rmd); void qq_room_conv_set_onlines(PurpleConnection *gc, qq_room_data *rmd); void qq_room_got_chat_in(PurpleConnection *gc, - guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time); + guint32 room_id, UID uid_from, const gchar *msg, time_t in_time); int qq_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags); void qq_process_room_send_im(PurpleConnection *gc, guint8 *data, gint len); @@ -43,3 +48,4 @@ void qq_process_room_send_im_ex(PurpleConnection *gc, guint8 *data, gint len); void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 msg_type); #endif + diff --git a/libpurple/protocols/qq/group_info.c b/libpurple/protocols/qq/group_info.c index ad0711a07f..43c27a1ecd 100644 --- a/libpurple/protocols/qq/group_info.c +++ b/libpurple/protocols/qq/group_info.c @@ -65,7 +65,7 @@ static void set_all_offline(qq_room_data *rmd) } /* send packet to get info for each group member */ -gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, guint32 update_class) +gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, UPDCLS update_class) { guint8 *raw_data; gint bytes, num; @@ -177,7 +177,8 @@ void qq_process_room_cmd_get_info(guint8 *data, gint data_len, guint32 action, P PurpleConversation *conv; guint8 organization, role; guint16 unknown, max_members; - guint32 member_uid, id, ext_id; + UID member_uid; + guint32 id, ext_id; guint32 unknown4; guint8 unknown1; gint bytes, num; @@ -286,7 +287,8 @@ void qq_process_room_cmd_get_info(guint8 *data, gint data_len, guint32 action, P void qq_process_room_cmd_get_onlines(guint8 *data, gint len, PurpleConnection *gc) { - guint32 room_id, member_uid; + guint32 room_id; + UID member_uid; guint8 unknown; gint bytes, num; qq_room_data *rmd; @@ -334,7 +336,8 @@ void qq_process_room_cmd_get_buddies(guint8 *data, gint len, PurpleConnection *g { gint bytes; gint num; - guint32 id, member_uid; + guint32 id; + UID member_uid; guint16 unknown; qq_room_data *rmd; qq_buddy_data *bd; diff --git a/libpurple/protocols/qq/group_info.h b/libpurple/protocols/qq/group_info.h index 09af1ce212..52b42817dd 100644 --- a/libpurple/protocols/qq/group_info.h +++ b/libpurple/protocols/qq/group_info.h @@ -34,7 +34,7 @@ enum { QQ_ROOM_INFO_DISPLAY }; -gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, guint32 update_class); +gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, UPDCLS update_class); void qq_process_room_cmd_get_info(guint8 *data, gint len, guint32 action, PurpleConnection *gc); void qq_process_room_cmd_get_onlines(guint8 *data, gint len, PurpleConnection *gc); diff --git a/libpurple/protocols/qq/group_internal.c b/libpurple/protocols/qq/group_internal.c index 5bc2c0f08b..62f3dba02f 100644 --- a/libpurple/protocols/qq/group_internal.c +++ b/libpurple/protocols/qq/group_internal.c @@ -207,7 +207,7 @@ void qq_room_remove(PurpleConnection *gc, guint32 id) } /* find a qq_buddy_data by uid, called by im.c */ -qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, guint32 uid) +qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, UID uid) { GList *list; qq_buddy_data *bd; @@ -226,7 +226,7 @@ qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, guint32 uid) } /* remove a qq_buddy_data by uid, called by qq_group_opt.c */ -void qq_room_buddy_remove(qq_room_data *rmd, guint32 uid) +void qq_room_buddy_remove(qq_room_data *rmd, UID uid) { GList *list; qq_buddy_data *bd; @@ -244,7 +244,7 @@ void qq_room_buddy_remove(qq_room_data *rmd, guint32 uid) } } -qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, guint32 member_uid) +qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, UID member_uid) { qq_buddy_data *member, *bd; PurpleBuddy *buddy; diff --git a/libpurple/protocols/qq/group_internal.h b/libpurple/protocols/qq/group_internal.h index dc8bcc5493..f779de2a3c 100644 --- a/libpurple/protocols/qq/group_internal.h +++ b/libpurple/protocols/qq/group_internal.h @@ -36,9 +36,9 @@ PurpleChat *qq_room_find_or_new(PurpleConnection *gc, guint32 id, guint32 ext_id void qq_room_remove(PurpleConnection *gc, guint32 id); void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd); -qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, guint32 uid); -void qq_room_buddy_remove(qq_room_data *rmd, guint32 uid); -qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, guint32 member_uid); +qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, UID uid); +void qq_room_buddy_remove(qq_room_data *rmd, UID uid); +qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, UID member_uid); void qq_room_data_initial(PurpleConnection *gc); void qq_room_data_free_all(PurpleConnection *gc); diff --git a/libpurple/protocols/qq/group_join.c b/libpurple/protocols/qq/group_join.c index 6d27a2ff05..bb91be9af2 100644 --- a/libpurple/protocols/qq/group_join.c +++ b/libpurple/protocols/qq/group_join.c @@ -155,7 +155,7 @@ static void do_room_join_request(PurpleConnection *gc, qq_room_data *rmd) } void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, - guint8 opt, guint32 uid, const gchar *reason_utf8) + guint8 opt, UID uid, const gchar *reason_utf8) { guint8 raw_data[MAX_PACKET_SIZE - 16]; gint bytes; diff --git a/libpurple/protocols/qq/group_join.h b/libpurple/protocols/qq/group_join.h index 1b4cbb35b8..b86a3cbb1f 100644 --- a/libpurple/protocols/qq/group_join.h +++ b/libpurple/protocols/qq/group_join.h @@ -49,7 +49,7 @@ enum { void qq_request_room_search(PurpleConnection *gc, guint32 ext_id, int action); void qq_process_room_search(PurpleConnection *gc, guint8 *data, gint len, guint32 ship32); -void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, guint8 opt, guint32 uid, const gchar *reason_utf8); +void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, guint8 opt, UID uid, const gchar *reason_utf8); void qq_group_join(PurpleConnection *gc, GHashTable *data); void qq_request_room_join(PurpleConnection *gc, qq_room_data *rmd); void qq_room_quit(PurpleConnection *gc, guint32 room_id); @@ -57,3 +57,4 @@ void qq_process_group_cmd_exit_group(guint8 *data, gint len, PurpleConnection *g void qq_process_group_cmd_join_group_auth(guint8 *data, gint len, PurpleConnection *gc); void qq_process_group_cmd_join_group(guint8 *data, gint len, PurpleConnection *gc); #endif + diff --git a/libpurple/protocols/qq/im.c b/libpurple/protocols/qq/im.c index 32684174ae..2caffb8a9d 100644 --- a/libpurple/protocols/qq/im.c +++ b/libpurple/protocols/qq/im.c @@ -71,8 +71,8 @@ typedef struct _qq_im_header qq_im_header; struct _qq_im_header { /* this is the common part of normal_text */ guint16 version_from; - guint32 uid_from; - guint32 uid_to; + UID uid_from; + UID uid_to; guint8 session_md5[QQ_KEY_LENGTH]; guint16 im_type; }; @@ -528,7 +528,8 @@ void qq_im_fmt_free(qq_im_format *fmt) qq_im_format *qq_im_fmt_new(void) { qq_im_format *fmt; - const gchar simsun[] = { 0xcb, 0xce, 0xcc, 0xe5, 0}; /* simsun in Chinese */ + /* '0xcb, 0xce, 0xcc, 0xe5' means Chinese '宋体' in utf8 */ + const gchar simsun[] = { 0xcb, 0xce, 0xcc, 0xe5, 0}; fmt = g_new0(qq_im_format, 1); memset(fmt, 0, sizeof(qq_im_format)); @@ -541,6 +542,17 @@ qq_im_format *qq_im_fmt_new(void) return fmt; } +void qq_im_fmt_reset_font(qq_im_format *fmt) +{ + const gchar simsun[] = {0xcb, 0xce, 0xcc, 0xe5, 0x00}; + g_return_if_fail(NULL != fmt); + + if (NULL != fmt->font) { + g_free(fmt->font); + fmt->font = g_strdup(simsun); + } +} + qq_im_format *qq_im_fmt_new_by_purple(const gchar *msg) { qq_im_format *fmt; @@ -1036,7 +1048,7 @@ void qq_process_extend_im(PurpleConnection *gc, guint8 *data, gint len) } /* send an IM to uid_to */ -static void request_send_im(PurpleConnection *gc, guint32 uid_to, gint type, +static void request_send_im(PurpleConnection *gc, UID uid_to, gint type, qq_im_format *fmt, gchar *msg, guint8 id, guint8 frag_count, guint8 frag_index) { qq_data *qd; @@ -1241,7 +1253,7 @@ static GSList* qq_grab_emoticons(const char *msg, const char*username) gint qq_send_im(PurpleConnection *gc, const gchar *who, const gchar *what, PurpleMessageFlags flags) { qq_data *qd; - guint32 uid_to; + UID uid_to; gint type; qq_im_format *fmt; gchar *msg_stripped, *tmp; diff --git a/libpurple/protocols/qq/im.h b/libpurple/protocols/qq/im.h index 822996c3eb..a64d611816 100644 --- a/libpurple/protocols/qq/im.h +++ b/libpurple/protocols/qq/im.h @@ -49,6 +49,10 @@ enum { }; typedef struct { + /* attr: + bit0-4 for font size, bit5 for bold, + bit6 for italic, bit7 for underline + */ guint8 attr; guint8 rgb[3]; guint16 charset; @@ -61,6 +65,7 @@ gint qq_get_im_tail(qq_im_format *fmt, guint8 *data, gint data_len); qq_im_format *qq_im_fmt_new(void); void qq_im_fmt_free(qq_im_format *fmt); +void qq_im_fmt_reset_font(qq_im_format *fmt); qq_im_format *qq_im_fmt_new_by_purple(const gchar *msg); gchar *qq_im_fmt_to_purple(qq_im_format *fmt, gchar *text); gboolean qq_im_smiley_none(const gchar *msg); diff --git a/libpurple/protocols/qq/qq.c b/libpurple/protocols/qq/qq.c index 1f7af289e7..913aed562f 100644 --- a/libpurple/protocols/qq/qq.c +++ b/libpurple/protocols/qq/qq.c @@ -173,6 +173,13 @@ static void qq_login(PurpleAccount *account) qd->is_show_news = purple_account_get_bool(account, "show_news", TRUE); qd->is_show_chat = purple_account_get_bool(account, "show_chat", TRUE); + if (purple_account_get_bool(account, "default_font", FALSE)) { + qd->custom = QQ_CUSTOM_USE_DEFAULT_FONT; + } + else { + qd->custom = QQ_CUSTOM_NONE; + } + qd->resend_times = purple_prefs_get_int("/plugins/prpl/qq/resend_times"); if (qd->resend_times <= 1) qd->itv_config.resend = 4; @@ -443,7 +450,7 @@ static void qq_change_status(PurpleAccount *account, PurpleStatus *status) /* send packet to get who's detailed information */ static void qq_show_buddy_info(PurpleConnection *gc, const gchar *who) { - guint32 uid; + UID uid; qq_data *qd; qd = gc->proto_data; @@ -823,7 +830,7 @@ static void qq_modify_buddy_memo_from_menu_cb(PurpleBlistNode *node, gpointer da PurpleBuddy *buddy; qq_buddy_data *bd; PurpleConnection *gc; - guint32 bd_uid; + UID bd_uid; g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); @@ -927,7 +934,7 @@ static void qq_get_chat_buddy_info(PurpleConnection *gc, gint channel, const gch { qq_data *qd; gchar *uid_str; - guint32 uid; + UID uid; purple_debug_info("QQ", "Get chat buddy info of %s\n", who); g_return_if_fail(who != NULL); @@ -1142,6 +1149,9 @@ static void init_plugin(PurplePlugin *plugin) option = purple_account_option_bool_new(_("Show chat room when msg comes"), "show_chat", TRUE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = purple_account_option_bool_new(_("Use default font"), "default_font", FALSE); + prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = purple_account_option_int_new(_("Keep alive interval (seconds)"), "keep_alive_interval", 60); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); diff --git a/libpurple/protocols/qq/qq.h b/libpurple/protocols/qq/qq.h index ad2206655e..ac2a6ea7e3 100644 --- a/libpurple/protocols/qq/qq.h +++ b/libpurple/protocols/qq/qq.h @@ -39,6 +39,10 @@ #define qq_strlen(s) ((s)!=NULL?strlen(s):0) #define qq_strcmp(s1,s2) ((s1)!=NULL && (s2)!=NULL?strcmp(s1,s2):0) +/* business logic layer */ +typedef guint32 UPDCLS; +typedef guint32 UID; + typedef struct _qq_data qq_data; typedef struct _qq_buddy_data qq_buddy_data; typedef struct _qq_interval qq_interval; @@ -84,7 +88,7 @@ struct _qq_net_stat { }; struct _qq_buddy_data { - guint32 uid; + UID uid; guint16 face; /* index: 0 - 299 */ guint8 age; guint8 gender; @@ -153,7 +157,7 @@ struct _qq_data { GList *transactions; /* check ack packet and resend */ - guint32 uid; /* QQ number */ + UID uid; /* QQ number */ qq_login_data ld; qq_captcha_data captcha; @@ -187,6 +191,7 @@ struct _qq_data { gboolean is_show_notice; gboolean is_show_news; gboolean is_show_chat; + guint32 custom; guint16 send_im_id; /* send IM sequence number */ }; diff --git a/libpurple/protocols/qq/qq_base.c b/libpurple/protocols/qq/qq_base.c index 281d1b451e..d701f44d70 100644 --- a/libpurple/protocols/qq/qq_base.c +++ b/libpurple/protocols/qq/qq_base.c @@ -42,7 +42,7 @@ #include "utils.h" /* generate a md5 key using uid and session_key */ -static void get_session_md5(guint8 *session_md5, guint32 uid, guint8 *session_key) +static void get_session_md5(guint8 *session_md5, UID uid, guint8 *session_key) { guint8 src[QQ_KEY_LENGTH + QQ_KEY_LENGTH]; gint bytes = 0; @@ -60,7 +60,7 @@ static gint8 process_login_ok(PurpleConnection *gc, guint8 *data, gint len) gint bytes; guint8 ret; - guint32 uid; + UID uid; struct in_addr ip; guint16 port; struct tm *tm_local; @@ -151,7 +151,7 @@ static gint8 process_login_redirect(PurpleConnection *gc, guint8 *data, gint len gint bytes; struct { guint8 result; - guint32 uid; + UID uid; struct in_addr new_server_ip; guint16 new_server_port; } packet; @@ -1236,7 +1236,7 @@ guint8 qq_process_login_2007( PurpleConnection *gc, guint8 *data, gint data_len) qq_data *qd; gint bytes; guint8 ret; - guint32 uid; + UID uid; gchar *error; gchar *msg; gchar *msg_utf8; @@ -1427,7 +1427,7 @@ guint8 qq_process_login_2008( PurpleConnection *gc, guint8 *data, gint data_len) qq_data *qd; gint bytes; guint8 ret; - guint32 uid; + UID uid; gchar *error; gchar *msg; gchar *msg_utf8; diff --git a/libpurple/protocols/qq/qq_base.h b/libpurple/protocols/qq/qq_base.h index d6b2f2d3dd..fa8707fccf 100644 --- a/libpurple/protocols/qq/qq_base.h +++ b/libpurple/protocols/qq/qq_base.h @@ -28,12 +28,12 @@ #include #include "connection.h" -#define QQ_LOGIN_REPLY_OK 0x00 +#define QQ_LOGIN_REPLY_OK 0x00 #define QQ_LOGIN_REPLY_REDIRECT 0x01 /* defined by myself */ #define QQ_LOGIN_REPLY_CAPTCHA_DLG 0xfd -#define QQ_LOGIN_REPLY_NEXT_TOKEN_EX 0xfe -#define QQ_LOGIN_REPLY_ERR 0xff +#define QQ_LOGIN_REPLY_NEXT_TOKEN_EX 0xfe +#define QQ_LOGIN_REPLY_ERR 0xff #define QQ_LOGIN_MODE_NORMAL 0x0a #define QQ_LOGIN_MODE_AWAY 0x1e @@ -76,3 +76,4 @@ guint8 qq_process_login_2007( PurpleConnection *gc, guint8 *data, gint data_len) void qq_request_login_2008(PurpleConnection *gc); guint8 qq_process_login_2008( PurpleConnection *gc, guint8 *data, gint data_len); #endif + diff --git a/libpurple/protocols/qq/qq_define.c b/libpurple/protocols/qq/qq_define.c index a961a6669a..de1fbfd01d 100644 --- a/libpurple/protocols/qq/qq_define.c +++ b/libpurple/protocols/qq/qq_define.c @@ -118,6 +118,8 @@ const gchar *qq_get_ver_desc(gint source) return "QQMac 1.0 preview1 build 670"; case QQ_CLIENT_1441: return "QQ2009 preview2"; + case QQ_CLIENT_1663: + return "QQ2009"; case QQ_SERVER_0100: return "QQ Server 0100"; default: diff --git a/libpurple/protocols/qq/qq_define.h b/libpurple/protocols/qq/qq_define.h index 8b598d1baf..9258851ca8 100644 --- a/libpurple/protocols/qq/qq_define.h +++ b/libpurple/protocols/qq/qq_define.h @@ -35,7 +35,8 @@ #define QQ_CLIENT_0D55 0x0d55 /* QQ2005 used by openq before */ #define QQ_CLIENT_111D 0x111D /* QQ2007 */ -#define QQ_CLIENT_115B 0x115B /* QQ2008 He Sui*/ +#define QQ_CLIENT_115B 0x115B /* QQ2008 He Sui */ +#define QQ_CLIENT_1663 0x1663 /* QQ2009 Release */ const gchar *qq_get_ver_desc(gint source); diff --git a/libpurple/protocols/qq/qq_network.c b/libpurple/protocols/qq/qq_network.c index 09b4868766..8f16e8c074 100644 --- a/libpurple/protocols/qq/qq_network.c +++ b/libpurple/protocols/qq/qq_network.c @@ -268,7 +268,7 @@ static gboolean packet_process(PurpleConnection *gc, guint8 *buf, gint buf_len) guint16 seq; /* May be ack_seq or send_seq, depends on cmd */ guint8 room_cmd; guint32 room_id; - guint32 update_class; + UPDCLS update_class; guint32 ship32; int ret; @@ -1131,7 +1131,7 @@ gint qq_send_cmd_encrypted(PurpleConnection *gc, guint16 cmd, guint16 seq, /* Encrypt data with session_key, and send packet out */ static gint send_cmd_detail(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *data, gint data_len, gboolean is_save2trans, - guint32 update_class, guint32 ship32) + UPDCLS update_class, guint32 ship32) { qq_data *qd; guint8 *encrypted; @@ -1161,7 +1161,7 @@ static gint send_cmd_detail(PurpleConnection *gc, guint16 cmd, guint16 seq, } gint qq_send_cmd_mess(PurpleConnection *gc, guint16 cmd, guint8 *data, gint data_len, - guint32 update_class, guint32 ship32) + UPDCLS update_class, guint32 ship32) { qq_data *qd; guint16 seq; @@ -1235,7 +1235,7 @@ gint qq_send_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 } static gint send_room_cmd(PurpleConnection *gc, guint8 room_cmd, guint32 room_id, - guint8 *data, gint data_len, guint32 update_class, guint32 ship32) + guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32) { qq_data *qd; guint8 *buf; @@ -1289,7 +1289,7 @@ static gint send_room_cmd(PurpleConnection *gc, guint8 room_cmd, guint32 room_id } gint qq_send_room_cmd_mess(PurpleConnection *gc, guint8 room_cmd, guint32 room_id, - guint8 *data, gint data_len, guint32 update_class, guint32 ship32) + guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32) { g_return_val_if_fail(room_cmd > 0, -1); return send_room_cmd(gc, room_cmd, room_id, data, data_len, update_class, ship32); diff --git a/libpurple/protocols/qq/qq_network.h b/libpurple/protocols/qq/qq_network.h index 7d81c857e6..733536c848 100644 --- a/libpurple/protocols/qq/qq_network.h +++ b/libpurple/protocols/qq/qq_network.h @@ -39,7 +39,7 @@ gint qq_send_cmd_encrypted(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *encrypted_data, gint encrypted_len, gboolean is_save2trans); gint qq_send_cmd(PurpleConnection *gc, guint16 cmd, guint8 *data, gint datalen); gint qq_send_cmd_mess(PurpleConnection *gc, guint16 cmd, guint8 *data, gint data_len, - guint32 update_class, guint32 ship32); + UPDCLS update_class, guint32 ship32); gint qq_send_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *data, gint data_len); @@ -47,7 +47,7 @@ gint qq_send_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq, gint qq_send_room_cmd(PurpleConnection *gc, guint8 room_cmd, guint32 room_id, guint8 *data, gint data_len); gint qq_send_room_cmd_mess(PurpleConnection *gc, guint8 room_cmd, guint32 room_id, - guint8 *data, gint data_len, guint32 update_class, guint32 ship32); + guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32); gint qq_send_room_cmd_only(PurpleConnection *gc, guint8 room_cmd, guint32 room_id); gint qq_send_room_cmd_noid(PurpleConnection *gc, guint8 room_cmd, guint8 *data, gint data_len); diff --git a/libpurple/protocols/qq/qq_process.c b/libpurple/protocols/qq/qq_process.c index 74d3b395b3..72722c1321 100644 --- a/libpurple/protocols/qq/qq_process.c +++ b/libpurple/protocols/qq/qq_process.c @@ -254,8 +254,8 @@ static void process_private_msg(guint8 *data, gint data_len, guint16 seq, Purple gint bytes; struct { - guint32 uid_from; - guint32 uid_to; + UID uid_from; + UID uid_to; guint32 seq; struct in_addr ip_from; guint16 port_from; @@ -725,7 +725,7 @@ void qq_update_online(PurpleConnection *gc, guint16 cmd) void qq_proc_room_cmds(PurpleConnection *gc, guint16 seq, guint8 room_cmd, guint32 room_id, guint8 *rcved, gint rcved_len, - guint32 update_class, guint32 ship32) + UPDCLS update_class, guint32 ship32) { qq_data *qd; guint8 *data; @@ -861,7 +861,7 @@ void qq_proc_room_cmds(PurpleConnection *gc, guint16 seq, } guint8 qq_proc_login_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq, - guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32) + guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32) { qq_data *qd; guint8 *data = NULL; @@ -1013,7 +1013,7 @@ guint8 qq_proc_login_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq, } void qq_proc_client_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq, - guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32) + guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32) { qq_data *qd; diff --git a/libpurple/protocols/qq/qq_process.h b/libpurple/protocols/qq/qq_process.h index 95fdb699ca..733684f80b 100644 --- a/libpurple/protocols/qq/qq_process.h +++ b/libpurple/protocols/qq/qq_process.h @@ -39,12 +39,12 @@ enum { }; guint8 qq_proc_login_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq, - guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32); + guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32); void qq_proc_client_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq, - guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32); + guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32); void qq_proc_room_cmds(PurpleConnection *gc, guint16 seq, guint8 room_cmd, guint32 room_id, guint8 *rcved, gint rcved_len, - guint32 update_class, guint32 ship32); + UPDCLS update_class, guint32 ship32); void qq_proc_server_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *rcved, gint rcved_len); diff --git a/libpurple/protocols/qq/qq_trans.c b/libpurple/protocols/qq/qq_trans.c index 19361955d1..4bb505db30 100644 --- a/libpurple/protocols/qq/qq_trans.c +++ b/libpurple/protocols/qq/qq_trans.c @@ -58,7 +58,7 @@ struct _qq_transaction { gint rcved_times; gint scan_times; - guint32 update_class; + UPDCLS update_class; guint32 ship32; }; @@ -107,7 +107,7 @@ guint32 qq_trans_get_ship(qq_transaction *trans) } static qq_transaction *trans_create(PurpleConnection *gc, gint fd, - guint16 cmd, guint16 seq, guint8 *data, gint data_len, guint32 update_class, guint32 ship32) + guint16 cmd, guint16 seq, guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32) { qq_transaction *trans; @@ -178,7 +178,7 @@ static qq_transaction *trans_find(PurpleConnection *gc, guint16 cmd, guint16 seq } void qq_trans_add_client_cmd(PurpleConnection *gc, - guint16 cmd, guint16 seq, guint8 *data, gint data_len, guint32 update_class, guint32 ship32) + guint16 cmd, guint16 seq, guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32) { qq_data *qd = (qq_data *)gc->proto_data; qq_transaction *trans = trans_create(gc, qd->fd, cmd, seq, data, data_len, update_class, ship32); @@ -218,7 +218,7 @@ qq_transaction *qq_trans_find_rcved(PurpleConnection *gc, guint16 cmd, guint16 s void qq_trans_add_room_cmd(PurpleConnection *gc, guint16 seq, guint8 room_cmd, guint32 room_id, guint8 *data, gint data_len, - guint32 update_class, guint32 ship32) + UPDCLS update_class, guint32 ship32) { qq_data *qd = (qq_data *)gc->proto_data; qq_transaction *trans = trans_create(gc, qd->fd, QQ_CMD_ROOM, seq, data, data_len, diff --git a/libpurple/protocols/qq/qq_trans.h b/libpurple/protocols/qq/qq_trans.h index 17ac4fe26f..9115a135d0 100644 --- a/libpurple/protocols/qq/qq_trans.h +++ b/libpurple/protocols/qq/qq_trans.h @@ -39,10 +39,10 @@ guint32 qq_trans_get_class(qq_transaction *trans); guint32 qq_trans_get_ship(qq_transaction *trans); void qq_trans_add_client_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq, - guint8 *data, gint data_len, guint32 update_class, guint32 ship32); + guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32); void qq_trans_add_room_cmd(PurpleConnection *gc, guint16 seq, guint8 room_cmd, guint32 room_id, - guint8 *data, gint data_len, guint32 update_class, guint32 ship32); + guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32); void qq_trans_add_server_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *rcved, gint rcved_len); void qq_trans_add_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq, diff --git a/libpurple/protocols/qq/send_file.c b/libpurple/protocols/qq/send_file.c index 2e48e09582..64bf7e9bb0 100644 --- a/libpurple/protocols/qq/send_file.c +++ b/libpurple/protocols/qq/send_file.c @@ -278,7 +278,7 @@ gint qq_fill_conn_info(guint8 *raw_data, ft_info *info) /* fill in the common information of file transfer */ static gint _qq_create_packet_file_header -(guint8 *raw_data, guint32 to_uid, guint16 message_type, qq_data *qd, gboolean seq_ack) +(guint8 *raw_data, UID to_uid, guint16 message_type, qq_data *qd, gboolean seq_ack) { gint bytes; time_t now; @@ -430,7 +430,7 @@ static void _qq_xfer_init_socket(PurpleXfer *xfer) } /* create the QQ_FILE_TRANS_REQ packet with file infomations */ -static void _qq_send_packet_file_request (PurpleConnection *gc, guint32 to_uid, gchar *filename, gint filesize) +static void _qq_send_packet_file_request (PurpleConnection *gc, UID to_uid, gchar *filename, gint filesize) { qq_data *qd; guint8 *raw_data; @@ -482,7 +482,7 @@ static void _qq_send_packet_file_request (PurpleConnection *gc, guint32 to_uid, } /* tell the buddy we want to accept the file */ -static void _qq_send_packet_file_accept(PurpleConnection *gc, guint32 to_uid) +static void _qq_send_packet_file_accept(PurpleConnection *gc, UID to_uid) { qq_data *qd; guint8 *raw_data; @@ -520,7 +520,7 @@ static void _qq_send_packet_file_accept(PurpleConnection *gc, guint32 to_uid) packet_len, bytes); } -static void _qq_send_packet_file_notifyip(PurpleConnection *gc, guint32 to_uid) +static void _qq_send_packet_file_notifyip(PurpleConnection *gc, UID to_uid) { PurpleXfer *xfer; ft_info *info; @@ -552,7 +552,7 @@ static void _qq_send_packet_file_notifyip(PurpleConnection *gc, guint32 to_uid) } /* tell the buddy we don't want the file */ -static void _qq_send_packet_file_reject (PurpleConnection *gc, guint32 to_uid) +static void _qq_send_packet_file_reject (PurpleConnection *gc, UID to_uid) { qq_data *qd; guint8 *raw_data; @@ -576,7 +576,7 @@ static void _qq_send_packet_file_reject (PurpleConnection *gc, guint32 to_uid) } /* tell the buddy to cancel transfer */ -static void _qq_send_packet_file_cancel (PurpleConnection *gc, guint32 to_uid) +static void _qq_send_packet_file_cancel (PurpleConnection *gc, UID to_uid) { qq_data *qd; guint8 *raw_data; @@ -611,7 +611,7 @@ _qq_xfer_init (PurpleXfer * xfer) { PurpleConnection *gc; PurpleAccount *account; - guint32 to_uid; + UID to_uid; const gchar *filename; gchar *base_filename; @@ -678,7 +678,7 @@ static void _qq_xfer_recv_init(PurpleXfer *xfer) /* process reject im for file transfer request */ void qq_process_recv_file_reject (guint8 *data, gint data_len, - guint32 sender_uid, PurpleConnection *gc) + UID sender_uid, PurpleConnection *gc) { gchar *msg, *filename; qq_data *qd; @@ -708,7 +708,7 @@ void qq_process_recv_file_reject (guint8 *data, gint data_len, /* process cancel im for file transfer request */ void qq_process_recv_file_cancel (guint8 *data, gint data_len, - guint32 sender_uid, PurpleConnection *gc) + UID sender_uid, PurpleConnection *gc) { gchar *msg, *filename; qq_data *qd; @@ -738,7 +738,7 @@ void qq_process_recv_file_cancel (guint8 *data, gint data_len, } /* process accept im for file transfer request */ -void qq_process_recv_file_accept(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc) +void qq_process_recv_file_accept(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc) { qq_data *qd; gint bytes; @@ -764,7 +764,7 @@ void qq_process_recv_file_accept(guint8 *data, gint data_len, guint32 sender_uid } /* process request from buddy's im for file transfer request */ -void qq_process_recv_file_request(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection * gc) +void qq_process_recv_file_request(guint8 *data, gint data_len, UID sender_uid, PurpleConnection * gc) { qq_data *qd; PurpleXfer *xfer; @@ -874,7 +874,7 @@ static void _qq_xfer_send_notify_ip_ack(gpointer data, gint source, PurpleInputC } void qq_process_recv_file_notify(guint8 *data, gint data_len, - guint32 sender_uid, PurpleConnection *gc) + UID sender_uid, PurpleConnection *gc) { gint bytes; qq_data *qd; diff --git a/libpurple/protocols/qq/send_file.h b/libpurple/protocols/qq/send_file.h index 7e4e0dd69a..e9fc32c625 100644 --- a/libpurple/protocols/qq/send_file.h +++ b/libpurple/protocols/qq/send_file.h @@ -29,7 +29,7 @@ #include "qq.h" typedef struct _ft_info { - guint32 to_uid; + UID to_uid; guint16 send_seq; guint8 file_session_key[QQ_KEY_LENGTH]; guint8 conn_method; @@ -67,11 +67,11 @@ typedef struct _ft_info { gboolean use_major; } ft_info; -void qq_process_recv_file_accept(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc); -void qq_process_recv_file_reject(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc); -void qq_process_recv_file_cancel(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc); -void qq_process_recv_file_request(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc); -void qq_process_recv_file_notify(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc); +void qq_process_recv_file_accept(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc); +void qq_process_recv_file_reject(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc); +void qq_process_recv_file_cancel(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc); +void qq_process_recv_file_request(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc); +void qq_process_recv_file_notify(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc); gboolean qq_can_receive_file(PurpleConnection *gc, const char *who); void qq_send_file(PurpleConnection *gc, const char *who, const char *file); gint qq_get_conn_info(ft_info *info, guint8 *data); diff --git a/libpurple/protocols/qq/utils.c b/libpurple/protocols/qq/utils.c index e7a7e09f83..b4b72a5856 100644 --- a/libpurple/protocols/qq/utils.c +++ b/libpurple/protocols/qq/utils.c @@ -131,9 +131,9 @@ gchar **split_data(guint8 *data, gint len, const gchar *delimit, gint expected_f } /* convert Purple name to original QQ UID */ -guint32 purple_name_to_uid(const gchar *const name) +UID purple_name_to_uid(const gchar *const name) { - guint32 ret; + UID ret; g_return_val_if_fail(name != NULL, 0); ret = strtoul(name, NULL, 10); @@ -168,7 +168,7 @@ guint8 *str_ip_gen(gchar *str) { /* convert a QQ UID to a unique name of Purple * the return needs to be freed */ -gchar *uid_to_purple_name(guint32 uid) +gchar *uid_to_purple_name(UID uid) { return g_strdup_printf("%u", uid); } diff --git a/libpurple/protocols/qq/utils.h b/libpurple/protocols/qq/utils.h index 46bef9d8dc..34d84586c1 100644 --- a/libpurple/protocols/qq/utils.h +++ b/libpurple/protocols/qq/utils.h @@ -27,6 +27,7 @@ #include #include +#include "qq.h" #include "debug.h" @@ -40,8 +41,8 @@ gchar **split_data(guint8 *data, gint len, const gchar *delimit, gint expected_f gchar *gen_ip_str(guint8 *ip); guint8 *str_ip_gen(gchar *str); -guint32 purple_name_to_uid(const gchar *name); -gchar *uid_to_purple_name(guint32 uid); +UID purple_name_to_uid(const gchar *name); +gchar *uid_to_purple_name(UID uid); gchar *try_dump_as_gbk(const guint8 *const data, gint len); -- cgit v1.2.1