Wed, 30 Jul 2008 03:58:21 +0000
Cleanup unnecessary casts and etc.
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
1 | /** |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14672
diff
changeset
|
2 | * @file packet_parse.c |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
3 | * |
| 15884 | 4 | * purple |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
5 | * |
| 15884 | 6 | * Purple is the legal property of its developers, whose names are too numerous |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14672
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14672
diff
changeset
|
8 | * source distribution. |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
9 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or modify |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
11 | * it under the terms of the GNU General Public License as published by |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
12 | * the Free Software Foundation; either version 2 of the License, or |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
13 | * (at your option) any later version. |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
14 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
18 | * GNU General Public License for more details. |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
19 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18213
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
23 | */ |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
24 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
25 | #include <string.h> |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
26 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
27 | #include "packet_parse.h" |
| 23190 | 28 | #include "debug.h" |
| 29 | ||
| 30 | ||
| 31 | /*------------------------------------------------PUT------------------------------------------------*/ | |
| 32 | ||
| 33 | /* note: | |
| 34 | * 1, in these functions, 'b' stands for byte, 'w' stands for word, 'dw' stands for double word. | |
| 35 | * 2, we use '*cursor' and 'buf' as two addresses to calculate the length. | |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
36 | * 3, change '0' to '1', if want to get more info about the packet parsing. */ |
| 23190 | 37 | |
| 38 | #if 0 | |
| 39 | #define PARSER_DEBUG | |
| 40 | #endif | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
41 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
42 | /* read one byte from buf, |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
43 | * return the number of bytes read if succeeds, otherwise return -1 */ |
| 23190 | 44 | gint qq_get8(guint8 *b, guint8 *buf) |
| 45 | { | |
| 46 | guint8 b_dest; | |
| 47 | memcpy(&b_dest, buf, sizeof(b_dest)); | |
| 48 | *b = b_dest; | |
| 23192 | 49 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
50 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get8] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
51 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get8] b_dest 0x%2x, *b 0x%02x\n", b_dest, *b); |
| 23192 | 52 | #endif |
| 23190 | 53 | return sizeof(b_dest); |
| 54 | } | |
| 55 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
56 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
57 | /* read two bytes as "guint16" from buf, |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
58 | * return the number of bytes read if succeeds, otherwise return -1 */ |
| 23190 | 59 | gint qq_get16(guint16 *w, guint8 *buf) |
| 60 | { | |
| 61 | guint16 w_dest; | |
| 62 | memcpy(&w_dest, buf, sizeof(w_dest)); | |
| 63 | *w = g_ntohs(w_dest); | |
| 23192 | 64 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
65 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get16] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
66 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get16] w_dest 0x%04x, *w 0x%04x\n", w_dest, *w); |
| 23192 | 67 | #endif |
| 23190 | 68 | return sizeof(w_dest); |
| 69 | } | |
| 70 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
71 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
72 | /* read four bytes as "guint32" from buf, |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
73 | * return the number of bytes read if succeeds, otherwise return -1 */ |
| 23190 | 74 | gint qq_get32(guint32 *dw, guint8 *buf) |
| 75 | { | |
| 76 | guint32 dw_dest; | |
| 77 | memcpy(&dw_dest, buf, sizeof(dw_dest)); | |
| 78 | *dw = g_ntohl(dw_dest); | |
| 23192 | 79 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
80 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get32] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
81 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][get32] dw_dest 0x%08x, *dw 0x%08x\n", dw_dest, *dw); |
| 23192 | 82 | #endif |
| 23190 | 83 | return sizeof(dw_dest); |
| 84 | } | |
| 85 | ||
| 86 | ||
| 87 | /* read datalen bytes from buf, | |
| 88 | * return the number of bytes read if succeeds, otherwise return -1 */ | |
| 89 | gint qq_getdata(guint8 *data, gint datalen, guint8 *buf) | |
| 90 | { | |
| 91 | memcpy(data, buf, datalen); | |
| 23192 | 92 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
93 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][getdata] buf %p\n", (void *)buf); |
| 23192 | 94 | #endif |
| 23190 | 95 | return datalen; |
| 96 | } | |
| 97 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
98 | |
|
18213
a41e5c44f9af
A patch from o_sukhodolsky to fix a compiler warning in the QQ code. I've
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
99 | /* read four bytes as "time_t" from buf, |
|
a41e5c44f9af
A patch from o_sukhodolsky to fix a compiler warning in the QQ code. I've
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
100 | * return the number of bytes read if succeeds, otherwise return -1 |
|
a41e5c44f9af
A patch from o_sukhodolsky to fix a compiler warning in the QQ code. I've
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
101 | * This function is a wrapper around read_packet_dw() to avoid casting. */ |
| 23190 | 102 | gint qq_getime(time_t *t, guint8 *buf) |
| 103 | { | |
| 104 | guint32 dw_dest; | |
| 105 | memcpy(&dw_dest, buf, sizeof(dw_dest)); | |
| 23192 | 106 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
107 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][getime] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
108 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][getime] dw_dest before 0x%08x\n", dw_dest); |
| 23192 | 109 | #endif |
| 23190 | 110 | dw_dest = g_ntohl(dw_dest); |
| 23192 | 111 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
112 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][getime] dw_dest after 0x%08x\n", dw_dest); |
| 23192 | 113 | #endif |
| 23190 | 114 | memcpy(t, &dw_dest, sizeof(dw_dest)); |
| 115 | return sizeof(dw_dest); | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
116 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
117 | |
| 23190 | 118 | /*------------------------------------------------PUT------------------------------------------------*/ |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
119 | /* pack one byte into buf |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
120 | * return the number of bytes packed, otherwise return -1 */ |
| 23190 | 121 | gint qq_put8(guint8 *buf, guint8 b) |
| 122 | { | |
| 123 | memcpy(buf, &b, sizeof(b)); | |
| 23192 | 124 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
125 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put8] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
126 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put8] b 0x%02x\n", b); |
| 23192 | 127 | #endif |
| 23190 | 128 | return sizeof(b); |
| 129 | } | |
| 130 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
131 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
132 | /* pack two bytes as "guint16" into buf |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
133 | * return the number of bytes packed, otherwise return -1 */ |
| 23190 | 134 | gint qq_put16(guint8 *buf, guint16 w) |
| 135 | { | |
| 136 | guint16 w_porter; | |
| 137 | w_porter = g_htons(w); | |
| 23192 | 138 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
139 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put16] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
140 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put16] w 0x%04x, w_porter 0x%04x\n", w, w_porter); |
| 23192 | 141 | #endif |
| 23190 | 142 | memcpy(buf, &w_porter, sizeof(w_porter)); |
| 143 | return sizeof(w_porter); | |
| 144 | } | |
| 145 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
146 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
147 | /* pack four bytes as "guint32" into buf |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
148 | * return the number of bytes packed, otherwise return -1 */ |
| 23190 | 149 | gint qq_put32(guint8 *buf, guint32 dw) |
| 150 | { | |
| 151 | guint32 dw_porter; | |
| 152 | dw_porter = g_htonl(dw); | |
| 23192 | 153 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
154 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put32] buf %p\n", (void *)buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
155 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][put32] dw 0x%08x, dw_porter 0x%08x\n", dw, dw_porter); |
| 23192 | 156 | #endif |
| 23190 | 157 | memcpy(buf, &dw_porter, sizeof(dw_porter)); |
| 158 | return sizeof(dw_porter); | |
| 159 | } | |
| 160 | ||
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
161 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
162 | /* pack datalen bytes into buf |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
163 | * return the number of bytes packed, otherwise return -1 */ |
| 23192 | 164 | gint qq_putdata(guint8 *buf, const guint8 *data, const int datalen) |
| 23190 | 165 | { |
| 166 | memcpy(buf, data, datalen); | |
| 23192 | 167 | #ifdef PARSER_DEBUG |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23192
diff
changeset
|
168 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "[DBG][putdata] buf %p\n", (void *)buf); |
| 23192 | 169 | #endif |
| 23190 | 170 | return datalen; |
| 171 | } |