Sun, 03 Jun 2007 01:06:44 +0000
propagate from branch 'im.pidgin.pidgin' (head b04036df5ac657d4fee06dbc362bb5e5b3400465)
to branch 'im.pidgin.cpw.khc.msnp14' (head 32444099c2cbe24c388eb193db35fc546d6c0e5b)
| 5309 | 1 | /** |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
2 | * @file msnutils.c Utility functions |
| 5309 | 3 | * |
| 15884 | 4 | * purple |
| 5309 | 5 | * |
| 15884 | 6 | * Purple is the legal property of its developers, whose names are too numerous |
|
9198
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
8 | * source distribution. |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6359
diff
changeset
|
9 | * |
| 5309 | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License as published by | |
| 12 | * the Free Software Foundation; either version 2 of the License, or | |
| 13 | * (at your option) any later version. | |
| 14 | * | |
| 15 | * This program is distributed in the hope that it will be useful, | |
| 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 18 | * GNU General Public License for more details. | |
| 19 | * | |
| 20 | * You should have received a copy of the GNU General Public License | |
| 21 | * along with this program; if not, write to the Free Software | |
| 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 23 | */ | |
| 24 | #include "msn.h" | |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
25 | #include "msnutils.h" |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
26 | #include "time.h" |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
27 | //#include <openssl/md5.h> |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
28 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
29 | char *rand_guid(void); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
30 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
31 | /************************************************************************** |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
32 | * Util |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
33 | **************************************************************************/ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
34 | char * |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
35 | rand_guid() |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
36 | { |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
37 | return g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X", |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
38 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
39 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
40 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
41 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
42 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
43 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
44 | rand() % 0xAAFF + 0x1111, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
45 | rand() % 0xAAFF + 0x1111); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
46 | } |
| 5309 | 47 | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
48 | void |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
49 | msn_parse_format(const char *mime, char **pre_ret, char **post_ret) |
| 5309 | 50 | { |
| 51 | char *cur; | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
52 | GString *pre = g_string_new(NULL); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
53 | GString *post = g_string_new(NULL); |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
54 | unsigned int colors[3]; |
| 5309 | 55 | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
56 | if (pre_ret != NULL) *pre_ret = NULL; |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
57 | if (post_ret != NULL) *post_ret = NULL; |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
58 | |
| 5309 | 59 | cur = strstr(mime, "FN="); |
| 60 | ||
| 8518 | 61 | if (cur && (*(cur = cur + 3) != ';')) |
| 62 | { | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
63 | pre = g_string_append(pre, "<FONT FACE=\""); |
| 5309 | 64 | |
| 8518 | 65 | while (*cur && *cur != ';') |
| 66 | { | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
67 | pre = g_string_append_c(pre, *cur); |
| 5309 | 68 | cur++; |
| 69 | } | |
| 70 | ||
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
71 | pre = g_string_append(pre, "\">"); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
72 | post = g_string_prepend(post, "</FONT>"); |
| 5309 | 73 | } |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
74 | |
| 5309 | 75 | cur = strstr(mime, "EF="); |
| 76 | ||
| 8518 | 77 | if (cur && (*(cur = cur + 3) != ';')) |
| 78 | { | |
| 79 | while (*cur && *cur != ';') | |
| 80 | { | |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
81 | pre = g_string_append_c(pre, '<'); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
82 | pre = g_string_append_c(pre, *cur); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
83 | pre = g_string_append_c(pre, '>'); |
| 8691 | 84 | post = g_string_prepend_c(post, '>'); |
| 85 | post = g_string_prepend_c(post, *cur); | |
| 86 | post = g_string_prepend_c(post, '/'); | |
| 87 | post = g_string_prepend_c(post, '<'); | |
| 5309 | 88 | cur++; |
| 89 | } | |
| 90 | } | |
| 91 | ||
| 92 | cur = strstr(mime, "CO="); | |
| 93 | ||
| 8518 | 94 | if (cur && (*(cur = cur + 3) != ';')) |
| 95 | { | |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
96 | int i; |
|
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
97 | |
|
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
98 | i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]); |
|
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
99 | |
| 8518 | 100 | if (i > 0) |
| 101 | { | |
| 5309 | 102 | char tag[64]; |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
103 | |
| 8518 | 104 | if (i == 1) |
| 105 | { | |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
106 | colors[1] = 0; |
| 8518 | 107 | colors[2] = 0; |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
108 | } |
| 8518 | 109 | else if (i == 2) |
| 110 | { | |
| 111 | unsigned int temp = colors[0]; | |
| 112 | ||
| 113 | colors[0] = colors[1]; | |
| 114 | colors[1] = temp; | |
| 115 | colors[2] = 0; | |
| 116 | } | |
| 117 | else if (i == 3) | |
| 118 | { | |
| 119 | unsigned int temp = colors[2]; | |
| 120 | ||
| 121 | colors[2] = colors[0]; | |
| 122 | colors[0] = temp; | |
|
6093
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
123 | } |
|
2095841fde03
[gaim-migrate @ 6552]
Christian Hammond <chipx86@chipx86.com>
parents:
5964
diff
changeset
|
124 | |
| 5309 | 125 | g_snprintf(tag, sizeof(tag), |
| 126 | "<FONT COLOR=\"#%02hhx%02hhx%02hhx\">", | |
| 8518 | 127 | colors[0], colors[1], colors[2]); |
| 128 | ||
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
129 | pre = g_string_append(pre, tag); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
130 | post = g_string_prepend(post, "</FONT>"); |
| 5309 | 131 | } |
| 132 | } | |
| 133 | ||
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
134 | cur = strstr(mime, "RL="); |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
135 | |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
136 | if (cur && (*(cur = cur + 3) != ';')) |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
137 | { |
| 16144 | 138 | if (*cur == '1') |
| 139 | { | |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
140 | /* RTL text was received */ |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
141 | pre = g_string_append(pre, "<SPAN style=\"direction:rtl;text-align:right;\">"); |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
142 | post = g_string_prepend(post, "</SPAN>"); |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
143 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
144 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
145 | |
| 15884 | 146 | cur = g_strdup(purple_url_decode(pre->str)); |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
147 | g_string_free(pre, TRUE); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
148 | |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
149 | if (pre_ret != NULL) |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
150 | *pre_ret = cur; |
|
6359
5b1705ffdd55
[gaim-migrate @ 6863]
Christian Hammond <chipx86@chipx86.com>
parents:
6358
diff
changeset
|
151 | else |
|
5b1705ffdd55
[gaim-migrate @ 6863]
Christian Hammond <chipx86@chipx86.com>
parents:
6358
diff
changeset
|
152 | g_free(cur); |
| 5309 | 153 | |
| 15884 | 154 | cur = g_strdup(purple_url_decode(post->str)); |
|
6358
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
155 | g_string_free(post, TRUE); |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
156 | |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
157 | if (post_ret != NULL) |
|
c3347685b9ef
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6093
diff
changeset
|
158 | *post_ret = cur; |
|
6359
5b1705ffdd55
[gaim-migrate @ 6863]
Christian Hammond <chipx86@chipx86.com>
parents:
6358
diff
changeset
|
159 | else |
|
5b1705ffdd55
[gaim-migrate @ 6863]
Christian Hammond <chipx86@chipx86.com>
parents:
6358
diff
changeset
|
160 | g_free(cur); |
| 5309 | 161 | } |
| 8518 | 162 | |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
163 | /*encode the str to RFC2047 style |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
164 | * Currently only support the UTF-8 and base64 encode |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
165 | */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
166 | char * |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
167 | msn_encode_mime(const char *str) |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
168 | { |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
169 | char *base64; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
170 | |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
171 | base64 = purple_base64_encode((guchar *)str, strlen(str)); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
172 | return g_strdup_printf("=?utf-8?B?%s?=", base64); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
173 | } |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
174 | |
| 8518 | 175 | /* |
| 176 | * We need this because we're only supposed to encode spaces in the font | |
| 15884 | 177 | * names. purple_url_encode() isn't acceptable. |
| 8518 | 178 | */ |
|
11897
10853b830964
[gaim-migrate @ 14188]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11176
diff
changeset
|
179 | static const char * |
| 8518 | 180 | encode_spaces(const char *str) |
| 181 | { | |
| 182 | static char buf[BUF_LEN]; | |
| 183 | const char *c; | |
| 184 | char *d; | |
| 185 | ||
| 186 | g_return_val_if_fail(str != NULL, NULL); | |
| 187 | ||
| 188 | for (c = str, d = buf; *c != '\0'; c++) | |
| 189 | { | |
| 190 | if (*c == ' ') | |
| 191 | { | |
| 192 | *d++ = '%'; | |
| 193 | *d++ = '2'; | |
| 194 | *d++ = '0'; | |
| 195 | } | |
| 196 | else | |
| 197 | *d++ = *c; | |
| 198 | } | |
| 199 | ||
| 200 | return buf; | |
| 201 | } | |
| 202 | ||
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
203 | /* |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
204 | * Taken from the zephyr plugin. |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
205 | * This parses HTML formatting (put out by one of the gtkimhtml widgets |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
206 | * and converts it to msn formatting. It doesn't deal with the tag closing, |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
207 | * but gtkimhtml widgets give valid html. |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
208 | * It currently deals properly with <b>, <u>, <i>, <font face=...>, |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
209 | * <font color=...>, <span dir=...>, <span style="direction: ...">. |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
210 | * It ignores <font back=...> and <font size=...> |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
211 | */ |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
212 | void |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
213 | msn_import_html(const char *html, char **attributes, char **message) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
214 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
215 | int len, retcount = 0; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
216 | const char *c; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
217 | char *msg; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
218 | char *fontface = NULL; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
219 | char fonteffect[4]; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
220 | char fontcolor[7]; |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
221 | char direction = '0'; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
222 | |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
223 | gboolean has_bold = FALSE; |
|
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
224 | gboolean has_italic = FALSE; |
|
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
225 | gboolean has_underline = FALSE; |
|
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
226 | gboolean has_strikethrough = FALSE; |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
227 | |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
228 | g_return_if_fail(html != NULL); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
229 | g_return_if_fail(attributes != NULL); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
230 | g_return_if_fail(message != NULL); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
231 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
232 | len = strlen(html); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
233 | msg = g_malloc0(len + 1); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
234 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
235 | memset(fontcolor, 0, sizeof(fontcolor)); |
|
10093
e22f76d46b0b
[gaim-migrate @ 11111]
Evan Schoenberg <evands@pidgin.im>
parents:
10041
diff
changeset
|
236 | strcat(fontcolor, "0"); |
|
10041
79adc9cc8e84
[gaim-migrate @ 11000]
Mark Doliner <markdoliner@pidgin.im>
parents:
9331
diff
changeset
|
237 | memset(fonteffect, 0, sizeof(fonteffect)); |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
238 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
239 | for (c = html; *c != '\0';) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
240 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
241 | if (*c == '<') |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
242 | { |
|
8923
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
243 | if (!g_ascii_strncasecmp(c + 1, "br>", 3)) |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
244 | { |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
245 | msg[retcount++] = '\r'; |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
246 | msg[retcount++] = '\n'; |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
247 | c += 4; |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
248 | } |
|
cadbc8e3dfe2
[gaim-migrate @ 9693]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8921
diff
changeset
|
249 | else if (!g_ascii_strncasecmp(c + 1, "i>", 2)) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
250 | { |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
251 | if (!has_italic) |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
252 | { |
|
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
253 | strcat(fonteffect, "I"); |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
254 | has_italic = TRUE; |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
255 | } |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
256 | c += 3; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
257 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
258 | else if (!g_ascii_strncasecmp(c + 1, "b>", 2)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
259 | { |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
260 | if (!has_bold) |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
261 | { |
|
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
262 | strcat(fonteffect, "B"); |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
263 | has_bold = TRUE; |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
264 | } |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
265 | c += 3; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
266 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
267 | else if (!g_ascii_strncasecmp(c + 1, "u>", 2)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
268 | { |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
269 | if (!has_underline) |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
270 | { |
|
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
271 | strcat(fonteffect, "U"); |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
272 | has_underline = TRUE; |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
273 | } |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
274 | c += 3; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
275 | } |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10093
diff
changeset
|
276 | else if (!g_ascii_strncasecmp(c + 1, "s>", 2)) |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10093
diff
changeset
|
277 | { |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
278 | if (!has_strikethrough) |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
279 | { |
|
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
280 | strcat(fonteffect, "S"); |
|
15850
882a2d125191
Fixed whitespace and variable naming issues with the patch I accepted in 1b4d3c82ad56354b161862e1a8ff0ebd1877dd03
Evan Schoenberg <evands@pidgin.im>
parents:
15849
diff
changeset
|
281 | has_strikethrough = TRUE; |
|
15849
1b4d3c82ad56
Patch from plivesey, submitted in Adium Trac #5753 (http://trac.adiumx.com/ticket/5753), which fixes a memory stomper which occurred if the msn prpl were passed HTML with multiple style tags of the same type. This doesn't happen in pidgin, because the gtkhtml widget knows that msn can only have one all-or-none instance of each style, but libpurple should be able to handle being passed any sort of HTML. This therefore fixes an Adium crash.
Evan Schoenberg <evands@pidgin.im>
parents:
15435
diff
changeset
|
282 | } |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10093
diff
changeset
|
283 | c += 3; |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10093
diff
changeset
|
284 | } |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
285 | else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
286 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
287 | c += 9; |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10093
diff
changeset
|
288 | |
| 9331 | 289 | if (!g_ascii_strncasecmp(c, "mailto:", 7)) |
| 290 | c += 7; | |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
291 | |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
292 | while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
293 | msg[retcount++] = *c++; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
294 | |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
295 | if (*c != '\0') |
|
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
296 | c += 2; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
297 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
298 | /* ignore descriptive string */ |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
299 | while ((*c != '\0') && g_ascii_strncasecmp(c, "</a>", 4)) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
300 | c++; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
301 | |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
302 | if (*c != '\0') |
|
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
303 | c += 4; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
304 | } |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
305 | else if (!g_ascii_strncasecmp(c + 1, "span", 4)) |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
306 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
307 | /* Bi-directional text support using CSS properties in span tags */ |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
308 | c += 5; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
309 | |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
310 | while (*c != '\0' && *c != '>') |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
311 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
312 | while (*c == ' ') |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
313 | c++; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
314 | if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9)) |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
315 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
316 | c += 9; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
317 | direction = '1'; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
318 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
319 | else if (!g_ascii_strncasecmp(c, "style=\"", 7)) |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
320 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
321 | /* Parse inline CSS attributes */ |
| 16144 | 322 | char *attributes; |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
323 | int attr_len = 0; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
324 | c += 7; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
325 | while (*(c + attr_len) != '\0' && *(c + attr_len) != '"') |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
326 | attr_len++; |
| 16144 | 327 | if (*(c + attr_len) == '"') |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
328 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
329 | char *attr_dir; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
330 | attributes = g_strndup(c, attr_len); |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
331 | attr_dir = purple_markup_get_css_property(attributes, "direction"); |
| 16144 | 332 | if (attr_dir && (!strncasecmp(attr_dir, "RTL", 3))) |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
333 | direction = '1'; |
| 16144 | 334 | g_free(attr_dir); |
| 335 | g_free(attributes); | |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
336 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
337 | |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
338 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
339 | else |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
340 | { |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
341 | c++; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
342 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
343 | } |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
344 | if (*c == '>') |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
345 | c++; |
|
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
346 | } |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
347 | else if (!g_ascii_strncasecmp(c + 1, "font", 4)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
348 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
349 | c += 5; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
350 | |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
351 | while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1)) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
352 | c++; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
353 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
354 | if (!g_ascii_strncasecmp(c, "color=\"#", 7)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
355 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
356 | c += 8; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
357 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
358 | fontcolor[0] = *(c + 4); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
359 | fontcolor[1] = *(c + 5); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
360 | fontcolor[2] = *(c + 2); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
361 | fontcolor[3] = *(c + 3); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
362 | fontcolor[4] = *c; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
363 | fontcolor[5] = *(c + 1); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
364 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
365 | c += 8; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
366 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
367 | else if (!g_ascii_strncasecmp(c, "face=\"", 6)) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
368 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
369 | const char *end = NULL; |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
370 | const char *comma = NULL; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
371 | unsigned int namelen = 0; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
372 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
373 | c += 6; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
374 | end = strchr(c, '\"'); |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
375 | comma = strchr(c, ','); |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
376 | |
|
9090
2c7655380bf5
[gaim-migrate @ 9867]
Christian Hammond <chipx86@chipx86.com>
parents:
8923
diff
changeset
|
377 | if (comma == NULL || comma > end) |
|
2c7655380bf5
[gaim-migrate @ 9867]
Christian Hammond <chipx86@chipx86.com>
parents:
8923
diff
changeset
|
378 | namelen = (unsigned int)(end - c); |
|
2c7655380bf5
[gaim-migrate @ 9867]
Christian Hammond <chipx86@chipx86.com>
parents:
8923
diff
changeset
|
379 | else |
|
2c7655380bf5
[gaim-migrate @ 9867]
Christian Hammond <chipx86@chipx86.com>
parents:
8923
diff
changeset
|
380 | namelen = (unsigned int)(comma - c); |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
381 | |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
382 | fontface = g_strndup(c, namelen); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
383 | c = end + 2; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
384 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
385 | else |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
386 | { |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
387 | /* Drop all unrecognized/misparsed font tags */ |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
388 | while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
389 | c++; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
390 | |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
391 | if (*c != '\0') |
|
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
392 | c += 2; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
393 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
394 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
395 | else |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
396 | { |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
397 | while ((*c != '\0') && (*c != '>')) |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
398 | c++; |
|
11176
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
399 | if (*c != '\0') |
|
a7b860aa756e
[gaim-migrate @ 13283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10274
diff
changeset
|
400 | c++; |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
401 | } |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
402 | } |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
403 | else if (*c == '&') |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
404 | { |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
405 | if (!g_ascii_strncasecmp(c, "<", 4)) |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
406 | { |
| 8678 | 407 | msg[retcount++] = '<'; |
| 408 | c += 4; | |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
409 | } |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
410 | else if (!g_ascii_strncasecmp(c, ">", 4)) |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
411 | { |
| 8678 | 412 | msg[retcount++] = '>'; |
| 413 | c += 4; | |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
414 | } |
|
9264
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
415 | else if (!g_ascii_strncasecmp(c, " ", 6)) |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
416 | { |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
417 | msg[retcount++] = ' '; |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
418 | c += 6; |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
419 | } |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
420 | else if (!g_ascii_strncasecmp(c, """, 6)) |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
421 | { |
| 8678 | 422 | msg[retcount++] = '"'; |
| 423 | c += 6; | |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
424 | } |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
425 | else if (!g_ascii_strncasecmp(c, "&", 5)) |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
426 | { |
| 8678 | 427 | msg[retcount++] = '&'; |
| 428 | c += 5; | |
| 429 | } | |
|
9264
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
430 | else if (!g_ascii_strncasecmp(c, "'", 6)) |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
431 | { |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
432 | msg[retcount++] = '\''; |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
433 | c += 6; |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
434 | } |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
435 | else |
|
082e824358cf
[gaim-migrate @ 10063]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9198
diff
changeset
|
436 | msg[retcount++] = *c++; |
|
8921
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
437 | } |
|
5daa40528148
[gaim-migrate @ 9691]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8691
diff
changeset
|
438 | else |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
439 | msg[retcount++] = *c++; |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
440 | } |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
441 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
442 | if (fontface == NULL) |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
443 | fontface = g_strdup("MS Sans Serif"); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
444 | |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
445 | *attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c", |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
446 | encode_spaces(fontface), |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
15884
diff
changeset
|
447 | fonteffect, fontcolor, direction); |
|
8595
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
448 | *message = g_strdup(msg); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
449 | |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
450 | g_free(fontface); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
451 | g_free(msg); |
|
c751f6b0260e
[gaim-migrate @ 9346]
Christian Hammond <chipx86@chipx86.com>
parents:
8530
diff
changeset
|
452 | } |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
453 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
454 | void |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
455 | msn_parse_socket(const char *str, char **ret_host, int *ret_port) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
456 | { |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
457 | char *host; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
458 | char *c; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
459 | int port; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
460 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
461 | host = g_strdup(str); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
462 | |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
463 | if ((c = strchr(host, ':')) != NULL){ |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
464 | *c = '\0'; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
465 | port = atoi(c + 1); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
466 | }else{ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
467 | port = 1863; |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
468 | } |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
469 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
470 | *ret_host = host; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
471 | *ret_port = port; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9090
diff
changeset
|
472 | } |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
473 | /*************************************************************************** |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
474 | * MSN Time Related Funciton |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
475 | ***************************************************************************/ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
476 | #if 0 |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
477 | int |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
478 | msn_convert_iso8601(const char *timestr,struct tm tm_time) |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
479 | { |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
480 | char temp[64]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
481 | struct tm ctime; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
482 | time_t ts; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
483 | |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
484 | purple_debug_info("MaYuan","convert string is{%s}\n",timestr); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
485 | tzset(); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
486 | /*copy string first*/ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
487 | memset(temp, 0, sizeof(temp)); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
488 | strncpy(temp, timestr, strlen(timestr)); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
489 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
490 | /*convert via strptime()*/ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
491 | memset(&ctime, 0, sizeof(struct tm)); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
492 | strptime(temp, "%d %b %Y %T %Z", &ctime); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
493 | ts = mktime(&ctime) - timezone; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
494 | localtime_r(&ts, tm_time); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
495 | } |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
496 | #endif |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
497 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
498 | /*************************************************************************** |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
499 | * MSN Challenge Computing Function |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
500 | ***************************************************************************/ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
501 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
502 | /* |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
503 | * Handle MSN Chanllege computation |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
504 | *This algorithm reference with http://msnpiki.msnfanatic.com/index.php/MSNP11:Challenges |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
505 | */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
506 | #define BUFSIZE 256 |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
507 | void |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
508 | msn_handle_chl(char *input, char *output) |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
509 | { |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
510 | PurpleCipher *cipher; |
|
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
511 | PurpleCipherContext *context; |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
512 | char *productKey = MSNP13_WLM_PRODUCT_KEY, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
513 | *productID = MSNP13_WLM_PRODUCT_ID, |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
514 | *hexChars = "0123456789abcdef", |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
515 | buf[BUFSIZE]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
516 | unsigned char md5Hash[16], *newHash; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
517 | unsigned int *md5Parts, *chlStringParts, newHashParts[5]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
518 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
519 | long long nHigh=0, nLow=0; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
520 | |
|
20507
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
521 | int i; |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
522 | |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
523 | /* Create the MD5 hash by using Purple MD5 algorithm*/ |
|
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
524 | cipher = purple_ciphers_find_cipher("md5"); |
|
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
525 | context = purple_cipher_context_new(cipher, NULL); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
526 | |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
527 | purple_cipher_context_append(context, (const guchar *)input, |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
528 | strlen(input)); |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
529 | purple_cipher_context_append(context, (const guchar *)productKey, |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
530 | strlen(productKey)); |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
531 | purple_cipher_context_digest(context, sizeof(md5Hash), md5Hash, NULL); |
|
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
532 | purple_cipher_context_destroy(context); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
533 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
534 | /* Split it into four integers */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
535 | md5Parts = (unsigned int *)md5Hash; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
536 | for(i=0; i<4; i++){ |
|
20507
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
537 | /* adjust endianess */ |
|
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
538 | md5Parts[i] = GUINT_TO_LE(md5Parts[i]); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
539 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
540 | /* & each integer with 0x7FFFFFFF */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
541 | /* and save one unmodified array for later */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
542 | newHashParts[i] = md5Parts[i]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
543 | md5Parts[i] &= 0x7FFFFFFF; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
544 | } |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
545 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
546 | /* make a new string and pad with '0' */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
547 | snprintf(buf, BUFSIZE-5, "%s%s", input, productID); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
548 | i = strlen(buf); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
549 | memset(&buf[i], '0', 8 - (i % 8)); |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
550 | buf[i + (8 - (i % 8))]='\0'; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
551 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
552 | /* split into integers */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
553 | chlStringParts = (unsigned int *)buf; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
554 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
555 | /* this is magic */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
556 | for (i=0; i<(strlen(buf)/4)-1; i+=2){ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
557 | long long temp; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
558 | |
|
20507
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
559 | chlStringParts[i] = GUINT_TO_LE(chlStringParts[i]); |
|
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
560 | chlStringParts[i+1] = GUINT_TO_LE(chlStringParts[i+1]); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
561 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
562 | temp=(md5Parts[0] * (((0x0E79A9C1 * (long long)chlStringParts[i]) % 0x7FFFFFFF)+nHigh) + md5Parts[1])%0x7FFFFFFF; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
563 | nHigh=(md5Parts[2] * (((long long)chlStringParts[i+1]+temp) % 0x7FFFFFFF) + md5Parts[3]) % 0x7FFFFFFF; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
564 | nLow=nLow + nHigh + temp; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
565 | } |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
566 | nHigh=(nHigh+md5Parts[1]) % 0x7FFFFFFF; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
567 | nLow=(nLow+md5Parts[3]) % 0x7FFFFFFF; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
568 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
569 | newHashParts[0]^=nHigh; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
570 | newHashParts[1]^=nLow; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
571 | newHashParts[2]^=nHigh; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
572 | newHashParts[3]^=nLow; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
573 | |
|
20507
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
574 | /* adjust endianness */ |
|
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
575 | for(i=0; i<4; i++) |
|
3a9ce71ccad9
Use glib functions for endian conversion. If someone has a big endian
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20506
diff
changeset
|
576 | newHashParts[i] = GUINT_TO_LE(newHashParts[i]); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
577 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
578 | /* make a string of the parts */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
579 | newHash = (unsigned char *)newHashParts; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
580 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
581 | /* convert to hexadecimal */ |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
582 | for (i=0; i<16; i++) |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
583 | { |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
584 | output[i*2]=hexChars[(newHash[i]>>4)&0xF]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
585 | output[(i*2)+1]=hexChars[newHash[i]&0xF]; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
586 | } |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
587 | |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
588 | output[32]='\0'; |
|
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
589 | |
|
20486
26b9f3efe52d
The last of the merge fix-ups.
Richard Laager <rlaager@pidgin.im>
parents:
20485
diff
changeset
|
590 | // purple_debug_info("MaYuan","chl output{%s}\n",output); |
|
20483
45d3a4773e1b
propagate from branch 'im.pidgin.rlaager.merging.msnp13-and-sf-1621854-4' (head cd47bac1af94287a1145874b9ed7a153fd1fb8bd)
Richard Laager <rlaager@pidgin.im>
parents:
16144
diff
changeset
|
591 | } |