Mercurial > pidgin.yaz
annotate libpurple/protocols/yahoo/util.c @ 30702:6829b27ee4c8
This patch attempts to fix four bugs in the oscar protocol plugin that
were introduced with the X-Status code in Pidgin 2.7.0.
Problem #1 (the remotely-triggerable crash):
The crash happens when a buddy sets an xstatus message containing <desc>
but no closing </desc>, or <title> but no closing </title>. The fix
is to check the result of strstr(closing_tag_name) and do nothing if it
is NULL. This is CVE-2010-2528.
Problem #2:
Fixes potential incorrect parsing of the xstatus string that could result
in an incorrect message being displayed to the libpurple user. Happens if
an xstatus message contains </desc> before <desc>, or </title> before
<title>. The fix is to start looking for the closing tag at the end
of the beginning tag rather than at the beginning of the xstatus xml.
Probably not a security problem, but definitely a bug.
Problem #3:
Fixes potential incorrect parsing of the xstatus string that could result
in the title not being shown to the libpurple user. Happens if the close
title tag appears after the desc tag in the xstatus xml, because we add a
null character at the beginning of the close title tag, so strstr() for
the desc tag would stop searching there. Probably not a security problem,
but definitely a bug.
Problem #4:
Fixes potential incorrect display of the xstatus string that could result
in an incorrect message being displayed to the libpurple user. Happens
because we reusing the 'xml' string when preparing the string for the user,
but we copy values from xml to xml. If those values overlap with themselves
or with each other then an incorrect value could be displayed. Probably not
a security problem, but definitely a bug.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 21 Jul 2010 02:49:23 +0000 |
parents | 984217629ec9 |
children | 81ffeb069847 64cb8836133e |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15823 | 2 * purple |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 * Some code copyright 2003 Tim Ringenbach <omarvo@hotmail.com> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * (marv on irc.freenode.net) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
6 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19197
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
22 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 #include "config.h" |
27193
510f07e1f5c1
Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <mark@kingant.net>
parents:
23916
diff
changeset
|
25 #endif /* HAVE_CONFIG_H */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "prpl.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 |
27395
ef5f0cde8d74
Update for file renames.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
27384
diff
changeset
|
31 #include "libymsg.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 #include <string.h> |
23916
18a1f0fe5f40
Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23033
diff
changeset
|
34 |
18a1f0fe5f40
Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23033
diff
changeset
|
35 gboolean |
30608
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
36 yahoo_account_use_http_proxy(PurpleConnection *pc) |
23916
18a1f0fe5f40
Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23033
diff
changeset
|
37 { |
30608
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
38 PurpleAccount *account = purple_connection_get_account(pc); |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
39 PurpleProxyInfo *ppi = NULL; |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
40 PurpleProxyType type = PURPLE_PROXY_NONE; |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
41 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
42 |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
43 if(proxy_ssl) |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
44 ppi = purple_proxy_get_setup(account); |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
45 else |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
46 ppi = purple_global_proxy_get_info(); |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
47 |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
48 type = purple_proxy_info_get_type(ppi); |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
49 |
984217629ec9
Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
29394
diff
changeset
|
50 return (type == PURPLE_PROXY_HTTP || type == PURPLE_PROXY_USE_ENVVAR); |
23916
18a1f0fe5f40
Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23033
diff
changeset
|
51 } |
18a1f0fe5f40
Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23033
diff
changeset
|
52 |
22018
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
53 /* |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
54 * Returns cookies formatted as a null terminated string for the given connection. |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
55 * Must g_free return value. |
27193
510f07e1f5c1
Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <mark@kingant.net>
parents:
23916
diff
changeset
|
56 * |
22018
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
57 * TODO:will work, but must test for strict correctness |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
58 */ |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
59 gchar* yahoo_get_cookies(PurpleConnection *gc) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
60 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
61 gchar *ans = NULL; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
62 gchar *cur; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
63 char firstflag = 1; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
64 gchar *t1,*t2,*t3; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
65 GSList *tmp; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
66 GSList *cookies; |
28025
908be3822215
Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
27501
diff
changeset
|
67 cookies = ((YahooData*)(gc->proto_data))->cookies; |
22018
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
68 tmp = cookies; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
69 while(tmp) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
70 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
71 cur = tmp->data; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
72 t1 = ans; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
73 t2 = g_strrstr(cur, ";expires="); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
74 if(t2 == NULL) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
75 t2 = g_strrstr(cur, "; expires="); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
76 if(t2 == NULL) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
77 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
78 if(firstflag) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
79 ans = g_strdup_printf("%c=%s", cur[0], cur+2); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
80 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
81 ans = g_strdup_printf("%s; %c=%s", t1, cur[0], cur+2); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
82 } |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
83 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
84 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
85 t3 = strstr(t2+1, ";"); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
86 if(t3 != NULL) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
87 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
88 t2[0] = '\0'; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
89 |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
90 if(firstflag) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
91 ans = g_strdup_printf("%c=%s%s", cur[0], cur+2, t3); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
92 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
93 ans = g_strdup_printf("%s; %c=%s%s", t1, cur[0], cur+2, t3); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
94 |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
95 t2[0] = ';'; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
96 } |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
97 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
98 { |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
99 t2[0] = '\0'; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
100 |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
101 if(firstflag) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
102 ans = g_strdup_printf("%c=%s", cur[0], cur+2); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
103 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
104 ans = g_strdup_printf("%s; %c=%s", t1, cur[0], cur+2); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
105 |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
106 t2[0] = ';'; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
107 } |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
108 } |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
109 if(firstflag) |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
110 firstflag = 0; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
111 else |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
112 g_free(t1); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
113 tmp = g_slist_next(tmp); |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
114 } |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
115 return ans; |
118046227581
This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan <madthanu@gmail.com>
parents:
21831
diff
changeset
|
116 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 /** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 * Encode some text to send to the yahoo server. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 * @param gc The connection handle. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 * @param str The null terminated utf8 string to encode. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 * @param utf8 If not @c NULL, whether utf8 is okay or not. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 * Even if it is okay, we may not use it. If we |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 * used it, we set this to @c TRUE, else to |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 * @c FALSE. If @c NULL, false is assumed, and |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 * it is not dereferenced. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 * @return The g_malloced string in the appropriate encoding. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 */ |
15823 | 130 char *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean *utf8) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 { |
28025
908be3822215
Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
27501
diff
changeset
|
132 YahooData *yd = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 char *ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 const char *to_codeset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 |
23033
bf7ce9629402
applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22155
diff
changeset
|
136 if (yd->jp) |
bf7ce9629402
applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22155
diff
changeset
|
137 return g_strdup(str); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 if (utf8 && *utf8) /* FIXME: maybe don't use utf8 if it'll fit in latin1 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 return g_strdup(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 |
23033
bf7ce9629402
applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22155
diff
changeset
|
142 to_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1"); |
bf7ce9629402
applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22155
diff
changeset
|
143 ret = g_convert_with_fallback(str, -1, to_codeset, "UTF-8", "?", NULL, NULL, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 if (ret) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 return g_strdup(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 /** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 * Decode some text received from the server. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 * @param gc The gc handle. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 * @param str The null terminated string to decode. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 * @param utf8 Did the server tell us it was supposed to be utf8? |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 * @return The decoded, utf-8 string, which must be g_free()'d. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 */ |
15823 | 159 char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 { |
28025
908be3822215
Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
27501
diff
changeset
|
161 YahooData *yd = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 char *ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 const char *from_codeset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 if (utf8) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 if (g_utf8_validate(str, -1, NULL)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 return g_strdup(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 if (yd->jp) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 from_codeset = "SHIFT_JIS"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 else |
15823 | 173 from_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 |
19197
47942d19f301
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <daniel.atallah@gmail.com>
parents:
16109
diff
changeset
|
175 ret = g_convert_with_fallback(str, -1, "UTF-8", from_codeset, NULL, NULL, NULL, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 if (ret) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 return g_strdup(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 |
22123
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
183 char *yahoo_convert_to_numeric(const char *str) |
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
184 { |
22134
33abfb98a460
Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22123
diff
changeset
|
185 GString *gstr = NULL; |
22155
a886e43210b1
Fix (hopefully) the last problem in this function. Refs #3295.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22134
diff
changeset
|
186 const unsigned char *p; |
22123
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
187 |
22134
33abfb98a460
Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22123
diff
changeset
|
188 gstr = g_string_sized_new(strlen(str) * 6 + 1); |
33abfb98a460
Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22123
diff
changeset
|
189 |
22155
a886e43210b1
Fix (hopefully) the last problem in this function. Refs #3295.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22134
diff
changeset
|
190 for (p = (unsigned char *)str; *p; p++) { |
22134
33abfb98a460
Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22123
diff
changeset
|
191 g_string_append_printf(gstr, "&#%u;", *p); |
22123
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
192 } |
22134
33abfb98a460
Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22123
diff
changeset
|
193 |
28080 | 194 return g_string_free(gstr, FALSE); |
22123
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
195 } |
840e7e1b6dac
disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33'
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22121
diff
changeset
|
196 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 /* |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
198 * The values in this hash table should probably be lowercase, since that's |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
199 * what xhtml expects. Also because yahoo_codes_to_html() does |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
200 * case-sensitive comparisons. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
201 * |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 * I found these on some website but i don't know that they actually |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 * work (or are supposed to work). I didn't implement them yet. |
27193
510f07e1f5c1
Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <mark@kingant.net>
parents:
23916
diff
changeset
|
204 * |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
205 * [0;30m ---black |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
206 * [1;37m ---white |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
207 * [0;37m ---tan |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
208 * [0;38m ---light black |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
209 * [1;39m ---dark blue |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
210 * [0;32m ---green |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
211 * [0;33m ---yellow |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
212 * [0;35m ---pink |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
213 * [1;35m ---purple |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
214 * [1;30m ---light blue |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
215 * [0;31m ---red |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
216 * [0;34m ---blue |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
217 * [0;36m ---aqua |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
218 * (shift+comma)lyellow(shift+period) ---light yellow |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
219 * (shift+comma)lgreen(shift+period) ---light green |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
220 * [2;30m <--white out |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
221 */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
223 static GHashTable *esc_codes_ht = NULL; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
224 static GHashTable *tags_ht = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 void yahoo_init_colorht() |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
228 if (esc_codes_ht != NULL) |
27501
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
229 /* Hash table has already been initialized */ |
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
230 return; |
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
231 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
232 /* Key is the escape code string. Value is the HTML that should be |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
233 * inserted in place of the escape code. */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
234 esc_codes_ht = g_hash_table_new(g_str_hash, g_str_equal); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
235 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
236 /* Key is the name of the HTML tag, for example "font" or "/font" |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
237 * value is the HTML that should be inserted in place of the old tag */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
238 tags_ht = g_hash_table_new(g_str_hash, g_str_equal); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
239 |
27501
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
240 /* the numbers in comments are what gyach uses, but i think they're incorrect */ |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
241 #ifdef USE_CSS_FORMATTING |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
242 g_hash_table_insert(esc_codes_ht, "30", "<span style=\"color: #000000\">"); /* black */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
243 g_hash_table_insert(esc_codes_ht, "31", "<span style=\"color: #0000FF\">"); /* blue */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
244 g_hash_table_insert(esc_codes_ht, "32", "<span style=\"color: #008080\">"); /* cyan */ /* 00b2b2 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
245 g_hash_table_insert(esc_codes_ht, "33", "<span style=\"color: #808080\">"); /* gray */ /* 808080 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
246 g_hash_table_insert(esc_codes_ht, "34", "<span style=\"color: #008000\">"); /* green */ /* 00c200 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
247 g_hash_table_insert(esc_codes_ht, "35", "<span style=\"color: #FF0080\">"); /* pink */ /* ffafaf */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
248 g_hash_table_insert(esc_codes_ht, "36", "<span style=\"color: #800080\">"); /* purple */ /* b200b2 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
249 g_hash_table_insert(esc_codes_ht, "37", "<span style=\"color: #FF8000\">"); /* orange */ /* ffff00 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
250 g_hash_table_insert(esc_codes_ht, "38", "<span style=\"color: #FF0000\">"); /* red */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
251 g_hash_table_insert(esc_codes_ht, "39", "<span style=\"color: #808000\">"); /* olive */ /* 546b50 */ |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
252 #else |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
253 g_hash_table_insert(esc_codes_ht, "30", "<font color=\"#000000\">"); /* black */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
254 g_hash_table_insert(esc_codes_ht, "31", "<font color=\"#0000FF\">"); /* blue */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
255 g_hash_table_insert(esc_codes_ht, "32", "<font color=\"#008080\">"); /* cyan */ /* 00b2b2 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
256 g_hash_table_insert(esc_codes_ht, "33", "<font color=\"#808080\">"); /* gray */ /* 808080 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
257 g_hash_table_insert(esc_codes_ht, "34", "<font color=\"#008000\">"); /* green */ /* 00c200 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
258 g_hash_table_insert(esc_codes_ht, "35", "<font color=\"#FF0080\">"); /* pink */ /* ffafaf */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
259 g_hash_table_insert(esc_codes_ht, "36", "<font color=\"#800080\">"); /* purple */ /* b200b2 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
260 g_hash_table_insert(esc_codes_ht, "37", "<font color=\"#FF8000\">"); /* orange */ /* ffff00 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
261 g_hash_table_insert(esc_codes_ht, "38", "<font color=\"#FF0000\">"); /* red */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
262 g_hash_table_insert(esc_codes_ht, "39", "<font color=\"#808000\">"); /* olive */ /* 546b50 */ |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
263 #endif /* !USE_CSS_FORMATTING */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
265 g_hash_table_insert(esc_codes_ht, "1", "<b>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
266 g_hash_table_insert(esc_codes_ht, "x1", "</b>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
267 g_hash_table_insert(esc_codes_ht, "2", "<i>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
268 g_hash_table_insert(esc_codes_ht, "x2", "</i>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
269 g_hash_table_insert(esc_codes_ht, "4", "<u>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
270 g_hash_table_insert(esc_codes_ht, "x4", "</u>"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 /* these just tell us the text they surround is supposed |
15823 | 273 * to be a link. purple figures that out on its own so we |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 * just ignore it. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 */ |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
276 g_hash_table_insert(esc_codes_ht, "l", ""); /* link start */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
277 g_hash_table_insert(esc_codes_ht, "xl", ""); /* link end */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
278 |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
279 #ifdef USE_CSS_FORMATTING |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
280 g_hash_table_insert(tags_ht, "black", "<span style=\"color: #000000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
281 g_hash_table_insert(tags_ht, "blue", "<span style=\"color: #0000FF\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
282 g_hash_table_insert(tags_ht, "cyan", "<span style=\"color: #008284\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
283 g_hash_table_insert(tags_ht, "gray", "<span style=\"color: #848284\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
284 g_hash_table_insert(tags_ht, "green", "<span style=\"color: #008200\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
285 g_hash_table_insert(tags_ht, "pink", "<span style=\"color: #FF0084\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
286 g_hash_table_insert(tags_ht, "purple", "<span style=\"color: #840084\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
287 g_hash_table_insert(tags_ht, "orange", "<span style=\"color: #FF8000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
288 g_hash_table_insert(tags_ht, "red", "<span style=\"color: #FF0000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
289 g_hash_table_insert(tags_ht, "yellow", "<span style=\"color: #848200\">"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
291 g_hash_table_insert(tags_ht, "/black", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
292 g_hash_table_insert(tags_ht, "/blue", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
293 g_hash_table_insert(tags_ht, "/cyan", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
294 g_hash_table_insert(tags_ht, "/gray", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
295 g_hash_table_insert(tags_ht, "/green", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
296 g_hash_table_insert(tags_ht, "/pink", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
297 g_hash_table_insert(tags_ht, "/purple", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
298 g_hash_table_insert(tags_ht, "/orange", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
299 g_hash_table_insert(tags_ht, "/red", "</span>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
300 g_hash_table_insert(tags_ht, "/yellow", "</span>"); |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
301 #else |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
302 g_hash_table_insert(tags_ht, "black", "<font color=\"#000000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
303 g_hash_table_insert(tags_ht, "blue", "<font color=\"#0000FF\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
304 g_hash_table_insert(tags_ht, "cyan", "<font color=\"#008284\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
305 g_hash_table_insert(tags_ht, "gray", "<font color=\"#848284\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
306 g_hash_table_insert(tags_ht, "green", "<font color=\"#008200\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
307 g_hash_table_insert(tags_ht, "pink", "<font color=\"#FF0084\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
308 g_hash_table_insert(tags_ht, "purple", "<font color=\"#840084\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
309 g_hash_table_insert(tags_ht, "orange", "<font color=\"#FF8000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
310 g_hash_table_insert(tags_ht, "red", "<font color=\"#FF0000\">"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
311 g_hash_table_insert(tags_ht, "yellow", "<font color=\"#848200\">"); |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
312 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
313 g_hash_table_insert(tags_ht, "/black", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
314 g_hash_table_insert(tags_ht, "/blue", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
315 g_hash_table_insert(tags_ht, "/cyan", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
316 g_hash_table_insert(tags_ht, "/gray", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
317 g_hash_table_insert(tags_ht, "/green", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
318 g_hash_table_insert(tags_ht, "/pink", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
319 g_hash_table_insert(tags_ht, "/purple", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
320 g_hash_table_insert(tags_ht, "/orange", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
321 g_hash_table_insert(tags_ht, "/red", "</font>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
322 g_hash_table_insert(tags_ht, "/yellow", "</font>"); |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
323 #endif /* !USE_CSS_FORMATTING */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
325 /* We don't support these tags, so discard them */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
326 g_hash_table_insert(tags_ht, "alt", ""); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
327 g_hash_table_insert(tags_ht, "fade", ""); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
328 g_hash_table_insert(tags_ht, "snd", ""); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
329 g_hash_table_insert(tags_ht, "/alt", ""); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
330 g_hash_table_insert(tags_ht, "/fade", ""); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
332 /* Official clients don't seem to send b, i or u tags. They use |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
333 * the escape codes listed above. Official clients definitely send |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
334 * font tags, though. I wonder if we can remove the opening and |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
335 * closing b, i and u tags from here? */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
336 g_hash_table_insert(tags_ht, "b", "<b>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
337 g_hash_table_insert(tags_ht, "i", "<i>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
338 g_hash_table_insert(tags_ht, "u", "<u>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
339 g_hash_table_insert(tags_ht, "font", "<font>"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
341 g_hash_table_insert(tags_ht, "/b", "</b>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
342 g_hash_table_insert(tags_ht, "/i", "</i>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
343 g_hash_table_insert(tags_ht, "/u", "</u>"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
344 g_hash_table_insert(tags_ht, "/font", "</font>"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 void yahoo_dest_colorht() |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
349 if (esc_codes_ht == NULL) |
27501
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
350 /* Hash table has already been destroyed */ |
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
351 return; |
8368e4fb7d3a
Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <mark@kingant.net>
parents:
27395
diff
changeset
|
352 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
353 g_hash_table_destroy(esc_codes_ht); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
354 esc_codes_ht = NULL; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
355 g_hash_table_destroy(tags_ht); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
356 tags_ht = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
359 #ifndef USE_CSS_FORMATTING |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 static int point_to_html(int x) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 if (x < 9) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 return 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 if (x < 11) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 return 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 if (x < 13) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
367 return 3; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 if (x < 17) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 return 4; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 if (x < 25) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 return 5; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 if (x < 35) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 return 6; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 return 7; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
375 } |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
376 #endif /* !USE_CSS_FORMATTING */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
378 static void append_attrs_datalist_foreach_cb(GQuark key_id, gpointer data, gpointer user_data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
380 const char *key; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
381 const char *value; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
382 xmlnode *cur; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
383 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
384 key = g_quark_to_string(key_id); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
385 value = data; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
386 cur = user_data; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
387 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
388 xmlnode_set_attrib(cur, key, value); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
389 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
391 /** |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
392 * @param cur A pointer to the position in the XML tree that we're |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
393 * currently building. This will be modified when opening a tag |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
394 * or closing an existing tag. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
395 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
396 static void yahoo_codes_to_html_add_tag(xmlnode **cur, const char *tag, gboolean is_closing_tag, const gchar *tag_name, gboolean is_font_tag) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
397 { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
398 if (is_closing_tag) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
399 xmlnode *tmp; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
400 GSList *dangling_tags = NULL; |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
401 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
402 /* Move up the DOM until we find the opening tag */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
403 for (tmp = *cur; tmp != NULL; tmp = xmlnode_get_parent(tmp)) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
404 /* Add one to tag_name when doing this comparison because it starts with a / */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
405 if (g_str_equal(tmp->name, tag_name + 1)) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
406 /* Found */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
407 break; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
408 dangling_tags = g_slist_prepend(dangling_tags, tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
409 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
410 if (tmp == NULL) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
411 /* This is a closing tag with no opening tag. Useless. */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
412 purple_debug_error("yahoo", "Ignoring unmatched tag %s", tag); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
413 g_slist_free(dangling_tags); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 } |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
416 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
417 /* Move our current position up, now that we've closed a tag */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
418 *cur = xmlnode_get_parent(tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
419 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
420 /* Re-open any tags that were nested below the tag we just closed */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
421 while (dangling_tags != NULL) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
422 tmp = dangling_tags->data; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
423 dangling_tags = g_slist_delete_link(dangling_tags, dangling_tags); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
424 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
425 /* Create a copy of this tag+attributes (but not child tags or |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
426 * data) at our new location */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
427 *cur = xmlnode_new_child(*cur, tmp->name); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
428 for (tmp = tmp->child; tmp != NULL; tmp = tmp->next) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
429 if (tmp->type == XMLNODE_TYPE_ATTRIB) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
430 xmlnode_set_attrib_full(*cur, tmp->name, |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
431 tmp->xmlns, tmp->prefix, tmp->data); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
432 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
433 } else { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
434 const char *start; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
435 const char *end; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
436 GData *attributes; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
437 char *fontsize = NULL; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
438 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
439 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
440 *cur = xmlnode_new_child(*cur, tag_name); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
441 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
442 if (is_font_tag) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
443 /* Special case for the font size attribute */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
444 fontsize = g_strdup(g_datalist_get_data(&attributes, "size")); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
445 if (fontsize != NULL) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
446 g_datalist_remove_data(&attributes, "size"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
447 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
448 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
449 /* Add all font tag attributes */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
450 g_datalist_foreach(&attributes, append_attrs_datalist_foreach_cb, *cur); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
451 g_datalist_clear(&attributes); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
452 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
453 if (fontsize != NULL) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
454 #ifdef USE_CSS_FORMATTING |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
455 /* |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
456 * The Yahoo font size value is given in pt, even though the HTML |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
457 * standard for <font size="x"> treats the size as a number on a |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
458 * scale between 1 and 7. So we insert the font size as a CSS |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
459 * style on a span tag. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
460 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
461 gchar *tmp = g_strdup_printf("font-size: %spt", fontsize); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
462 *cur = xmlnode_new_child(*cur, "span"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
463 xmlnode_set_attrib(*cur, "style", tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
464 g_free(tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
465 #else |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
466 /* |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
467 * The Yahoo font size value is given in pt, even though the HTML |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
468 * standard for <font size="x"> treats the size as a number on a |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
469 * scale between 1 and 7. So we convert it to an appropriate |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
470 * value. This loses precision, which is why CSS formatting is |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
471 * preferred. The "absz" attribute remains here for backward |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
472 * compatibility with UIs that might use it, but it is totally |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
473 * not standard at all. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
474 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
475 int size, htmlsize; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
476 gchar tmp[11]; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
477 size = strtol(fontsize, NULL, 10); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
478 htmlsize = point_to_html(size); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
479 sprintf(tmp, "%u", htmlsize); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
480 xmlnode_set_attrib(*cur, "size", tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
481 xmlnode_set_attrib(*cur, "absz", fontsize); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
482 #endif /* !USE_CSS_FORMATTING */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
483 g_free(fontsize); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
484 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
485 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
486 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
487 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
488 /** |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
489 * Similar to purple_markup_get_tag_name(), but works with closing tags. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
490 * |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
491 * @return The lowercase name of the tag. If this is a closing tag then |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
492 * this value starts with a forward slash. The caller must free |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
493 * this string with g_free. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
494 */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
495 static gchar *yahoo_markup_get_tag_name(const char *tag, gboolean *is_closing_tag) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
496 { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
497 size_t len; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
498 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
499 *is_closing_tag = (tag[1] == '/'); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
500 if (*is_closing_tag) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
501 len = strcspn(tag + 1, "> "); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
502 else |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
503 len = strcspn(tag + 1, "> /"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
504 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
505 return g_utf8_strdown(tag + 1, len); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
506 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
507 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
508 /* |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
509 * Yahoo! messages generally aren't well-formed. Their markup is |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
510 * more of a flow from start to finish rather than a hierarchy from |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
511 * outer to inner. They tend to open tags and close them only when |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
512 * necessary. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
513 * |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
514 * Example: <font size="8">size 8 <font size="16">size 16 <font size="8">size 8 again |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
515 * |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
516 * But we want to send well-formed HTML to the core, so we step through |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
517 * the input string and build an xmlnode tree containing sanitized HTML. |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
518 */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 char *yahoo_codes_to_html(const char *x) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
520 { |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
521 size_t x_len; |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
522 xmlnode *html, *cur; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
523 GString *cdata = g_string_new(NULL); |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
524 int i, j; |
28108
2b3a9a68e0bc
Of course I got it backwards
Mark Doliner <mark@kingant.net>
parents:
28107
diff
changeset
|
525 gboolean no_more_gt_brackets = FALSE; |
28104
70219821df98
Make match a const char *, and remove two unnecessary casts
Mark Doliner <mark@kingant.net>
parents:
28103
diff
changeset
|
526 const char *match; |
28376
83a3b3b5976a
Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <mark@kingant.net>
parents:
28369
diff
changeset
|
527 gchar *xmlstr1, *xmlstr2, *esc; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
529 x_len = strlen(x); |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
530 html = xmlnode_new("html"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
532 cur = html; |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
533 for (i = 0; i < x_len; i++) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 if ((x[i] == 0x1b) && (x[i+1] == '[')) { |
28107 | 535 /* This escape sequence signifies the beginning of some |
536 * text formatting code */ | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 j = i + 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
539 while (j++ < x_len) { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
540 gchar *code; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
541 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 if (x[j] != 'm') |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
543 /* Keep looking for the end of this sequence */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 continue; |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
545 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
546 /* We've reached the end of the formatting sequence, yay */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
547 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
548 /* Append any character data that belongs in the current node */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
549 if (cdata->len > 0) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
550 xmlnode_insert_data(cur, cdata->str, cdata->len); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
551 g_string_truncate(cdata, 0); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
552 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
553 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
554 code = g_strndup(x + i + 2, j - i - 2); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
555 if (code[0] == '#') { |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
556 #ifdef USE_CSS_FORMATTING |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
557 gchar *tmp = g_strdup_printf("color: %s", code); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
558 cur = xmlnode_new_child(cur, "span"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
559 xmlnode_set_attrib(cur, "style", tmp); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
560 g_free(tmp); |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
561 #else |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
562 cur = xmlnode_new_child(cur, "font"); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
563 xmlnode_set_attrib(cur, "color", code); |
28116
07de864fc024
Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <mark@kingant.net>
parents:
28108
diff
changeset
|
564 #endif /* !USE_CSS_FORMATTING */ |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
565 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
566 } else if ((match = g_hash_table_lookup(esc_codes_ht, code))) { |
28348
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
567 /* Some tags are in the hash table only because we |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
568 * want to ignore them */ |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
569 if (match[0] != '\0') { |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
570 gboolean is_closing_tag; |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
571 gchar *tag_name; |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
572 tag_name = yahoo_markup_get_tag_name(match, &is_closing_tag); |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
573 yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE); |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
574 g_free(tag_name); |
617e7a90b69c
Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <mark@kingant.net>
parents:
28172
diff
changeset
|
575 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
576 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
577 } else { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
578 purple_debug_error("yahoo", |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
579 "Ignoring unknown ansi code 'ESC[%sm'.\n", code); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
580 } |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
581 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
582 g_free(code); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
583 i = j; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
584 break; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
585 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
587 } else if (x[i] == '<' && !no_more_gt_brackets) { |
28107 | 588 /* The start of an HTML tag */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 j = i; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
591 while (j++ < x_len) { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
592 gchar *tag; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
593 gboolean is_closing_tag; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
594 gchar *tag_name; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
595 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
596 if (x[j] != '>') { |
28171
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
597 if (x[j] == '"') { |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
598 /* We're inside a quoted attribute value. Skip to the end */ |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
599 j++; |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
600 while (j != x_len && x[j] != '"') |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
601 j++; |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
602 } else if (x[j] == '\'') { |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
603 /* We're inside a quoted attribute value. Skip to the end */ |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
604 j++; |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
605 while (j != x_len && x[j] != '\'') |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
606 j++; |
f6dab0e7a817
Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <mark@kingant.net>
parents:
28168
diff
changeset
|
607 } |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
608 if (j != x_len) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
609 /* Keep looking for the end of this tag */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
610 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
612 /* This < has no corresponding > */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
613 g_string_append_c(cdata, x[i]); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
614 no_more_gt_brackets = TRUE; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
615 break; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
616 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
617 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
618 tag = g_strndup(x + i, j - i + 1); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
619 tag_name = yahoo_markup_get_tag_name(tag, &is_closing_tag); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
621 match = g_hash_table_lookup(tags_ht, tag_name); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
622 if (match == NULL) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
623 /* Unknown tag. The user probably typed a less-than sign */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
624 g_string_append_c(cdata, x[i]); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
625 g_free(tag); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
626 g_free(tag_name); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
627 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
628 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
630 /* Some tags are in the hash table only because we |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
631 * want to ignore them */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
632 if (match[0] != '\0') { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
633 /* Append any character data that belongs in the current node */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
634 if (cdata->len > 0) { |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
635 xmlnode_insert_data(cur, cdata->str, cdata->len); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
636 g_string_truncate(cdata, 0); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
637 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
638 if (g_str_equal(tag_name, "font")) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
639 /* Font tags are a special case. We don't |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
640 * necessarily want to replace the whole thing-- |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
641 * we just want to fix the size attribute. */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
642 yahoo_codes_to_html_add_tag(&cur, tag, is_closing_tag, tag_name, TRUE); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
643 else |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
644 yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
645 } |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
646 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
647 i = j; |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
648 g_free(tag); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
649 g_free(tag_name); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
650 break; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
651 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
652 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
653 } else { |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
654 g_string_append_c(cdata, x[i]); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
655 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
658 /* Append any remaining character data */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
659 if (cdata->len > 0) |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
660 xmlnode_insert_data(cur, cdata->str, cdata->len); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
661 g_string_free(cdata, TRUE); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
662 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
663 /* Serialize our HTML */ |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
664 xmlstr1 = xmlnode_to_str(html, NULL); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
665 xmlnode_free(html); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
666 |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
667 /* Strip off the outter HTML node */ |
28165
5eca0f387c13
Make this enum follow our naming conventions a little better
Mark Doliner <mark@kingant.net>
parents:
28155
diff
changeset
|
668 /* This probably isn't necessary, especially if we made the outter HTML |
5eca0f387c13
Make this enum follow our naming conventions a little better
Mark Doliner <mark@kingant.net>
parents:
28155
diff
changeset
|
669 * node an empty span. But the HTML is simpler this way. */ |
29020
f4a95b3424d1
Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <stu@nosnilmot.com>
parents:
28836
diff
changeset
|
670 if (!purple_strequal(xmlstr1, "<html/>")) |
f4a95b3424d1
Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <stu@nosnilmot.com>
parents:
28836
diff
changeset
|
671 xmlstr2 = g_strndup(xmlstr1 + 6, strlen(xmlstr1) - 13); |
f4a95b3424d1
Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <stu@nosnilmot.com>
parents:
28836
diff
changeset
|
672 else |
f4a95b3424d1
Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <stu@nosnilmot.com>
parents:
28836
diff
changeset
|
673 xmlstr2 = g_strdup(""); |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
674 g_free(xmlstr1); |
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
675 |
28376
83a3b3b5976a
Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <mark@kingant.net>
parents:
28369
diff
changeset
|
676 esc = g_strescape(x, NULL); |
83a3b3b5976a
Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <mark@kingant.net>
parents:
28369
diff
changeset
|
677 purple_debug_misc("yahoo", "yahoo_codes_to_html(%s)=%s\n", esc, xmlstr2); |
83a3b3b5976a
Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <mark@kingant.net>
parents:
28369
diff
changeset
|
678 g_free(esc); |
83a3b3b5976a
Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <mark@kingant.net>
parents:
28369
diff
changeset
|
679 |
28155
1e02e65ce301
Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <mark@kingant.net>
parents:
28119
diff
changeset
|
680 return xmlstr2; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
681 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
682 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 /* borrowed from gtkimhtml */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
684 #define MAX_FONT_SIZE 7 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 #define POINT_SIZE(x) (_point_sizes [MIN ((x > 0 ? x : 1), MAX_FONT_SIZE) - 1]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 static const gint _point_sizes [] = { 8, 10, 12, 14, 20, 30, 40 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
687 |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
688 typedef struct |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
689 { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
690 gboolean bold; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
691 gboolean italic; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
692 gboolean underline; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
693 gboolean in_link; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
694 int font_size; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
695 char *font_face; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
696 char *font_color; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
697 } CurrentMsgState; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
698 |
28166
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
699 static void yahoo_htc_list_cleanup(GSList *l) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
700 { |
28166
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
701 while (l != NULL) { |
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
702 g_free(l->data); |
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
703 l = g_slist_delete_link(l, l); |
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
704 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
705 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
706 |
28378
6b446431b2b0
This function no longer needs these two parameters
Mark Doliner <mark@kingant.net>
parents:
28377
diff
changeset
|
707 static void parse_font_tag(GString *dest, const char *tag_name, const char *tag, |
6b446431b2b0
This function no longer needs these two parameters
Mark Doliner <mark@kingant.net>
parents:
28377
diff
changeset
|
708 GSList **colors, GSList **tags) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
709 { |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
710 const char *start; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
711 const char *end; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
712 GData *attributes; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
713 const char *attribute; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
714 gboolean needendtag; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
715 GString *tmp; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
716 |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
717 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
718 |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
719 needendtag = FALSE; |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
720 tmp = g_string_new(NULL); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
721 |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
722 attribute = g_datalist_get_data(&attributes, "color"); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
723 if (attribute != NULL) { |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
724 g_string_append(tmp, *colors ? (*colors)->data : "\033[#000000m"); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
725 g_string_append_printf(dest, "\033[%sm", attribute); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
726 *colors = g_slist_prepend(*colors, |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
727 g_strdup_printf("\033[%sm", attribute)); |
28383
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
728 } else { |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
729 /* We need to add a value to the colors stack even if we're not |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
730 * setting a color because we ALWAYS pop exactly 1 element from |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
731 * this stack for every </font> tag. If we don't add anything |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
732 * then we'll pop something that we shouldn't when we hit this |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
733 * corresponding </font>. */ |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
734 *colors = g_slist_prepend(*colors, |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
735 *colors ? g_strdup((*colors)->data) : g_strdup("\033[#000000m")); |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
736 } |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
737 |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
738 attribute = g_datalist_get_data(&attributes, "face"); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
739 if (attribute != NULL) { |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
740 needendtag = TRUE; |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
741 g_string_append(dest, "<font "); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
742 g_string_append_printf(dest, "face=\"%s\" ", attribute); |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
743 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
744 |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
745 attribute = g_datalist_get_data(&attributes, "size"); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
746 if (attribute != NULL) { |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
747 if (!needendtag) { |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
748 needendtag = TRUE; |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
749 g_string_append(dest, "<font "); |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
750 } |
28368
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
751 |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
752 g_string_append_printf(dest, "size=\"%d\" ", |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
753 POINT_SIZE(strtol(attribute, NULL, 10))); |
28368
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
754 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
755 |
28368
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
756 if (needendtag) { |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
757 dest->str[dest->len-1] = '>'; |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
758 *tags = g_slist_prepend(*tags, g_strdup("</font>")); |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
759 g_string_free(tmp, TRUE); |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
760 } else { |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
761 *tags = g_slist_prepend(*tags, tmp->str); |
8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <mark@kingant.net>
parents:
28367
diff
changeset
|
762 g_string_free(tmp, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
763 } |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
764 |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
765 g_datalist_clear(&attributes); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
766 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
768 char *yahoo_html_to_codes(const char *src) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
769 { |
28166
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
770 GSList *colors = NULL; |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
771 |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
772 /** |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
773 * A stack of char*s where each char* is the string that should be |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
774 * appended to dest in order to close all the tags that were opened |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
775 * by a <font> tag. |
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
776 */ |
28166
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
777 GSList *tags = NULL; |
28369
5ff49aa05439
Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <mark@kingant.net>
parents:
28368
diff
changeset
|
778 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
779 size_t src_len; |
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
780 int i, j; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
781 GString *dest; |
28080 | 782 char *esc; |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
783 gboolean no_more_gt_brackets = FALSE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
784 gchar *tag, *tag_name; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
785 gboolean is_closing_tag; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
786 CurrentMsgState current_state; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
787 |
28377
69793158765c
use memset instead of bzero for better portability and profit
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28376
diff
changeset
|
788 memset(¤t_state, 0, sizeof(current_state)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
789 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
790 src_len = strlen(src); |
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
791 dest = g_string_sized_new(src_len); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
792 |
28103
8660d8bc467c
Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <mark@kingant.net>
parents:
28102
diff
changeset
|
793 for (i = 0; i < src_len; i++) { |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
794 if (src[i] == '<' && !no_more_gt_brackets) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
795 /* The start of an HTML tag */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
796 j = i; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
797 |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
798 while (j++ < src_len) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
799 if (src[j] != '>') { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
800 if (src[j] == '"') { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
801 /* We're inside a quoted attribute value. Skip to the end */ |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
802 j++; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
803 while (j != src_len && src[j] != '"') |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
804 j++; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
805 } else if (src[j] == '\'') { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
806 /* We're inside a quoted attribute value. Skip to the end */ |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
807 j++; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
808 while (j != src_len && src[j] != '\'') |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
809 j++; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
810 } |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
811 if (j != src_len) |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
812 /* Keep looking for the end of this tag */ |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
813 continue; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
814 |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
815 /* This < has no corresponding > */ |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
816 g_string_append_c(dest, src[i]); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
817 no_more_gt_brackets = TRUE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
818 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
819 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
820 |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
821 tag = g_strndup(src + i, j - i + 1); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
822 tag_name = yahoo_markup_get_tag_name(tag, &is_closing_tag); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
823 |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
824 if (g_str_equal(tag_name, "a")) { |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
825 const char *start; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
826 const char *end; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
827 GData *attributes; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
828 const char *attribute; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
829 |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
830 /* |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
831 * TODO: Ideally we would replace this: |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
832 * <a href="http://pidgin.im/">Pidgin</a> |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
833 * with this: |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
834 * Pidgin (http://pidgin.im/) |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
835 * |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
836 * Currently we drop the text within the <a> tag and |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
837 * just show the URL. Doing it the fancy way is |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
838 * complicated when dealing with HTML tags within the |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
839 * <a> tag. |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
840 */ |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
841 |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
842 /* Append the URL */ |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
843 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
844 attribute = g_datalist_get_data(&attributes, "href"); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
845 if (attribute != NULL) { |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
846 if (purple_str_has_prefix(attribute, "mailto:")) |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
847 attribute += 7; |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
848 g_string_append(dest, attribute); |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
849 } |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
850 g_datalist_clear(&attributes); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
851 |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
852 /* Skip past the closing </a> tag */ |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
853 end = purple_strcasestr(src + j, "</a>"); |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
854 if (end != NULL) |
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
855 j = end - src + 3; |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
856 |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
857 } else if (g_str_equal(tag_name, "font")) { |
28378
6b446431b2b0
This function no longer needs these two parameters
Mark Doliner <mark@kingant.net>
parents:
28377
diff
changeset
|
858 parse_font_tag(dest, tag_name, tag, &colors, &tags); |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
859 } else if (g_str_equal(tag_name, "b")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
860 g_string_append(dest, "\033[1m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
861 current_state.bold = TRUE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
862 } else if (g_str_equal(tag_name, "/b")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
863 if (current_state.bold) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
864 g_string_append(dest, "\033[x1m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
865 current_state.bold = FALSE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
866 } |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
867 } else if (g_str_equal(tag_name, "i")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
868 current_state.italic = TRUE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
869 g_string_append(dest, "\033[2m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
870 } else if (g_str_equal(tag_name, "/i")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
871 if (current_state.italic) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
872 g_string_append(dest, "\033[x2m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
873 current_state.italic = FALSE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
874 } |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
875 } else if (g_str_equal(tag_name, "u")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
876 current_state.underline = TRUE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
877 g_string_append(dest, "\033[4m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
878 } else if (g_str_equal(tag_name, "/u")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
879 if (current_state.underline) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
880 g_string_append(dest, "\033[x4m"); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
881 current_state.underline = FALSE; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
882 } |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
883 } else if (g_str_equal(tag_name, "/a")) { |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
884 /* Do nothing */ |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
885 } else if (g_str_equal(tag_name, "br")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
886 g_string_append_c(dest, '\n'); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
887 } else if (g_str_equal(tag_name, "/font")) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
888 if (tags != NULL) { |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
889 char *etag = tags->data; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
890 tags = g_slist_delete_link(tags, tags); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
891 g_string_append(dest, etag); |
28383
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
892 if (colors != NULL) { |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
893 g_free(colors->data); |
2a6f0c2460ae
Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <mark@kingant.net>
parents:
28378
diff
changeset
|
894 colors = g_slist_delete_link(colors, colors); |
16109
8e61e7be988b
Stop Yahoo sending SPAN tags, fixes Yahoo part of ticket 78
Stu Tomlinson <stu@nosnilmot.com>
parents:
15823
diff
changeset
|
895 } |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
896 g_free(etag); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
897 } |
29306
5ffedd1578f0
Don't send <span>...</span> on Yahoo. Fixes #11242, #10961.
Fartash Faghri
parents:
29020
diff
changeset
|
898 } else if (g_str_equal(tag_name, "span") || g_str_equal(tag_name, "/span")) { |
5ffedd1578f0
Don't send <span>...</span> on Yahoo. Fixes #11242, #10961.
Fartash Faghri
parents:
29020
diff
changeset
|
899 /* Do nothing */ |
28699
43200ff042ad
Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28409
diff
changeset
|
900 } else { |
43200ff042ad
Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28409
diff
changeset
|
901 /* We don't know what the tag is. Send it unmodified. */ |
43200ff042ad
Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28409
diff
changeset
|
902 g_string_append(dest, tag); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
903 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
904 |
28362
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
905 i = j; |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
906 g_free(tag); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
907 g_free(tag_name); |
c06114f3d58d
* Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <mark@kingant.net>
parents:
28348
diff
changeset
|
908 break; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
909 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
910 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
911 } else { |
28168
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
912 const char *entity; |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
913 int length; |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
914 |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
915 entity = purple_markup_unescape_entity(src + i, &length); |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
916 if (entity != NULL) { |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
917 /* src[i] is the start of an HTML entity */ |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
918 g_string_append(dest, entity); |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
919 i += length - 1; |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
920 } else |
64fd19956153
Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <mark@kingant.net>
parents:
28167
diff
changeset
|
921 /* src[i] is a normal character */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
922 g_string_append_c(dest, src[i]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
923 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
924 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
925 |
28080 | 926 esc = g_strescape(dest->str, NULL); |
28363
b289449f3e9f
Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <mark@kingant.net>
parents:
28362
diff
changeset
|
927 purple_debug_misc("yahoo", "yahoo_html_to_codes(%s)=%s\n", src, esc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
928 g_free(esc); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
929 |
28166
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
930 yahoo_htc_list_cleanup(colors); |
bc9da266d25d
This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <mark@kingant.net>
parents:
28165
diff
changeset
|
931 yahoo_htc_list_cleanup(tags); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
932 |
28080 | 933 return g_string_free(dest, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
934 } |
28836
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
935 |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
936 YahooFederation yahoo_get_federation_from_name(const char *who) |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
937 { |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
938 YahooFederation fed = YAHOO_FEDERATION_NONE; |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
939 if (who[3] == '/') { |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
940 if (!g_ascii_strncasecmp(who, "msn", 3)) |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
941 fed = YAHOO_FEDERATION_MSN; |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
942 else if (!g_ascii_strncasecmp(who, "ocs", 3)) |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
943 fed = YAHOO_FEDERATION_OCS; |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
944 else if (!g_ascii_strncasecmp(who, "ibm", 3)) |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
945 fed = YAHOO_FEDERATION_IBM; |
29394
d1cecbc467c6
Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents:
29306
diff
changeset
|
946 else if (!g_ascii_strncasecmp(who, "pbx", 3)) |
d1cecbc467c6
Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
kartikmohta@gmail.com
parents:
29306
diff
changeset
|
947 fed = YAHOO_FEDERATION_PBX; |
28836
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
948 } |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
949 return fed; |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
950 } |
7b88cc6c3f7a
Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28699
diff
changeset
|
951 |