Mercurial > pidgin.yaz
annotate libpurple/protocols/msnp9/msn-utils.c @ 22373:50e5ac417035
Patch from Qulogic that fixes #4951 by making sure that the buffer is NUL-
terminated at the right place
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Fri, 29 Feb 2008 04:23:00 +0000 |
parents | a07cfce78345 |
children |
rev | line source |
---|---|
21312
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
1 /** |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
2 * @file msn-utils.c Utility functions |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
3 * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
4 * purple |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
5 * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
6 * Purple is the legal property of its developers, whose names are too numerous |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
8 * source distribution. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
9 * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
13 * (at your option) any later version. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
14 * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
18 * GNU General Public License for more details. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
19 * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
23 */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
24 #include "msn.h" |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
25 #include "msn-utils.h" |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
26 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
27 void |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
28 msn_parse_format(const char *mime, char **pre_ret, char **post_ret) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
29 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
30 char *cur; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
31 GString *pre = g_string_new(NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
32 GString *post = g_string_new(NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
33 unsigned int colors[3]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
34 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
35 if (pre_ret != NULL) *pre_ret = NULL; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
36 if (post_ret != NULL) *post_ret = NULL; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
37 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
38 cur = strstr(mime, "FN="); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
39 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
40 if (cur && (*(cur = cur + 3) != ';')) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
41 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
42 pre = g_string_append(pre, "<FONT FACE=\""); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
43 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
44 while (*cur && *cur != ';') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
45 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
46 pre = g_string_append_c(pre, *cur); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
47 cur++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
48 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
49 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
50 pre = g_string_append(pre, "\">"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
51 post = g_string_prepend(post, "</FONT>"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
52 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
53 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
54 cur = strstr(mime, "EF="); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
55 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
56 if (cur && (*(cur = cur + 3) != ';')) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
57 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
58 while (*cur && *cur != ';') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
59 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
60 pre = g_string_append_c(pre, '<'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
61 pre = g_string_append_c(pre, *cur); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
62 pre = g_string_append_c(pre, '>'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
63 post = g_string_prepend_c(post, '>'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
64 post = g_string_prepend_c(post, *cur); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
65 post = g_string_prepend_c(post, '/'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
66 post = g_string_prepend_c(post, '<'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
67 cur++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
68 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
69 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
70 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
71 cur = strstr(mime, "CO="); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
72 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
73 if (cur && (*(cur = cur + 3) != ';')) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
74 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
75 int i; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
76 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
77 i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
78 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
79 if (i > 0) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
80 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
81 char tag[64]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
82 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
83 if (i == 1) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
84 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
85 colors[1] = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
86 colors[2] = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
87 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
88 else if (i == 2) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
89 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
90 unsigned int temp = colors[0]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
91 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
92 colors[0] = colors[1]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
93 colors[1] = temp; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
94 colors[2] = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
95 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
96 else if (i == 3) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
97 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
98 unsigned int temp = colors[2]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
99 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
100 colors[2] = colors[0]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
101 colors[0] = temp; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
102 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
103 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
104 g_snprintf(tag, sizeof(tag), |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
105 "<FONT COLOR=\"#%02hhx%02hhx%02hhx\">", |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
106 colors[0], colors[1], colors[2]); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
107 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
108 pre = g_string_append(pre, tag); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
109 post = g_string_prepend(post, "</FONT>"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
110 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
111 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
112 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
113 cur = strstr(mime, "RL="); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
114 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
115 if (cur && (*(cur = cur + 3) != ';')) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
116 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
117 if (*cur == '1') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
118 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
119 /* RTL text was received */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
120 pre = g_string_append(pre, "<SPAN style=\"direction:rtl;text-align:right;\">"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
121 post = g_string_prepend(post, "</SPAN>"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
122 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
123 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
124 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
125 cur = g_strdup(purple_url_decode(pre->str)); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
126 g_string_free(pre, TRUE); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
127 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
128 if (pre_ret != NULL) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
129 *pre_ret = cur; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
130 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
131 g_free(cur); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
132 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
133 cur = g_strdup(purple_url_decode(post->str)); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
134 g_string_free(post, TRUE); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
135 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
136 if (post_ret != NULL) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
137 *post_ret = cur; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
138 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
139 g_free(cur); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
140 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
141 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
142 /* |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
143 * We need this because we're only supposed to encode spaces in the font |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
144 * names. purple_url_encode() isn't acceptable. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
145 */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
146 static const char * |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
147 encode_spaces(const char *str) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
148 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
149 static char buf[BUF_LEN]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
150 const char *c; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
151 char *d; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
152 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
153 g_return_val_if_fail(str != NULL, NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
154 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
155 for (c = str, d = buf; *c != '\0'; c++) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
156 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
157 if (*c == ' ') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
158 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
159 *d++ = '%'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
160 *d++ = '2'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
161 *d++ = '0'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
162 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
163 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
164 *d++ = *c; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
165 } |
22373
50e5ac417035
Patch from Qulogic that fixes #4951 by making sure that the buffer is NUL-
Ka-Hing Cheung <khc@hxbc.us>
parents:
21312
diff
changeset
|
166 *d = '\0'; |
21312
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
167 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
168 return buf; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
169 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
170 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
171 /* |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
172 * Taken from the zephyr plugin. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
173 * This parses HTML formatting (put out by one of the gtkimhtml widgets |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
174 * and converts it to msn formatting. It doesn't deal with the tag closing, |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
175 * but gtkimhtml widgets give valid html. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
176 * It currently deals properly with <b>, <u>, <i>, <font face=...>, |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
177 * <font color=...>, <span dir=...>, <span style="direction: ...">. |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
178 * It ignores <font back=...> and <font size=...> |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
179 */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
180 void |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
181 msn_import_html(const char *html, char **attributes, char **message) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
182 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
183 int len, retcount = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
184 const char *c; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
185 char *msg; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
186 char *fontface = NULL; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
187 char fonteffect[4]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
188 char fontcolor[7]; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
189 char direction = '0'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
190 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
191 gboolean has_bold = FALSE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
192 gboolean has_italic = FALSE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
193 gboolean has_underline = FALSE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
194 gboolean has_strikethrough = FALSE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
195 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
196 g_return_if_fail(html != NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
197 g_return_if_fail(attributes != NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
198 g_return_if_fail(message != NULL); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
199 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
200 len = strlen(html); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
201 msg = g_malloc0(len + 1); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
202 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
203 memset(fontcolor, 0, sizeof(fontcolor)); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
204 strcat(fontcolor, "0"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
205 memset(fonteffect, 0, sizeof(fonteffect)); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
206 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
207 for (c = html; *c != '\0';) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
208 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
209 if (*c == '<') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
210 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
211 if (!g_ascii_strncasecmp(c + 1, "br>", 3)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
212 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
213 msg[retcount++] = '\r'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
214 msg[retcount++] = '\n'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
215 c += 4; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
216 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
217 else if (!g_ascii_strncasecmp(c + 1, "i>", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
218 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
219 if (!has_italic) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
220 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
221 strcat(fonteffect, "I"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
222 has_italic = TRUE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
223 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
224 c += 3; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
225 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
226 else if (!g_ascii_strncasecmp(c + 1, "b>", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
227 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
228 if (!has_bold) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
229 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
230 strcat(fonteffect, "B"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
231 has_bold = TRUE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
232 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
233 c += 3; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
234 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
235 else if (!g_ascii_strncasecmp(c + 1, "u>", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
236 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
237 if (!has_underline) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
238 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
239 strcat(fonteffect, "U"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
240 has_underline = TRUE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
241 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
242 c += 3; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
243 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
244 else if (!g_ascii_strncasecmp(c + 1, "s>", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
245 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
246 if (!has_strikethrough) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
247 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
248 strcat(fonteffect, "S"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
249 has_strikethrough = TRUE; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
250 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
251 c += 3; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
252 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
253 else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
254 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
255 c += 9; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
256 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
257 if (!g_ascii_strncasecmp(c, "mailto:", 7)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
258 c += 7; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
259 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
260 while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
261 msg[retcount++] = *c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
262 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
263 if (*c != '\0') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
264 c += 2; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
265 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
266 /* ignore descriptive string */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
267 while ((*c != '\0') && g_ascii_strncasecmp(c, "</a>", 4)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
268 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
269 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
270 if (*c != '\0') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
271 c += 4; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
272 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
273 else if (!g_ascii_strncasecmp(c + 1, "span", 4)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
274 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
275 /* Bi-directional text support using CSS properties in span tags */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
276 c += 5; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
277 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
278 while (*c != '\0' && *c != '>') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
279 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
280 while (*c == ' ') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
281 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
282 if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
283 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
284 c += 9; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
285 direction = '1'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
286 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
287 else if (!g_ascii_strncasecmp(c, "style=\"", 7)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
288 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
289 /* Parse inline CSS attributes */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
290 char *attributes; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
291 int attr_len = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
292 c += 7; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
293 while (*(c + attr_len) != '\0' && *(c + attr_len) != '"') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
294 attr_len++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
295 if (*(c + attr_len) == '"') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
296 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
297 char *attr_dir; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
298 attributes = g_strndup(c, attr_len); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
299 attr_dir = purple_markup_get_css_property(attributes, "direction"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
300 if (attr_dir && (!g_ascii_strncasecmp(attr_dir, "RTL", 3))) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
301 direction = '1'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
302 g_free(attr_dir); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
303 g_free(attributes); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
304 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
305 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
306 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
307 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
308 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
309 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
310 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
311 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
312 if (*c == '>') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
313 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
314 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
315 else if (!g_ascii_strncasecmp(c + 1, "font", 4)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
316 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
317 c += 5; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
318 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
319 while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
320 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
321 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
322 if (!g_ascii_strncasecmp(c, "color=\"#", 7)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
323 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
324 c += 8; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
325 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
326 fontcolor[0] = *(c + 4); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
327 fontcolor[1] = *(c + 5); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
328 fontcolor[2] = *(c + 2); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
329 fontcolor[3] = *(c + 3); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
330 fontcolor[4] = *c; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
331 fontcolor[5] = *(c + 1); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
332 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
333 c += 8; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
334 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
335 else if (!g_ascii_strncasecmp(c, "face=\"", 6)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
336 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
337 const char *end = NULL; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
338 const char *comma = NULL; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
339 unsigned int namelen = 0; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
340 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
341 c += 6; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
342 end = strchr(c, '\"'); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
343 comma = strchr(c, ','); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
344 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
345 if (comma == NULL || comma > end) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
346 namelen = (unsigned int)(end - c); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
347 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
348 namelen = (unsigned int)(comma - c); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
349 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
350 fontface = g_strndup(c, namelen); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
351 c = end + 2; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
352 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
353 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
354 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
355 /* Drop all unrecognized/misparsed font tags */ |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
356 while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
357 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
358 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
359 if (*c != '\0') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
360 c += 2; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
361 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
362 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
363 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
364 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
365 while ((*c != '\0') && (*c != '>')) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
366 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
367 if (*c != '\0') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
368 c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
369 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
370 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
371 else if (*c == '&') |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
372 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
373 if (!g_ascii_strncasecmp(c, "<", 4)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
374 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
375 msg[retcount++] = '<'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
376 c += 4; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
377 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
378 else if (!g_ascii_strncasecmp(c, ">", 4)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
379 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
380 msg[retcount++] = '>'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
381 c += 4; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
382 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
383 else if (!g_ascii_strncasecmp(c, " ", 6)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
384 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
385 msg[retcount++] = ' '; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
386 c += 6; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
387 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
388 else if (!g_ascii_strncasecmp(c, """, 6)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
389 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
390 msg[retcount++] = '"'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
391 c += 6; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
392 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
393 else if (!g_ascii_strncasecmp(c, "&", 5)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
394 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
395 msg[retcount++] = '&'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
396 c += 5; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
397 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
398 else if (!g_ascii_strncasecmp(c, "'", 6)) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
399 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
400 msg[retcount++] = '\''; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
401 c += 6; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
402 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
403 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
404 msg[retcount++] = *c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
405 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
406 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
407 msg[retcount++] = *c++; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
408 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
409 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
410 if (fontface == NULL) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
411 fontface = g_strdup("MS Sans Serif"); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
412 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
413 *attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c", |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
414 encode_spaces(fontface), |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
415 fonteffect, fontcolor, direction); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
416 *message = g_strdup(msg); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
417 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
418 g_free(fontface); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
419 g_free(msg); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
420 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
421 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
422 void |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
423 msn_parse_socket(const char *str, char **ret_host, int *ret_port) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
424 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
425 char *host; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
426 char *c; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
427 int port; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
428 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
429 host = g_strdup(str); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
430 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
431 if ((c = strchr(host, ':')) != NULL) |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
432 { |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
433 *c = '\0'; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
434 port = atoi(c + 1); |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
435 } |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
436 else |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
437 port = 1863; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
438 |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
439 *ret_host = host; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
440 *ret_port = port; |
a07cfce78345
Add MSNP9 back as an alternative alongside the existing MSN prpl. Cowardly
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff
changeset
|
441 } |