# HG changeset patch # User SHiNE CsyFeK # Date 1234194733 0 # Node ID 8bc9f89f305e560e1899048e02802cb0f12bc5ca # Parent 7f903e67a99518b050308ad560b7204548182e15 2009.02.09 - Chengming Wang * Rewrite buddy_memo using qq_put/qq_get series functions diff -r 7f903e67a995 -r 8bc9f89f305e libpurple/protocols/qq/ChangeLog --- a/libpurple/protocols/qq/ChangeLog Mon Feb 09 15:49:14 2009 +0000 +++ b/libpurple/protocols/qq/ChangeLog Mon Feb 09 15:52:13 2009 +0000 @@ -1,3 +1,6 @@ +2009.02.09 - Chengming Wang + * Rewrite buddy_memo using qq_put/qq_get series functions + 2009.02.09 - Chengming Wang * Added buddy 'get memo', 'remove memo', 'upload memo' functions diff -r 7f903e67a995 -r 8bc9f89f305e libpurple/protocols/qq/buddy_memo.c --- a/libpurple/protocols/qq/buddy_memo.c Mon Feb 09 15:49:14 2009 +0000 +++ b/libpurple/protocols/qq/buddy_memo.c Mon Feb 09 15:52:13 2009 +0000 @@ -21,7 +21,8 @@ #include #include - +#include +#include static const gchar* buddy_memo_txt[] = { "Name", "Mobile", @@ -127,7 +128,7 @@ PurpleConnection* gc; qq_buddy_data* buddy_data; guint8* rawData; - guint8* pos; + gint bytes; int rawDataSize; int index; int memoItemSize[QQ_BUDDY_MEMO_SIZE]; @@ -143,16 +144,14 @@ rawDataSize += memoItemSize[index]+1; } rawData = g_new0( guint8,rawDataSize ); - pos = rawData; - (*pos) = QQ_BUDDY_MEMO_UPLOAD; - pos += 2; - (*(guint32*)pos) = htonl( buddy_data->uid ); - pos += 5; + bytes = 0; + bytes += qq_put8( rawData+bytes,QQ_BUDDY_MEMO_UPLOAD ); + bytes += qq_put8( rawData+bytes,0 ); + bytes += qq_put32( rawData+bytes, buddy_data->uid ); + bytes += qq_put8( rawData+bytes,0 ); for( index=0; indexproto_data; - pos++; - qq_number = ntohl( *(uint32_t*)pos ); - pos += 5;//qq号后面有一个字节不知道什么作用 + bytes += qq_get32( &qq_number, data+bytes ); + bytes ++;//qq号后面有一个字节不知道什么作用 who = uid_to_purple_name( qq_number ); buddy = purple_find_buddy( gc->account, who ); if (buddy == NULL || buddy->proto_data == NULL) { @@ -224,19 +235,18 @@ bd->memo = g_new0( gchar*,QQ_BUDDY_MEMO_SIZE ); } for( k=0; kmemo[k] != NULL ) g_free( bd->memo[k] ); - bd->memo[k] = qq_to_utf8_len( (gchar*)pos, lenth, QQ_CHARSET_DEFAULT ); - pos += lenth; + bd->memo[k] = qq_to_utf8_len( (gchar*)(data+bytes), lenth, QQ_CHARSET_DEFAULT ); + bytes += lenth; } buddy_memo_debug( bd->memo ); purple_blist_alias_buddy( buddy, (const char*)bd->memo[QQ_BUDDY_MEMO_NAME] );//改名 break; default: - purple_debug_info( "QQ","error: unknown memo cmd\n" ); + purple_debug_info( "QQ","error: unknown memo cmd \n" ); break; } @@ -305,7 +315,7 @@ } -static gchar** buddy_memo_init_data( ) +gchar** buddy_memo_init_data( ) { gchar** pmemo; int index;