src/protocols/yahoo/util.c

Sat, 29 Nov 2003 03:30:01 +0000

author
Tim Ringenbach <marv@pidgin.im>
date
Sat, 29 Nov 2003 03:30:01 +0000
changeset 7651
43663aa7ef68
parent 6631
a2608d595a32
child 7827
080c98045e12
permissions
-rw-r--r--

[gaim-migrate @ 8295]
Tim Ringenbach (marv_sf) " Because Sean asked nicely." implemented yahoo
file transfer for the masses. of this second version of the patch, he adds:
"Here's a new diff, that adds a right click send file menu
like oscar, and should still compile without those new
callbacks that got reverted."

i'm using (and perhaps abusing) the permission to commit yahoo patches from
him that i obtained in previous releases :-)

committer: Luke Schierer <lschiere@pidgin.im>

6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
1 /*
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
2 * gaim
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
3 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
4 * Some code copyright 2003 Tim Ringenbach <omarvo@hotmail.com>
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
5 * (marv on irc.freenode.net)
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
6 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
11 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
16 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
20 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
24 #include "config.h"
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
25 #endif
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
26
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
27 #include "prpl.h"
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
28 #include "debug.h"
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
29
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
30 #include <string.h>
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
31
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
32
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
33 /*
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
34 * I found these on some website but i don't know that they actually
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
35 * work (or are supposed to work). I didn't impliment them yet.
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
36 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
37 * [0;30m ---black
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
38 * [1;37m ---white
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
39 * [0;37m ---tan
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
40 * [0;38m ---light black
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
41 * [1;39m ---dark blue
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
42 * [0;32m ---green
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
43 * [0;33m ---yellow
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
44 * [0;35m ---pink
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
45 * [1;35m ---purple
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
46 * [1;30m ---light blue
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
47 * [0;31m ---red
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
48 * [0;34m ---blue
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
49 * [0;36m ---aqua
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
50 * (shift+comma)lyellow(shift+period) ---light yellow
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
51 * (shift+comma)lgreen(shift+period) ---light green
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
52 [2;30m <--white out
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
53
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
54 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
55
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
56
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
57 static GHashTable *ht = NULL;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
58
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
59 void yahoo_init_colorht()
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
60 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
61 ht = g_hash_table_new(g_str_hash, g_str_equal);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
62 /* the numbers in comments are what gyach uses, but i think they're incorrect */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
63 g_hash_table_insert(ht, "30", "<FONT COLOR=\"#000000\">"); /* black */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
64 g_hash_table_insert(ht, "31", "<FONT COLOR=\"#0000FF\">"); /* blue */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
65 g_hash_table_insert(ht, "32", "<FONT COLOR=\"#008080\">"); /* cyan */ /* 00b2b2 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
66 g_hash_table_insert(ht, "33", "<FONT COLOR=\"#808080\">"); /* gray */ /* 808080 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
67 g_hash_table_insert(ht, "34", "<FONT COLOR=\"#008000\">"); /* green */ /* 00c200 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
68 g_hash_table_insert(ht, "35", "<FONT COLOR=\"#FF0080\">"); /* pink */ /* ffafaf */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
69 g_hash_table_insert(ht, "36", "<FONT COLOR=\"#800080\">"); /* purple */ /* b200b2 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
70 g_hash_table_insert(ht, "37", "<FONT COLOR=\"#FF8000\">"); /* orange */ /* ffff00 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
71 g_hash_table_insert(ht, "38", "<FONT COLOR=\"#FF0000\">"); /* red */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
72 g_hash_table_insert(ht, "39", "<FONT COLOR=\"#808000\">"); /* olive */ /* 546b50 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
73
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
74 g_hash_table_insert(ht, "1", "<B>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
75 g_hash_table_insert(ht, "x1", "</B>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
76 g_hash_table_insert(ht, "2", "<I>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
77 g_hash_table_insert(ht, "x2", "</I>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
78 g_hash_table_insert(ht, "4", "<U>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
79 g_hash_table_insert(ht, "x4", "</U>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
80
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
81 /* these just tell us the text they surround is supposed
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
82 * to be a link. gaim figures that out on its own so we
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
83 * just ignore it.
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
84 */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
85 g_hash_table_insert(ht, "l", ""); /* link start */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
86 g_hash_table_insert(ht, "xl", ""); /* link end */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
87
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
88
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
89 g_hash_table_insert(ht, "<black>", "<FONT COLOR=\"#000000\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
90 g_hash_table_insert(ht, "<blue>", "<FONT COLOR=\"#0000FF\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
91 g_hash_table_insert(ht, "<cyan>", "<FONT COLOR=\"#008284\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
92 g_hash_table_insert(ht, "<gray>", "<FONT COLOR=\"#848284\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
93 g_hash_table_insert(ht, "<green>", "<FONT COLOR=\"#008200\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
94 g_hash_table_insert(ht, "<pink>", "<FONT COLOR=\"#FF0084\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
95 g_hash_table_insert(ht, "<purple>", "<FONT COLOR=\"#840084\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
96 g_hash_table_insert(ht, "<orange>", "<FONT COLOR=\"#FF8000\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
97 g_hash_table_insert(ht, "<red>", "<FONT COLOR=\"#FF0000\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
98 g_hash_table_insert(ht, "<yellow>", "<FONT COLOR=\"#848200\">");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
99
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
100 g_hash_table_insert(ht, "</black>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
101 g_hash_table_insert(ht, "</blue>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
102 g_hash_table_insert(ht, "</cyan>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
103 g_hash_table_insert(ht, "</gray>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
104 g_hash_table_insert(ht, "</green>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
105 g_hash_table_insert(ht, "</pink>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
106 g_hash_table_insert(ht, "</purple>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
107 g_hash_table_insert(ht, "</orange>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
108 g_hash_table_insert(ht, "</red>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
109 g_hash_table_insert(ht, "</yellow>", "</FONT>");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
110
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
111 /* remove these once we have proper support for <FADE> and <ALT> */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
112 g_hash_table_insert(ht, "</fade>", "");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
113 g_hash_table_insert(ht, "</alt>", "");
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
114 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
115
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
116 void yahoo_dest_colorht()
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
117 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
118 g_hash_table_destroy(ht);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
119 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
120
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
121 static int point_to_html(int x)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
122 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
123 if (x < 9)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
124 return 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
125 if (x < 11)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
126 return 2;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
127 if (x < 13)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
128 return 3;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
129 if (x < 17)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
130 return 4;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
131 if (x < 25)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
132 return 5;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
133 if (x < 35)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
134 return 6;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
135 return 7;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
136 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
137 static void _font_tags_fix_size(GString *tag, GString *dest)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
138 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
139 char *x, *end;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
140 int size;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
141
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
142 if (((x = strstr(tag->str, "size"))) && ((x = strchr(tag->str, '=')))) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
143 while (*x && !g_ascii_isdigit(*x))
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
144 x++;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
145 if (*x) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
146 size = strtol(x, &end, 10);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
147 size = point_to_html(size);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
148 g_string_append_len(dest, tag->str, x - tag->str);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
149 g_string_append_printf(dest, "%d", size);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
150 g_string_append(dest, end);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
151 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
152 g_string_append(dest, tag->str);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
153 return;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
154 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
155 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
156 g_string_append(dest, tag->str);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
157 return;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
158 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
159 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
160
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
161 char *yahoo_codes_to_html(const char *x)
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
162 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
163 GString *s, *tmp;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
164 int i, j, xs, nomoreendtags = 0; /* s/endtags/closinganglebrackets */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
165 char *match, *ret;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
166
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
167
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
168 s = g_string_sized_new(strlen(x));
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
169
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
170 for (i = 0, xs = strlen(x); i < xs; i++) {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
171 if ((x[i] == 0x1b) && (x[i+1] == '[')) {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
172 j = i + 1;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
173
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
174 while (j++ < xs) {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
175 if (x[j] != 'm')
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
176 continue;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
177 else {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
178 tmp = g_string_new_len(x + i + 2, j - i - 2);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6546
diff changeset
179 if (tmp->str[0] == '#')
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
180 g_string_append_printf(s, "<FONT COLOR=\"%s\">", tmp->str);
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
181 else if ((match = (char *) g_hash_table_lookup(ht, tmp->str)))
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
182 g_string_append(s, match);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
183 else {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
184 gaim_debug(GAIM_DEBUG_ERROR, "yahoo",
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
185 "Unknown ansi code 'ESC[%sm'.\n", tmp->str);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
186 g_string_free(tmp, TRUE);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
187 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
188 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
189
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
190 i = j;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
191 g_string_free(tmp, TRUE);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
192 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
193 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
194 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
195
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
196
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
197 } else if (!nomoreendtags && (x[i] == '<')) {
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
198 j = i;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
199
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
200 while (j++ < xs) {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
201 if (x[j] != '>')
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
202 if (j == xs) {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
203 g_string_append_c(s, '<');
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
204 nomoreendtags = 1;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
205 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
206 else
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
207 continue;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
208 else {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
209 tmp = g_string_new_len(x + i, j - i + 1);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
210 g_string_ascii_down(tmp);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
211
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
212 if ((match = (char *) g_hash_table_lookup(ht, tmp->str)))
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
213 g_string_append(s, match);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
214 else if (!strncmp(tmp->str, "<fade ", 6) ||
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
215 !strncmp(tmp->str, "<alt ", 5) ||
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
216 !strncmp(tmp->str, "<snd ", 5)) {
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
217
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
218 /* remove this if gtkimhtml ever supports any of these */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
219 i = j;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
220 g_string_free(tmp, TRUE);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
221 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
222
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
223 } else if (!strncmp(tmp->str, "<font ", 6)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
224 _font_tags_fix_size(tmp, s);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
225 } else {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
226 g_string_append_c(s, '<');
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
227 g_string_free(tmp, TRUE);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
228 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
229 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
230
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
231 i = j;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
232 g_string_free(tmp, TRUE);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
233 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
234 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
235
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
236 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
237
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
238
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
239
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
240 } else {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
241 g_string_append_c(s, x[i]);
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
242 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
243 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
244
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
245 ret = s->str;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
246 g_string_free(s, FALSE);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
247 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "yahoo_codes_to_html: Returning string: '%s'.\n", ret);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
248 return ret;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
249 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
250
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
251 /* borrowed from gtkimhtml */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
252 #define MAX_FONT_SIZE 7
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
253 #define POINT_SIZE(x) (_point_sizes [MIN ((x), MAX_FONT_SIZE) - 1])
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
254 static gint _point_sizes [] = { 8, 10, 12, 14, 20, 30, 40 };
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
255
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
256 enum fatype { size, color, face, junk };
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
257 typedef struct {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
258 enum fatype type;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
259 union {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
260 int size;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
261 char *color;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
262 char *face;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
263 char *junk;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
264 } u;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
265 } fontattr;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
266
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
267 static void fontattr_free(fontattr *f)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
268 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
269 if (f->type == color)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
270 g_free(f->u.color);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
271 else if (f->type == face)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
272 g_free(f->u.face);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
273 g_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
274 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
275
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
276 static void yahoo_htc_queue_cleanup(GQueue *q)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
277 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
278 char *tmp;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
279
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
280 while ((tmp = g_queue_pop_tail(q)))
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
281 g_free(tmp);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
282 g_queue_free(q);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
283 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
284
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
285 static void _parse_font_tag(const char *src, GString *dest, int *i, int *j,
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
286 int len, GQueue *colors, GQueue *tags, GQueue *ftattr)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
287 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
288
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
289 int m, n, vstart;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
290 gboolean quote = 0, done = 0;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
291
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
292 m = *j;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
293
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
294 while (1) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
295 m++;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
296
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
297 if (m >= len) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
298 g_string_append(dest, &src[*i]);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
299 *i = len;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
300 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
301 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
302
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
303 if (src[m] == '=') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
304 n = vstart = m;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
305 while (1) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
306 n++;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
307
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
308 if (n >= len) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
309 m = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
310 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
311 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
312
6631
a2608d595a32 [gaim-migrate @ 7155]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6629
diff changeset
313 if (src[n] == '"') {
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
314 if (!quote) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
315 quote = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
316 vstart = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
317 continue;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
318 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
319 done = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
320 }
6631
a2608d595a32 [gaim-migrate @ 7155]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6629
diff changeset
321 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
322
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
323 if (!quote && ((src[n] == ' ') || (src[n] == '>')))
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
324 done = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
325
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
326 if (done) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
327 if (!g_ascii_strncasecmp(&src[*j+1], "FACE", m - *j - 1)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
328 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
329
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
330 f = g_new(fontattr, 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
331 f->type = face;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
332 f->u.face = g_strndup(&src[vstart+1], n-vstart-1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
333 if (!ftattr)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
334 ftattr = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
335 g_queue_push_tail(ftattr, f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
336 m = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
337 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
338 } else if (!g_ascii_strncasecmp(&src[*j+1], "SIZE", m - *j - 1)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
339 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
340
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
341 f = g_new(fontattr, 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
342 f->type = size;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
343 f->u.size = POINT_SIZE(strtol(&src[vstart+1], NULL, 10));
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
344 if (!ftattr)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
345 ftattr = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
346 g_queue_push_tail(ftattr, f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
347 m = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
348 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
349 } else if (!g_ascii_strncasecmp(&src[*j+1], "COLOR", m - *j - 1)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
350 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
351
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
352 f = g_new(fontattr, 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
353 f->type = color;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
354 f->u.color = g_strndup(&src[vstart+1], n-vstart-1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
355 if (!ftattr)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
356 ftattr = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
357 g_queue_push_head(ftattr, f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
358 m = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
359 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
360 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
361 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
362
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
363 f = g_new(fontattr, 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
364 f->type = junk;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
365 f->u.junk = g_strndup(&src[*j+1], n-*j);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
366 if (!ftattr)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
367 ftattr = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
368 g_queue_push_tail(ftattr, f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
369 m = n;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
370 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
371 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
372
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
373 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
374 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
375 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
376
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
377 if (src[m] == ' ')
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
378 *j = m;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
379
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
380
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
381
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
382 if (src[m] == '>') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
383 gboolean needendtag = 0;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
384 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
385 GString *tmp = g_string_new(NULL);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
386 char *colorstr;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
387
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
388 if (!g_queue_is_empty(ftattr)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
389 while ((f = g_queue_pop_tail(ftattr))) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
390 switch (f->type) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
391 case size:
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
392 if (!needendtag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
393 needendtag = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
394 g_string_append(dest, "<font ");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
395 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
396
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
397 g_string_append_printf(dest, "size=\"%d\" ", f->u.size);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
398 fontattr_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
399 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
400 case face:
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
401 if (!needendtag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
402 needendtag = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
403 g_string_append(dest, "<font ");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
404 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
405
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
406 g_string_append_printf(dest, "face=\"%s\" ", f->u.face);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
407 fontattr_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
408 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
409 case junk:
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
410 if (!needendtag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
411 needendtag = 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
412 g_string_append(dest, "<font ");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
413 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
414
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
415 g_string_append(dest, f->u.junk);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
416 fontattr_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
417 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
418
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
419 case color:
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
420 if (needendtag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
421 g_string_append(tmp, "</font>");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
422 dest->str[dest->len-1] = '>';
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
423 needendtag = 0;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
424 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
425
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
426 colorstr = g_queue_peek_tail(colors);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
427 g_string_append(tmp, colorstr ? colorstr : "\033[#000000m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
428 g_string_append_printf(dest, "\033[%sm", f->u.color);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
429 g_queue_push_tail(colors, g_strdup_printf("\033[%sm", f->u.color));
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
430 fontattr_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
431 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
432 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
433 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
434
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
435 g_queue_free(ftattr);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
436 ftattr = NULL;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
437
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
438 if (needendtag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
439 dest->str[dest->len-1] = '>';
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
440 g_queue_push_tail(tags, g_strdup("</font>"));
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
441 g_string_free(tmp, TRUE);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
442 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
443 g_queue_push_tail(tags, tmp->str);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
444 g_string_free(tmp, FALSE);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
445 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
446 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
447
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
448 *i = *j = m;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
449 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
450 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
451 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
452
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
453 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
454
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
455 char *yahoo_html_to_codes(const char *src)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
456 {
6631
a2608d595a32 [gaim-migrate @ 7155]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6629
diff changeset
457 int i, j, len;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
458 GString *dest;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
459 char *ret, *esc;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
460 GQueue *colors, *tags;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
461 GQueue *ftattr = NULL;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
462
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
463
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
464 colors = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
465 tags = g_queue_new();
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
466
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
467 dest = g_string_sized_new(strlen(src));
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
468
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
469 for (i = 0, len = strlen(src); i < len; i++) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
470
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
471 if (src[i] == '<') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
472 j = i;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
473
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
474 while (1) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
475 j++;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
476
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
477 if (j >= len) { /* no '>' */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
478 g_string_append_len(dest, &src[i], len - i);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
479 i = len;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
480
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
481 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
482 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
483
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
484 if (src[j] == '<') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
485 g_string_append_len(dest, &src[i], j - i);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
486 i = j - 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
487 if (ftattr) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
488 fontattr *f;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
489
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
490 while ((f = g_queue_pop_head(ftattr)))
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
491 fontattr_free(f);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
492 g_queue_free(ftattr);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
493 ftattr = NULL;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
494 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
495 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
496 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
497
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
498 if (src[j] == ' ') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
499 if (!g_ascii_strncasecmp(&src[i+1], "BODY", j - i - 1)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
500 char *t = strchr(&src[j], '>');
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
501 if (!t) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
502 g_string_append(dest, &src[i]);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
503 i = len;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
504 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
505 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
506 i = t - src;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
507 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
508 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
509 } else if (g_ascii_strncasecmp(&src[i+1], "FONT", j - i - 1)) { /* not interested! */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
510 while (1) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
511 if (++j >= len) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
512 g_string_append(dest, &src[i]);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
513 i = len;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
514 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
515 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
516 if (src[j] == '>') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
517 g_string_append_len(dest, &src[i], j - i + 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
518 i = j;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
519 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
520 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
521 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
522 } else { /* yay we have a font tag */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
523 _parse_font_tag(src, dest, &i, &j, len, colors, tags, ftattr);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
524 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
525
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
526 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
527 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
528
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
529 if (src[j] == '>') {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
530 int sublen = j - i - 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
531
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
532 if (sublen) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
533 if (!g_ascii_strncasecmp(&src[i+1], "B", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
534 g_string_append(dest, "\033[1m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
535 } else if (!g_ascii_strncasecmp(&src[i+1], "/B", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
536 g_string_append(dest, "\033[x1m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
537 } else if (!g_ascii_strncasecmp(&src[i+1], "I", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
538 g_string_append(dest, "\033[2m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
539 } else if (!g_ascii_strncasecmp(&src[i+1], "/I", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
540 g_string_append(dest, "\033[x2m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
541 } else if (!g_ascii_strncasecmp(&src[i+1], "U", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
542 g_string_append(dest, "\033[4m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
543 } else if (!g_ascii_strncasecmp(&src[i+1], "/U", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
544 g_string_append(dest, "\033[x4m");
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
545 } else if (!g_ascii_strncasecmp(&src[i+1], "/BODY", sublen)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
546 /* mmm, </body> tags. *BURP* */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
547 } else if (!g_ascii_strncasecmp(&src[i+1], "/FONT", sublen) && g_queue_peek_tail(tags)) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
548 char *etag, *cl;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
549
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
550 etag = g_queue_pop_tail(tags);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
551 if (etag) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
552 g_string_append(dest, etag);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
553 if (!strcmp(etag, "</font>")) {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
554 cl = g_queue_pop_tail(colors);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
555 if (cl)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
556 g_free(cl);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
557 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
558 g_free(etag);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
559 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
560 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
561 g_string_append_len(dest, &src[i], j - i + 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
562 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
563 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
564 g_string_append_len(dest, &src[i], j - i + 1);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
565 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
566
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
567 i = j;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
568 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
569 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
570
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
571 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
572
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
573 } else {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
574 g_string_append_c(dest, src[i]);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
575 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
576 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
577
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
578 ret = dest->str;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
579 g_string_free(dest, FALSE);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
580
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
581 esc = g_strescape(ret, NULL);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
582 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "yahoo_html_to_codes: Returning string: '%s'.\n", esc);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
583 g_free(esc);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
584
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
585 yahoo_htc_queue_cleanup(colors);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
586 yahoo_htc_queue_cleanup(tags);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
587
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
588 return ret;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
589 }

mercurial