Sat, 09 Dec 2006 06:34:48 +0000
[gaim-migrate @ 17924]
Added support for QQ levels
Allow 3rd party clients to specify the location of the buddy icon dir
Minor code cleanup
|
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:
14466
diff
changeset
|
2 | * @file utils.c |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
3 | * |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
4 | * gaim |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
5 | * |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
6 | * Gaim is the legal property of its developers, whose names are too numerous |
|
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
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:
14466
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 |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
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 | |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
25 | #include "cipher.h" |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
26 | #include "limits.h" |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
27 | #include "stdlib.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
28 | #include "string.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
29 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
30 | #ifdef _WIN32 |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
31 | #include "win32dep.h" |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
32 | #endif |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
33 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
34 | #include "char_conv.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
35 | #include "debug.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
36 | #include "prefs.h" |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
37 | #include "qq.h" |
|
14117
760e247123ee
[gaim-migrate @ 16668]
Richard Laager <rlaager@pidgin.im>
parents:
14116
diff
changeset
|
38 | #include "util.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
39 | #include "utils.h" |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
40 | |
|
14381
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
41 | #define QQ_NAME_FORMAT "%d" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
42 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
43 | gchar *get_name_by_index_str(gchar **array, const gchar *index_str, gint amount) |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
44 | { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
45 | gint index; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
46 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
47 | index = atoi(index_str); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
48 | if (index < 0 || index >= amount) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
49 | index = 0; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
50 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
51 | return array[index]; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
52 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
53 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
54 | gchar *get_index_str_by_name(gchar **array, const gchar *name, gint amount) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
55 | { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
56 | gint index; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
57 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
58 | for (index = 0; index <= amount; index++) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
59 | if (g_ascii_strcasecmp(array[index], name) == 0) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
60 | break; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
61 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
62 | if (index >= amount) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
63 | index = 0; /* meaning no match */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
64 | return g_strdup_printf("%d", index); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
65 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
66 | |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
67 | gint qq_string_to_dec_value(const gchar *str) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
68 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
69 | g_return_val_if_fail(str != NULL, 0); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
70 | return strtol(str, NULL, 10); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
71 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
72 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
73 | /* split the given data(len) with delimit, |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
74 | * check the number of field matches the expected_fields (<=0 means all) |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
75 | * return gchar* array (needs to be freed by g_strfreev later), or NULL */ |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
76 | gchar **split_data(guint8 *data, gint len, const gchar *delimit, gint expected_fields) |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
77 | { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
78 | guint8 *input; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
79 | gchar **segments; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
80 | gint i, j; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
81 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
82 | g_return_val_if_fail(data != NULL && len != 0 && delimit != 0, NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
83 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
84 | /* as the last field would be string, but data is not ended with 0x00 |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
85 | * we have to duplicate the data and append a 0x00 at the end */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
86 | input = g_newa(guint8, len + 1); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
87 | g_memmove(input, data, len); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
88 | input[len] = 0x00; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
89 | |
|
14079
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
90 | segments = g_strsplit((gchar *) input, delimit, 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
91 | if (expected_fields <= 0) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
92 | return segments; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
93 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
94 | for (i = 0; segments[i] != NULL; i++) {; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
95 | } |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
96 | if (i < expected_fields) { /* not enough fields */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
97 | gaim_debug(GAIM_DEBUG_ERROR, "QQ", |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
98 | "Invalid data, expect %d fields, found only %d, discard\n", expected_fields, i); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
99 | g_strfreev(segments); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
100 | return NULL; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
101 | } else if (i > expected_fields) { /* more fields, OK */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
102 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
103 | "Dangerous data, expect %d fields, found %d, return all\n", expected_fields, i); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
104 | /* free up those not used */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
105 | for (j = expected_fields; j < i; j++) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
106 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", "field[%d] is %s\n", j, segments[j]); |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
107 | g_free(segments[j]); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
108 | } |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
109 | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
110 | segments[expected_fields] = NULL; |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
111 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
112 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
113 | return segments; |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
114 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
115 | |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
116 | /* generate a md5 key using uid and session_key */ |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
117 | guint8 *_gen_session_md5(gint uid, guint8 *session_key) |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
118 | { |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
119 | guint8 *src, md5_str[QQ_KEY_LENGTH]; |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
120 | GaimCipher *cipher; |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
121 | GaimCipherContext *context; |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
122 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
123 | src = g_newa(guint8, 20); |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
124 | memcpy(src, &uid, 4); |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
125 | memcpy(src, session_key, QQ_KEY_LENGTH); |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
126 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
127 | cipher = gaim_ciphers_find_cipher("md5"); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
128 | context = gaim_cipher_context_new(cipher, NULL); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
129 | gaim_cipher_context_append(context, src, 20); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
130 | gaim_cipher_context_digest(context, sizeof(md5_str), md5_str, NULL); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
131 | gaim_cipher_context_destroy(context); |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
132 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
133 | return g_memdup(md5_str, QQ_KEY_LENGTH); |
|
14304
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
134 | } |
|
1b119ac26ec3
[gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14299
diff
changeset
|
135 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
136 | /* given a four-byte ip data, convert it into a human readable ip string |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
137 | * the return needs to be freed */ |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
138 | gchar *gen_ip_str(guint8 *ip) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
139 | { |
|
14079
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
140 | gchar *ret; |
|
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
141 | if (ip == NULL || ip[0] == 0) { |
|
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
142 | ret = g_new(gchar, 1); |
|
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
143 | *ret = '\0'; |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
144 | return ret; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
145 | } else { |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
146 | return g_strdup_printf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
147 | } |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
148 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
149 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
150 | guint8 *str_ip_gen(gchar *str) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
151 | guint8 *ip = g_new(guint8, 4); |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
152 | gint a, b, c, d; |
|
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
153 | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
154 | sscanf(str, "%d.%d.%d.%d", &a, &b, &c, &d); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
155 | ip[0] = a; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
156 | ip[1] = b; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
157 | ip[2] = c; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
158 | ip[3] = d; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
159 | return ip; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
160 | } |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
161 | |
|
14381
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
162 | /* convert Gaim name to original QQ UID */ |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
163 | guint32 gaim_name_to_uid(const gchar *const name) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
164 | { |
|
14381
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
165 | guint32 ret; |
|
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
166 | g_return_val_if_fail(name != NULL, 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
167 | |
|
14381
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
168 | ret = strtol(name, NULL, 10); |
|
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
169 | if (errno == ERANGE) |
|
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
170 | return 0; |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
171 | else |
|
14381
f61d2e267c67
[gaim-migrate @ 17012]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
172 | return ret; |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
173 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
174 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
175 | /* convert a QQ UID to a unique name of Gaim |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
176 | * the return needs to be freed */ |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
177 | gchar *uid_to_gaim_name(guint32 uid) |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
178 | { |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
179 | return g_strdup_printf(QQ_NAME_FORMAT, uid); |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
180 | } |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
181 | |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
182 | /* convert name displayed in a chat channel to original QQ UID */ |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
183 | gchar *chat_name_to_gaim_name(const gchar *const name) |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
184 | { |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
185 | const gchar *tmp; |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
186 | gchar *ret; |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
187 | |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
188 | g_return_val_if_fail(name != NULL, NULL); |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
189 | |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
190 | tmp = (gchar *) gaim_strcasestr(name, "(qq-"); |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
191 | ret = g_strndup(tmp + 4, strlen(name) - (tmp - name) - 4 - 1); |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
192 | |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
193 | return ret; |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
194 | } |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14381
diff
changeset
|
195 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
196 | /* try to dump the data as GBK */ |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
197 | void try_dump_as_gbk(const guint8 *const data, gint len) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
198 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
199 | gint i; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
200 | guint8 *incoming; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
201 | gchar *msg_utf8; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
202 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
203 | incoming = g_newa(guint8, len + 1); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
204 | g_memmove(incoming, data, len); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
205 | incoming[len] = 0x00; |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
206 | /* GBK code: |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
207 | * Single-byte ASCII: 0x21-0x7E |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
208 | * GBK first byte range: 0x81-0xFE |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
209 | * GBK second byte range: 0x40-0x7E and 0x80-0xFE */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
210 | for (i = 0; i < len; i++) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
211 | if (incoming[i] >= 0x81) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
212 | break; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
213 | |
|
14079
d336a66cd39f
[gaim-migrate @ 16610]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14077
diff
changeset
|
214 | msg_utf8 = i < len ? qq_to_utf8((gchar *) &incoming[i], QQ_CHARSET_DEFAULT) : NULL; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
215 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
216 | if (msg_utf8 != NULL) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
217 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", "Try extract GB msg: %s\n", msg_utf8); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
218 | g_free(msg_utf8); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
219 | } |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
220 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
221 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
222 | /* strips whitespace */ |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
223 | static gchar *strstrip(const gchar *const buffer) |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
224 | { |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
225 | GString *stripped; |
|
14299
28dd8ab08304
[gaim-migrate @ 16919]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14298
diff
changeset
|
226 | gchar *ret, cur; |
|
28dd8ab08304
[gaim-migrate @ 16919]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14298
diff
changeset
|
227 | gint i; |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
228 | |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
229 | g_return_val_if_fail(buffer != NULL, NULL); |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
230 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
231 | stripped = g_string_new(""); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
232 | for (i=0; i<strlen(buffer); i++) { |
|
14299
28dd8ab08304
[gaim-migrate @ 16919]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14298
diff
changeset
|
233 | cur = buffer[i]; |
|
28dd8ab08304
[gaim-migrate @ 16919]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14298
diff
changeset
|
234 | if (cur != ' ' && cur != '\n') |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
235 | g_string_append_c(stripped, buffer[i]); |
|
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
236 | } |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
237 | ret = stripped->str; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
238 | g_string_free(stripped, FALSE); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
239 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
240 | return ret; |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
241 | } |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
242 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
243 | /* Attempts to dump an ASCII hex string to a string of bytes. |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
244 | * The return should be freed later. */ |
|
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
245 | guint8 *hex_str_to_bytes(const gchar *const buffer, gint *out_len) |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
246 | { |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
247 | gchar *hex_str, *hex_buffer, *cursor, tmp; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
248 | guint8 *bytes, nibble1, nibble2; |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
249 | gint index; |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
250 | |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
251 | g_return_val_if_fail(buffer != NULL, NULL); |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
252 | |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
253 | hex_buffer = strstrip(buffer); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
254 | |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
255 | if (strlen(hex_buffer) % 2 != 0) { |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
256 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
257 | "Unable to convert an odd number of nibbles to a string of bytes!\n"); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
258 | g_free(hex_buffer); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
259 | return NULL; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
260 | } |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
261 | bytes = g_newa(guint8, strlen(hex_buffer) / 2); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
262 | hex_str = g_ascii_strdown(hex_buffer, -1); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
263 | g_free(hex_buffer); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
264 | index = 0; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
265 | for (cursor = hex_str; cursor < hex_str + sizeof(gchar) * (strlen(hex_str)) - 1; cursor++) { |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
266 | if (g_ascii_isdigit(*cursor)) { |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
267 | tmp = *cursor; nibble1 = atoi(&tmp); |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
268 | } else if (g_ascii_isalpha(*cursor) && (gint) *cursor - 87 < 16) { |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
269 | nibble1 = (gint) *cursor - 87; |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
270 | } else { |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
271 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
|
14299
28dd8ab08304
[gaim-migrate @ 16919]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14298
diff
changeset
|
272 | "Invalid char \'%c\' found in hex string!\n", *cursor); |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
273 | g_free(hex_str); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
274 | return NULL; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
275 | } |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
276 | nibble1 = nibble1 << 4; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
277 | cursor++; |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
278 | if (g_ascii_isdigit(*cursor)) { |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
279 | tmp = *cursor; nibble2 = atoi(&tmp); |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
280 | } else if (g_ascii_isalpha(*cursor) && (gint) (*cursor - 87) < 16) { |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
281 | nibble2 = (gint) *cursor - 87; |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
282 | } else { |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
283 | gaim_debug(GAIM_DEBUG_WARNING, "QQ", |
|
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
284 | "Invalid char found in hex string!\n"); |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
285 | g_free(hex_str); |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
286 | return NULL; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
287 | } |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
288 | bytes[index++] = nibble1 + nibble2; |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
289 | } |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
290 | *out_len = strlen(hex_str) / 2; |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
291 | g_free(hex_str); |
|
14111
0adb61f87bbb
[gaim-migrate @ 16662]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
292 | return g_memdup(bytes, *out_len); |
|
14077
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
293 | } |
|
c7742fbe41fc
[gaim-migrate @ 16607]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
294 | |
|
15137
28f227957781
[gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents:
15133
diff
changeset
|
295 | /* Dumps a chunk of raw data into an ASCII hex string. |
|
14298
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
296 | * The return should be freed later. */ |
|
3b1b5a48e75b
[gaim-migrate @ 16918]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14254
diff
changeset
|
297 | gchar *hex_dump_to_str(const guint8 *const buffer, gint bytes) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
298 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
299 | GString *str; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
300 | gchar *ret; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
301 | gint i, j, ch; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
302 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
303 | str = g_string_new(""); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
304 | for (i = 0; i < bytes; i += 16) { |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
305 | /* length label */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
306 | g_string_append_printf(str, "%04d: ", i); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
307 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
308 | /* dump hex value */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
309 | for (j = 0; j < 16; j++) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
310 | if ((i + j) < bytes) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
311 | g_string_append_printf(str, " %02X", buffer[i + j]); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
312 | else |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
313 | g_string_append(str, " "); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
314 | g_string_append(str, " "); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
315 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
316 | /* dump ascii value */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
317 | for (j = 0; j < 16 && (i + j) < bytes; j++) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
318 | ch = buffer[i + j] & 127; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
319 | if (ch < ' ' || ch == 127) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
320 | g_string_append_c(str, '.'); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
321 | else |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
322 | g_string_append_c(str, ch); |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
323 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
324 | g_string_append_c(str, '\n'); |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
325 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
326 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
327 | ret = str->str; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14079
diff
changeset
|
328 | /* GString can be freed without freeing it character data */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
329 | g_string_free(str, FALSE); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
330 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
331 | return ret; |
|
14051
6bc807df2a0a
[gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
332 | } |
|
15133
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
333 | |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
334 | /* convert face num from packet (0-299) to local face (1-100) */ |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
335 | gchar *face_to_icon_str(gint face) |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
336 | { |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
337 | gchar *icon_num_str; |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
338 | gint icon_num = face / 3 + 1; |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
339 | icon_num_str = g_strdup_printf("%d", icon_num); |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
340 | return icon_num_str; |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
341 | } |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
342 | |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
343 | /* |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
344 | gint face_to_icon_num(const gchar *face) |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
345 | { |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
346 | gchar *icon_str = face_to_icon_str(face); |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
347 | gint icon_num = strtol(icon_str, NULL, 10); |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
348 | g_free(icon_str); |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
349 | return icon_num; |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
350 | } |
|
9d5bbb9f8248
[gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15087
diff
changeset
|
351 | */ |
|
15200
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
352 | |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
353 | /* return the location of the buddy icon dir |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
354 | * any application using libgaim but not installing the QQ buddy icons |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
355 | * under datadir needs to set the pref below, or buddy icons won't work */ |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
356 | const char *qq_buddy_icon_dir(void) |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
357 | { |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
358 | if (gaim_prefs_exists("/prpl/qq/buddy_icon_dir")) |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
359 | return gaim_prefs_get_string("/prpl/qq/buddy_icon_dir"); |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
360 | else |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
361 | return QQ_BUDDY_ICON_DIR; |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
362 | } |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
363 | |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
364 | #ifdef _WIN32 |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
365 | const char *qq_win32_buddy_icon_dir(void) |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
366 | { |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
367 | static char *dir = NULL; |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
368 | if (dir == NULL) |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
369 | dir = g_build_filename(wgaim_install_dir(), "pixmaps", |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
370 | "gaim", "buddy_icons", "qq", NULL); |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
371 | return dir; |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
372 | } |
|
a28a70a4e7ce
[gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
15137
diff
changeset
|
373 | #endif |