libpurple/protocols/yahoo/util.c

Thu, 06 Feb 2014 18:56:36 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 06 Feb 2014 18:56:36 +0530
changeset 35378
5d9e2581005b
parent 35268
0ff850475a1d
child 36002
31a8779e91d4
child 37075
cf3f735b09b7
permissions
-rw-r--r--

gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
- purple_savedstatus_[gs]et_type renamed to purple_savedstatus_[gs]et_primitive_type
- purple_account_option_get_type renamed to purple_account_option_get_pref_type
- purple_srv_txt_query_get_type renamed to purple_srv_txt_query_get_query_type
- purple_notify_user_info_entry_[gs]et_type renamed to purple_notify_user_info_entry_[gs]et_entry_type
- purple_plugin_pref_[gs]et_type renamed to purple_plugin_pref_[gs]et_pref_type
- purple_prefs_get_type renamed to purple_prefs_get_pref_type
- purple_proxy_info_[gs]et_type renamed to purple_proxy_info_[gs]et_proxy_type
- purple_request_field_get_type renamed to purple_request_field_get_field_type
- purple_savedstatus_substatus_get_type renamed to purple_savedstatus_substatus_get_status_type

6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * purple
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
3 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
4 * Some code copyright 2003 Tim Ringenbach <omarvo@hotmail.com>
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
5 * (marv on irc.freenode.net)
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
6 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
11 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
16 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19337
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
20 *
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 */
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
24 #include "config.h"
27335
06a805d4e690 Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <markdoliner@pidgin.im>
parents: 24181
diff changeset
25 #endif /* HAVE_CONFIG_H */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
26
10023
6b0014040323 [gaim-migrate @ 10955]
Mark Doliner <markdoliner@pidgin.im>
parents: 9164
diff changeset
27 #include "debug.h"
6b0014040323 [gaim-migrate @ 10955]
Mark Doliner <markdoliner@pidgin.im>
parents: 9164
diff changeset
28 #include "internal.h"
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
29 #include "prpl.h"
10023
6b0014040323 [gaim-migrate @ 10955]
Mark Doliner <markdoliner@pidgin.im>
parents: 9164
diff changeset
30
27555
afb7cb5c350c Update for file renames.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27547
diff changeset
31 #include "libymsg.h"
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
32
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
33 #include <string.h>
24181
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23173
diff changeset
34
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23173
diff changeset
35 gboolean
30435
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
36 yahoo_account_use_http_proxy(PurpleConnection *pc)
24181
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23173
diff changeset
37 {
30435
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
38 PurpleAccount *account = purple_connection_get_account(pc);
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
39 PurpleProxyInfo *ppi = NULL;
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
40 PurpleProxyType type = PURPLE_PROXY_NONE;
34234
bb56b6121733 HTTP: migrate purple_util_fetch_url_request to new API for yahoo prpl (login process)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33955
diff changeset
41 gboolean proxy_ssl = TRUE; /*purple_account_get_bool(account, "proxy_ssl", FALSE);*/
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30755
diff changeset
42
30435
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
43 if(proxy_ssl)
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
44 ppi = purple_proxy_get_setup(account);
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
45 else
30755
10446db8b003 Fix connecting to Yahoo when a global proxy has been specified, but is
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 30435
diff changeset
46 ppi = purple_proxy_get_setup(NULL);
30435
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
47
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35268
diff changeset
48 type = purple_proxy_info_get_proxy_type(ppi);
30435
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
49
47b104e299b1 Make HTTP proxy detection in the yahoo prpls a bit more robust. This should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29324
diff changeset
50 return (type == PURPLE_PROXY_HTTP || type == PURPLE_PROXY_USE_ENVVAR);
24181
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23173
diff changeset
51 }
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23173
diff changeset
52
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
53 /*
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
54 * Returns cookies formatted as a null terminated string for the given connection.
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
55 * Must g_free return value.
27335
06a805d4e690 Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <markdoliner@pidgin.im>
parents: 24181
diff changeset
56 *
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
57 * TODO:will work, but must test for strict correctness
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
58 */
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
59 gchar* yahoo_get_cookies(PurpleConnection *gc)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
60 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
61 gchar *ans = NULL;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
62 gchar *cur;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
63 char firstflag = 1;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
64 gchar *t1,*t2,*t3;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
65 GSList *tmp;
32280
704f84f692f6 Convert yahoo prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data()
Andrew Victor <andrew.victor@mxit.com>
parents: 31294
diff changeset
66 YahooData *yd = purple_connection_get_protocol_data(gc);
704f84f692f6 Convert yahoo prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data()
Andrew Victor <andrew.victor@mxit.com>
parents: 31294
diff changeset
67 GSList *cookies = yd->cookies;
704f84f692f6 Convert yahoo prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data()
Andrew Victor <andrew.victor@mxit.com>
parents: 31294
diff changeset
68
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
69 tmp = cookies;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
70 while(tmp)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
71 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
72 cur = tmp->data;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
73 t1 = ans;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
74 t2 = g_strrstr(cur, ";expires=");
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
75 if(t2 == NULL)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
76 t2 = g_strrstr(cur, "; expires=");
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
77 if(t2 == NULL)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
78 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
79 if(firstflag)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
80 ans = g_strdup_printf("%c=%s", cur[0], cur+2);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
81 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
82 ans = g_strdup_printf("%s; %c=%s", t1, cur[0], cur+2);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
83 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
84 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
85 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
86 t3 = strstr(t2+1, ";");
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
87 if(t3 != NULL)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
88 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
89 t2[0] = '\0';
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
90
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
91 if(firstflag)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
92 ans = g_strdup_printf("%c=%s%s", cur[0], cur+2, t3);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
93 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
94 ans = g_strdup_printf("%s; %c=%s%s", t1, cur[0], cur+2, t3);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
95
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
96 t2[0] = ';';
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
97 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
98 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
99 {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
100 t2[0] = '\0';
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
101
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
102 if(firstflag)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
103 ans = g_strdup_printf("%c=%s", cur[0], cur+2);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
104 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
105 ans = g_strdup_printf("%s; %c=%s", t1, cur[0], cur+2);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
106
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
107 t2[0] = ';';
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
108 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
109 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
110 if(firstflag)
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
111 firstflag = 0;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
112 else
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
113 g_free(t1);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
114 tmp = g_slist_next(tmp);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
115 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
116 return ans;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 21946
diff changeset
117 }
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6513
diff changeset
118
35268
0ff850475a1d Change the last param of yahoo_string_encode from gboolean* to gboolean.
Mark Doliner <mark@kingant.net>
parents: 35265
diff changeset
119 char *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean utf8)
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
120 {
32280
704f84f692f6 Convert yahoo prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data()
Andrew Victor <andrew.victor@mxit.com>
parents: 31294
diff changeset
121 YahooData *yd = purple_connection_get_protocol_data(gc);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
122 char *ret;
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10380
diff changeset
123 const char *to_codeset;
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
124 GError *error = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
125
23173
c6dde2d2e30e applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <datallah@pidgin.im>
parents: 22289
diff changeset
126 if (yd->jp)
c6dde2d2e30e applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <datallah@pidgin.im>
parents: 22289
diff changeset
127 return g_strdup(str);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 8955
diff changeset
128
35268
0ff850475a1d Change the last param of yahoo_string_encode from gboolean* to gboolean.
Mark Doliner <mark@kingant.net>
parents: 35265
diff changeset
129 if (utf8) /* FIXME: maybe don't use utf8 if it'll fit in latin1 */
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
130 return g_strdup(str);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
131
23173
c6dde2d2e30e applied changes from a5e7a62db1d43009f4ff463b7fe67ff3a7275a78
Daniel Atallah <datallah@pidgin.im>
parents: 22289
diff changeset
132 to_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1");
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
133 ret = g_convert_with_fallback(str, -1, to_codeset, "UTF-8", "?", NULL, NULL, &error);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
134 if (!ret) {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
135 if (error) {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
136 purple_debug_error("yahoo", "Could not convert %s from UTF-8 to "
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
137 "%s: %d - %s\n", str ? str : "(null)", to_codeset,
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
138 error->code,
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
139 error->message ? error->message : "(null)");
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
140 g_error_free(error);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
141 } else {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
142 purple_debug_error("yahoo", "Could not convert %s from UTF-8 to "
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
143 "%s: unkown error\n", str ? str : "(null)", to_codeset);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
144 }
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
145 return g_strdup("");
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
146 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
147
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
148 return ret;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
149 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
150
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
151 /**
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
152 * Decode some text received from the server.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
153 *
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
154 * @param gc The gc handle.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
155 * @param str The null terminated string to decode.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
156 * @param utf8 Did the server tell us it was supposed to be utf8?
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
157 * @return The decoded, utf-8 string, which must be g_free()'d.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
158 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
159 char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8)
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
160 {
32280
704f84f692f6 Convert yahoo prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data()
Andrew Victor <andrew.victor@mxit.com>
parents: 31294
diff changeset
161 YahooData *yd = purple_connection_get_protocol_data(gc);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
162 char *ret;
14347
4c0fe0512e73 [gaim-migrate @ 16971]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
163 const char *from_codeset;
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
164 GError *error = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
165
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
166 if (utf8) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
167 if (g_utf8_validate(str, -1, NULL))
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
168 return g_strdup(str);
35257
e18fa71725c8 Add logging.
Mark Doliner <mark@kingant.net>
parents: 31294
diff changeset
169 purple_debug_warning("yahoo", "Server told us a string was supposed "
e18fa71725c8 Add logging.
Mark Doliner <mark@kingant.net>
parents: 31294
diff changeset
170 "to be UTF-8, but it was not. Will try another encoding.\n");
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
171 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
172
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 8955
diff changeset
173 if (yd->jp)
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 8955
diff changeset
174 from_codeset = "SHIFT_JIS";
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 8955
diff changeset
175 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
176 from_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1");
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
177
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
178 ret = g_convert_with_fallback(str, -1, "UTF-8", from_codeset, NULL, NULL, NULL, &error);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
179 if (!ret) {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
180 if (error) {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
181 purple_debug_error("yahoo", "Could not convert %s from %s to "
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
182 "UTF-8: %d - %s\n", str ? str : "(null)", from_codeset,
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
183 error->code, error->message ? error->message : "(null)");
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
184 g_error_free(error);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
185 } else {
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
186 purple_debug_error("yahoo", "Could not convert %s from %s to "
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
187 "UTF-8: unkown error\n", str ? str : "(null)",
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
188 from_codeset);
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
189 }
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
190 return g_strdup("");
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
191 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
192
35258
956f247148db More error logging, please.
Mark Doliner <mark@kingant.net>
parents: 35257
diff changeset
193 return ret;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
194 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 6631
diff changeset
195
22259
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
196 char *yahoo_convert_to_numeric(const char *str)
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
197 {
22261
e80d3a79f3b8 Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22259
diff changeset
198 GString *gstr = NULL;
22289
a1f40ee48fa8 Fix (hopefully) the last problem in this function. Refs #3295.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22261
diff changeset
199 const unsigned char *p;
22259
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
200
22261
e80d3a79f3b8 Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22259
diff changeset
201 gstr = g_string_sized_new(strlen(str) * 6 + 1);
e80d3a79f3b8 Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22259
diff changeset
202
22289
a1f40ee48fa8 Fix (hopefully) the last problem in this function. Refs #3295.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22261
diff changeset
203 for (p = (unsigned char *)str; *p; p++) {
22261
e80d3a79f3b8 Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22259
diff changeset
204 g_string_append_printf(gstr, "&#%u;", *p);
22259
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
205 }
22261
e80d3a79f3b8 Since I needed to bring back yahoo_convert_to_numeric, I figured I could at
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22259
diff changeset
206
28009
6d11ca90ecc2 Simplify a wee bit
Mark Doliner <markdoliner@pidgin.im>
parents: 27959
diff changeset
207 return g_string_free(gstr, FALSE);
22259
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
208 }
bc9fcfd10196 disapproval of revision 'db9b3bc9d4427a6a03d1c25aac5215bf0f8e05ec'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22248
diff changeset
209
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
210 /*
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
211 * The values in this hash table should probably be lowercase, since that's
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
212 * what xhtml expects. Also because yahoo_codes_to_html() does
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
213 * case-sensitive comparisons.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
214 *
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
215 * I found these on some website but i don't know that they actually
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8533
diff changeset
216 * work (or are supposed to work). I didn't implement them yet.
27335
06a805d4e690 Strip trailing whitespace and comment #endif marcos that close #ifdef macros
Mark Doliner <markdoliner@pidgin.im>
parents: 24181
diff changeset
217 *
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
218 * [0;30m ---black
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
219 * [1;37m ---white
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
220 * [0;37m ---tan
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
221 * [0;38m ---light black
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
222 * [1;39m ---dark blue
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
223 * [0;32m ---green
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
224 * [0;33m ---yellow
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
225 * [0;35m ---pink
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
226 * [1;35m ---purple
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
227 * [1;30m ---light blue
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
228 * [0;31m ---red
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
229 * [0;34m ---blue
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
230 * [0;36m ---aqua
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
231 * (shift+comma)lyellow(shift+period) ---light yellow
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
232 * (shift+comma)lgreen(shift+period) ---light green
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
233 * [2;30m <--white out
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
234 */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
235
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
236 static GHashTable *esc_codes_ht = NULL;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
237 static GHashTable *tags_ht = NULL;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
238
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
239 void yahoo_init_colorht()
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
240 {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
241 if (esc_codes_ht != NULL)
27683
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
242 /* Hash table has already been initialized */
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
243 return;
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
244
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
245 /* Key is the escape code string. Value is the HTML that should be
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
246 * inserted in place of the escape code. */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
247 esc_codes_ht = g_hash_table_new(g_str_hash, g_str_equal);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
248
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
249 /* Key is the name of the HTML tag, for example "font" or "/font"
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
250 * value is the HTML that should be inserted in place of the old tag */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
251 tags_ht = g_hash_table_new(g_str_hash, g_str_equal);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
252
27683
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
253 /* the numbers in comments are what gyach uses, but i think they're incorrect */
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
254 #ifdef USE_CSS_FORMATTING
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
255 g_hash_table_insert(esc_codes_ht, "30", "<span style=\"color: #000000\">"); /* black */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
256 g_hash_table_insert(esc_codes_ht, "31", "<span style=\"color: #0000FF\">"); /* blue */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
257 g_hash_table_insert(esc_codes_ht, "32", "<span style=\"color: #008080\">"); /* cyan */ /* 00b2b2 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
258 g_hash_table_insert(esc_codes_ht, "33", "<span style=\"color: #808080\">"); /* gray */ /* 808080 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
259 g_hash_table_insert(esc_codes_ht, "34", "<span style=\"color: #008000\">"); /* green */ /* 00c200 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
260 g_hash_table_insert(esc_codes_ht, "35", "<span style=\"color: #FF0080\">"); /* pink */ /* ffafaf */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
261 g_hash_table_insert(esc_codes_ht, "36", "<span style=\"color: #800080\">"); /* purple */ /* b200b2 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
262 g_hash_table_insert(esc_codes_ht, "37", "<span style=\"color: #FF8000\">"); /* orange */ /* ffff00 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
263 g_hash_table_insert(esc_codes_ht, "38", "<span style=\"color: #FF0000\">"); /* red */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
264 g_hash_table_insert(esc_codes_ht, "39", "<span style=\"color: #808000\">"); /* olive */ /* 546b50 */
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
265 #else
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
266 g_hash_table_insert(esc_codes_ht, "30", "<font color=\"#000000\">"); /* black */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
267 g_hash_table_insert(esc_codes_ht, "31", "<font color=\"#0000FF\">"); /* blue */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
268 g_hash_table_insert(esc_codes_ht, "32", "<font color=\"#008080\">"); /* cyan */ /* 00b2b2 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
269 g_hash_table_insert(esc_codes_ht, "33", "<font color=\"#808080\">"); /* gray */ /* 808080 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
270 g_hash_table_insert(esc_codes_ht, "34", "<font color=\"#008000\">"); /* green */ /* 00c200 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
271 g_hash_table_insert(esc_codes_ht, "35", "<font color=\"#FF0080\">"); /* pink */ /* ffafaf */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
272 g_hash_table_insert(esc_codes_ht, "36", "<font color=\"#800080\">"); /* purple */ /* b200b2 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
273 g_hash_table_insert(esc_codes_ht, "37", "<font color=\"#FF8000\">"); /* orange */ /* ffff00 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
274 g_hash_table_insert(esc_codes_ht, "38", "<font color=\"#FF0000\">"); /* red */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
275 g_hash_table_insert(esc_codes_ht, "39", "<font color=\"#808000\">"); /* olive */ /* 546b50 */
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
276 #endif /* !USE_CSS_FORMATTING */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
277
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
278 g_hash_table_insert(esc_codes_ht, "1", "<b>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
279 g_hash_table_insert(esc_codes_ht, "x1", "</b>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
280 g_hash_table_insert(esc_codes_ht, "2", "<i>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
281 g_hash_table_insert(esc_codes_ht, "x2", "</i>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
282 g_hash_table_insert(esc_codes_ht, "4", "<u>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
283 g_hash_table_insert(esc_codes_ht, "x4", "</u>");
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
284
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
285 /* these just tell us the text they surround is supposed
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
286 * to be a link. purple figures that out on its own so we
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
287 * just ignore it.
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
288 */
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
289 g_hash_table_insert(esc_codes_ht, "l", ""); /* link start */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
290 g_hash_table_insert(esc_codes_ht, "xl", ""); /* link end */
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
291
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
292 #ifdef USE_CSS_FORMATTING
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
293 g_hash_table_insert(tags_ht, "black", "<span style=\"color: #000000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
294 g_hash_table_insert(tags_ht, "blue", "<span style=\"color: #0000FF\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
295 g_hash_table_insert(tags_ht, "cyan", "<span style=\"color: #008284\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
296 g_hash_table_insert(tags_ht, "gray", "<span style=\"color: #848284\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
297 g_hash_table_insert(tags_ht, "green", "<span style=\"color: #008200\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
298 g_hash_table_insert(tags_ht, "pink", "<span style=\"color: #FF0084\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
299 g_hash_table_insert(tags_ht, "purple", "<span style=\"color: #840084\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
300 g_hash_table_insert(tags_ht, "orange", "<span style=\"color: #FF8000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
301 g_hash_table_insert(tags_ht, "red", "<span style=\"color: #FF0000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
302 g_hash_table_insert(tags_ht, "yellow", "<span style=\"color: #848200\">");
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
303
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
304 g_hash_table_insert(tags_ht, "/black", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
305 g_hash_table_insert(tags_ht, "/blue", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
306 g_hash_table_insert(tags_ht, "/cyan", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
307 g_hash_table_insert(tags_ht, "/gray", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
308 g_hash_table_insert(tags_ht, "/green", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
309 g_hash_table_insert(tags_ht, "/pink", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
310 g_hash_table_insert(tags_ht, "/purple", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
311 g_hash_table_insert(tags_ht, "/orange", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
312 g_hash_table_insert(tags_ht, "/red", "</span>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
313 g_hash_table_insert(tags_ht, "/yellow", "</span>");
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
314 #else
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
315 g_hash_table_insert(tags_ht, "black", "<font color=\"#000000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
316 g_hash_table_insert(tags_ht, "blue", "<font color=\"#0000FF\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
317 g_hash_table_insert(tags_ht, "cyan", "<font color=\"#008284\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
318 g_hash_table_insert(tags_ht, "gray", "<font color=\"#848284\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
319 g_hash_table_insert(tags_ht, "green", "<font color=\"#008200\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
320 g_hash_table_insert(tags_ht, "pink", "<font color=\"#FF0084\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
321 g_hash_table_insert(tags_ht, "purple", "<font color=\"#840084\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
322 g_hash_table_insert(tags_ht, "orange", "<font color=\"#FF8000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
323 g_hash_table_insert(tags_ht, "red", "<font color=\"#FF0000\">");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
324 g_hash_table_insert(tags_ht, "yellow", "<font color=\"#848200\">");
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
325
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
326 g_hash_table_insert(tags_ht, "/black", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
327 g_hash_table_insert(tags_ht, "/blue", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
328 g_hash_table_insert(tags_ht, "/cyan", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
329 g_hash_table_insert(tags_ht, "/gray", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
330 g_hash_table_insert(tags_ht, "/green", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
331 g_hash_table_insert(tags_ht, "/pink", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
332 g_hash_table_insert(tags_ht, "/purple", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
333 g_hash_table_insert(tags_ht, "/orange", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
334 g_hash_table_insert(tags_ht, "/red", "</font>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
335 g_hash_table_insert(tags_ht, "/yellow", "</font>");
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
336 #endif /* !USE_CSS_FORMATTING */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
337
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
338 /* We don't support these tags, so discard them */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
339 g_hash_table_insert(tags_ht, "alt", "");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
340 g_hash_table_insert(tags_ht, "fade", "");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
341 g_hash_table_insert(tags_ht, "snd", "");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
342 g_hash_table_insert(tags_ht, "/alt", "");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
343 g_hash_table_insert(tags_ht, "/fade", "");
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 7827
diff changeset
344
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
345 /* Official clients don't seem to send b, i or u tags. They use
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
346 * the escape codes listed above. Official clients definitely send
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
347 * font tags, though. I wonder if we can remove the opening and
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
348 * closing b, i and u tags from here? */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
349 g_hash_table_insert(tags_ht, "b", "<b>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
350 g_hash_table_insert(tags_ht, "i", "<i>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
351 g_hash_table_insert(tags_ht, "u", "<u>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
352 g_hash_table_insert(tags_ht, "font", "<font>");
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 7827
diff changeset
353
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
354 g_hash_table_insert(tags_ht, "/b", "</b>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
355 g_hash_table_insert(tags_ht, "/i", "</i>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
356 g_hash_table_insert(tags_ht, "/u", "</u>");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
357 g_hash_table_insert(tags_ht, "/font", "</font>");
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
358 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
359
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
360 void yahoo_dest_colorht()
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
361 {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
362 if (esc_codes_ht == NULL)
27683
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
363 /* Hash table has already been destroyed */
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
364 return;
9ee099fab4ee Don't double-free the color hash table when deinitializing both prpl-yahoo
Mark Doliner <markdoliner@pidgin.im>
parents: 27555
diff changeset
365
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
366 g_hash_table_destroy(esc_codes_ht);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
367 esc_codes_ht = NULL;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
368 g_hash_table_destroy(tags_ht);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
369 tags_ht = NULL;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
370 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
371
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
372 #ifndef USE_CSS_FORMATTING
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
373 static int point_to_html(int x)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
374 {
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
375 if (x < 9)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
376 return 1;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
377 if (x < 11)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
378 return 2;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
379 if (x < 13)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
380 return 3;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
381 if (x < 17)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
382 return 4;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
383 if (x < 25)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
384 return 5;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
385 if (x < 35)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
386 return 6;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
387 return 7;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
388 }
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
389 #endif /* !USE_CSS_FORMATTING */
10380
8608e553808f [gaim-migrate @ 11605]
Evan Schoenberg <evands@pidgin.im>
parents: 10023
diff changeset
390
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
391 static void append_attrs_datalist_foreach_cb(GQuark key_id, gpointer data, gpointer user_data)
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
392 {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
393 const char *key;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
394 const char *value;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
395 PurpleXmlNode *cur;
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
396
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
397 key = g_quark_to_string(key_id);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
398 value = data;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
399 cur = user_data;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
400
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
401 purple_xmlnode_set_attrib(cur, key, value);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
402 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
403
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
404 /**
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
405 * @param cur A pointer to the position in the XML tree that we're
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
406 * currently building. This will be modified when opening a tag
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
407 * or closing an existing tag.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
408 */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
409 static void yahoo_codes_to_html_add_tag(PurpleXmlNode **cur, const char *tag, gboolean is_closing_tag, const gchar *tag_name, gboolean is_font_tag)
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
410 {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
411 if (is_closing_tag) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
412 PurpleXmlNode *tmp;
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
413 GSList *dangling_tags = NULL;
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
414
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
415 /* Move up the DOM until we find the opening tag */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
416 for (tmp = *cur; tmp != NULL; tmp = purple_xmlnode_get_parent(tmp)) {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
417 /* Add one to tag_name when doing this comparison because it starts with a / */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
418 if (g_str_equal(tmp->name, tag_name + 1))
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
419 /* Found */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
420 break;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
421 dangling_tags = g_slist_prepend(dangling_tags, tmp);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
422 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
423 if (tmp == NULL) {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
424 /* This is a closing tag with no opening tag. Useless. */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
425 purple_debug_error("yahoo", "Ignoring unmatched tag %s", tag);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
426 g_slist_free(dangling_tags);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
427 return;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
428 }
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
429
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
430 /* Move our current position up, now that we've closed a tag */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
431 *cur = purple_xmlnode_get_parent(tmp);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
432
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
433 /* Re-open any tags that were nested below the tag we just closed */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
434 while (dangling_tags != NULL) {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
435 tmp = dangling_tags->data;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
436 dangling_tags = g_slist_delete_link(dangling_tags, dangling_tags);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
437
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
438 /* Create a copy of this tag+attributes (but not child tags or
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
439 * data) at our new location */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
440 *cur = purple_xmlnode_new_child(*cur, tmp->name);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
441 for (tmp = tmp->child; tmp != NULL; tmp = tmp->next)
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
442 if (tmp->type == PURPLE_XMLNODE_TYPE_ATTRIB)
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
443 purple_xmlnode_set_attrib_full(*cur, tmp->name,
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
444 tmp->xmlns, tmp->prefix, tmp->data);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
445 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
446 } else {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
447 const char *start;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
448 const char *end;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
449 GData *attributes;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
450 char *fontsize = NULL;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
451
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
452 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
453 *cur = purple_xmlnode_new_child(*cur, tag_name);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
454
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
455 if (is_font_tag) {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
456 /* Special case for the font size attribute */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
457 fontsize = g_strdup(g_datalist_get_data(&attributes, "size"));
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
458 if (fontsize != NULL)
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
459 g_datalist_remove_data(&attributes, "size");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
460 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
461
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
462 /* Add all font tag attributes */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
463 g_datalist_foreach(&attributes, append_attrs_datalist_foreach_cb, *cur);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
464 g_datalist_clear(&attributes);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
465
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
466 if (fontsize != NULL) {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
467 #ifdef USE_CSS_FORMATTING
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
468 /*
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
469 * The Yahoo font size value is given in pt, even though the HTML
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
470 * standard for <font size="x"> treats the size as a number on a
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
471 * scale between 1 and 7. So we insert the font size as a CSS
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
472 * style on a span tag.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
473 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
474 gchar *tmp = g_strdup_printf("font-size: %spt", fontsize);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
475 *cur = purple_xmlnode_new_child(*cur, "span");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
476 purple_xmlnode_set_attrib(*cur, "style", tmp);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
477 g_free(tmp);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
478 #else
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
479 /*
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
480 * The Yahoo font size value is given in pt, even though the HTML
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
481 * standard for <font size="x"> treats the size as a number on a
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
482 * scale between 1 and 7. So we convert it to an appropriate
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
483 * value. This loses precision, which is why CSS formatting is
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
484 * preferred. The "absz" attribute remains here for backward
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
485 * compatibility with UIs that might use it, but it is totally
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
486 * not standard at all.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
487 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
488 int size, htmlsize;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
489 gchar tmp[11];
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
490 size = strtol(fontsize, NULL, 10);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
491 htmlsize = point_to_html(size);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
492 sprintf(tmp, "%u", htmlsize);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
493 purple_xmlnode_set_attrib(*cur, "size", tmp);
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
494 purple_xmlnode_set_attrib(*cur, "absz", fontsize);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
495 #endif /* !USE_CSS_FORMATTING */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
496 g_free(fontsize);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
497 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
498 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
499 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
500
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
501 /**
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
502 * Similar to purple_markup_get_tag_name(), but works with closing tags.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
503 *
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
504 * @return The lowercase name of the tag. If this is a closing tag then
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
505 * this value starts with a forward slash. The caller must free
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
506 * this string with g_free.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
507 */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
508 static gchar *yahoo_markup_get_tag_name(const char *tag, gboolean *is_closing_tag)
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
509 {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
510 size_t len;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
511
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
512 *is_closing_tag = (tag[1] == '/');
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
513 if (*is_closing_tag)
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
514 len = strcspn(tag + 1, "> ");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
515 else
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
516 len = strcspn(tag + 1, "> /");
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
517
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
518 return g_utf8_strdown(tag + 1, len);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
519 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
520
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
521 /*
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
522 * Yahoo! messages generally aren't well-formed. Their markup is
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
523 * more of a flow from start to finish rather than a hierarchy from
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
524 * outer to inner. They tend to open tags and close them only when
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
525 * necessary.
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
526 *
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
527 * Example: <font size="8">size 8 <font size="16">size 16 <font size="8">size 8 again
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
528 *
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
529 * But we want to send well-formed HTML to the core, so we step through
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
530 * the input string and build an PurpleXmlNode tree containing sanitized HTML.
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
531 */
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
532 char *yahoo_codes_to_html(const char *x)
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
533 {
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
534 size_t x_len;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
535 PurpleXmlNode *html, *cur;
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
536 GString *cdata = g_string_new(NULL);
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34234
diff changeset
537 guint i, j;
28041
84fb2d6540ea Of course I got it backwards
Mark Doliner <markdoliner@pidgin.im>
parents: 28040
diff changeset
538 gboolean no_more_gt_brackets = FALSE;
28037
ec211dfd0937 Make match a const char *, and remove two unnecessary casts
Mark Doliner <markdoliner@pidgin.im>
parents: 28036
diff changeset
539 const char *match;
28307
400743761337 Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <markdoliner@pidgin.im>
parents: 28298
diff changeset
540 gchar *xmlstr1, *xmlstr2, *esc;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
541
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
542 x_len = strlen(x);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
543 html = purple_xmlnode_new("html");
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
544
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
545 cur = html;
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
546 for (i = 0; i < x_len; i++) {
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
547 if ((x[i] == 0x1b) && (x[i+1] == '[')) {
28040
476db09dcc7a Better variable name?
Mark Doliner <markdoliner@pidgin.im>
parents: 28038
diff changeset
548 /* This escape sequence signifies the beginning of some
476db09dcc7a Better variable name?
Mark Doliner <markdoliner@pidgin.im>
parents: 28038
diff changeset
549 * text formatting code */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
550 j = i + 1;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
551
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
552 while (j++ < x_len) {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
553 gchar *code;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
554
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
555 if (x[j] != 'm')
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
556 /* Keep looking for the end of this sequence */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
557 continue;
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
558
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
559 /* We've reached the end of the formatting sequence, yay */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
560
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
561 /* Append any character data that belongs in the current node */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
562 if (cdata->len > 0) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
563 purple_xmlnode_insert_data(cur, cdata->str, cdata->len);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
564 g_string_truncate(cdata, 0);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
565 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
566
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
567 code = g_strndup(x + i + 2, j - i - 2);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
568 if (code[0] == '#') {
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
569 #ifdef USE_CSS_FORMATTING
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
570 gchar *tmp = g_strdup_printf("color: %s", code);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
571 cur = purple_xmlnode_new_child(cur, "span");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
572 purple_xmlnode_set_attrib(cur, "style", tmp);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
573 g_free(tmp);
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
574 #else
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
575 cur = purple_xmlnode_new_child(cur, "font");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
576 purple_xmlnode_set_attrib(cur, "color", code);
28045
dca626985d99 Change yahoo_codes_to_html() to use the same USE_CSS_FORMATTING #define
Mark Doliner <markdoliner@pidgin.im>
parents: 28041
diff changeset
577 #endif /* !USE_CSS_FORMATTING */
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
578
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
579 } else if ((match = g_hash_table_lookup(esc_codes_ht, code))) {
28240
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
580 /* Some tags are in the hash table only because we
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
581 * want to ignore them */
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
582 if (match[0] != '\0') {
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
583 gboolean is_closing_tag;
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
584 gchar *tag_name;
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
585 tag_name = yahoo_markup_get_tag_name(match, &is_closing_tag);
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
586 yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE);
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
587 g_free(tag_name);
2022259114fc Fix a possible crash when receiving URLs in yahoo. It doesn't crash for me
Mark Doliner <markdoliner@pidgin.im>
parents: 28107
diff changeset
588 }
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
589
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
590 } else {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
591 purple_debug_error("yahoo",
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
592 "Ignoring unknown ansi code 'ESC[%sm'.\n", code);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
593 }
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
594
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
595 g_free(code);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
596 i = j;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
597 break;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
598 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
599
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
600 } else if (x[i] == '<' && !no_more_gt_brackets) {
28040
476db09dcc7a Better variable name?
Mark Doliner <markdoliner@pidgin.im>
parents: 28038
diff changeset
601 /* The start of an HTML tag */
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
602 j = i;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
603
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
604 while (j++ < x_len) {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
605 gchar *tag;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
606 gboolean is_closing_tag;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
607 gchar *tag_name;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
608
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
609 if (x[j] != '>') {
28106
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
610 if (x[j] == '"') {
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
611 /* We're inside a quoted attribute value. Skip to the end */
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
612 j++;
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
613 while (j != x_len && x[j] != '"')
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
614 j++;
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
615 } else if (x[j] == '\'') {
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
616 /* We're inside a quoted attribute value. Skip to the end */
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
617 j++;
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
618 while (j != x_len && x[j] != '\'')
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
619 j++;
686088ceb2d1 Take care of a special case where we would incorrectly parse incoming IMs
Mark Doliner <markdoliner@pidgin.im>
parents: 28103
diff changeset
620 }
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
621 if (j != x_len)
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
622 /* Keep looking for the end of this tag */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
623 continue;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
624
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
625 /* This < has no corresponding > */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
626 g_string_append_c(cdata, x[i]);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
627 no_more_gt_brackets = TRUE;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
628 break;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
629 }
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
630
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
631 tag = g_strndup(x + i, j - i + 1);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
632 tag_name = yahoo_markup_get_tag_name(tag, &is_closing_tag);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
633
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
634 match = g_hash_table_lookup(tags_ht, tag_name);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
635 if (match == NULL) {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
636 /* Unknown tag. The user probably typed a less-than sign */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
637 g_string_append_c(cdata, x[i]);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
638 g_free(tag);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
639 g_free(tag_name);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
640 break;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
641 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
642
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
643 /* Some tags are in the hash table only because we
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
644 * want to ignore them */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
645 if (match[0] != '\0') {
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
646 /* Append any character data that belongs in the current node */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
647 if (cdata->len > 0) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
648 purple_xmlnode_insert_data(cur, cdata->str, cdata->len);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
649 g_string_truncate(cdata, 0);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
650 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
651 if (g_str_equal(tag_name, "font"))
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
652 /* Font tags are a special case. We don't
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
653 * necessarily want to replace the whole thing--
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
654 * we just want to fix the size attribute. */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
655 yahoo_codes_to_html_add_tag(&cur, tag, is_closing_tag, tag_name, TRUE);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
656 else
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
657 yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
658 }
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
659
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
660 i = j;
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
661 g_free(tag);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
662 g_free(tag_name);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
663 break;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
664 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
665
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
666 } else {
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
667 g_string_append_c(cdata, x[i]);
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
668 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
669 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
670
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
671 /* Append any remaining character data */
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
672 if (cdata->len > 0)
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
673 purple_xmlnode_insert_data(cur, cdata->str, cdata->len);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
674 g_string_free(cdata, TRUE);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
675
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
676 /* Serialize our HTML */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
677 xmlstr1 = purple_xmlnode_to_str(html, NULL);
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34304
diff changeset
678 purple_xmlnode_free(html);
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
679
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
680 /* Strip off the outter HTML node */
28100
53d948810829 Make this enum follow our naming conventions a little better
Mark Doliner <markdoliner@pidgin.im>
parents: 28093
diff changeset
681 /* This probably isn't necessary, especially if we made the outter HTML
53d948810829 Make this enum follow our naming conventions a little better
Mark Doliner <markdoliner@pidgin.im>
parents: 28093
diff changeset
682 * node an empty span. But the HTML is simpler this way. */
28973
be6a842df4b9 Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28786
diff changeset
683 if (!purple_strequal(xmlstr1, "<html/>"))
be6a842df4b9 Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28786
diff changeset
684 xmlstr2 = g_strndup(xmlstr1 + 6, strlen(xmlstr1) - 13);
be6a842df4b9 Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28786
diff changeset
685 else
be6a842df4b9 Make yahoo_codes_to_html not crash when given an empty string, or a string
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28786
diff changeset
686 xmlstr2 = g_strdup("");
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
687 g_free(xmlstr1);
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
688
28307
400743761337 Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <markdoliner@pidgin.im>
parents: 28298
diff changeset
689 esc = g_strescape(x, NULL);
400743761337 Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <markdoliner@pidgin.im>
parents: 28298
diff changeset
690 purple_debug_misc("yahoo", "yahoo_codes_to_html(%s)=%s\n", esc, xmlstr2);
400743761337 Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <markdoliner@pidgin.im>
parents: 28298
diff changeset
691 g_free(esc);
400743761337 Oh, I guess we should escape this when printing to the debug window.
Mark Doliner <markdoliner@pidgin.im>
parents: 28298
diff changeset
692
28093
e21ce2c8991d Changes to the way we translate raw yahoo messages to HTML. The HTML
Mark Doliner <markdoliner@pidgin.im>
parents: 28051
diff changeset
693 return xmlstr2;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
694 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
695
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
696 /* borrowed from gtkimhtml */
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
697 #define MAX_FONT_SIZE 7
10899
87d9aec5b72d [gaim-migrate @ 12619]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10504
diff changeset
698 #define POINT_SIZE(x) (_point_sizes [MIN ((x > 0 ? x : 1), MAX_FONT_SIZE) - 1])
14904
cab89db4854c [gaim-migrate @ 17611]
Henning Norén <henning.noren@gmail.com>
parents: 14347
diff changeset
699 static const gint _point_sizes [] = { 8, 10, 12, 14, 20, 30, 40 };
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
700
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
701 typedef struct
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
702 {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
703 gboolean bold;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
704 gboolean italic;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
705 gboolean underline;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
706 gboolean in_link;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
707 int font_size;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
708 char *font_face;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
709 char *font_color;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
710 } CurrentMsgState;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
711
28101
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
712 static void yahoo_htc_list_cleanup(GSList *l)
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
713 {
28101
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
714 while (l != NULL) {
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
715 g_free(l->data);
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
716 l = g_slist_delete_link(l, l);
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
717 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
718 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
719
28309
656e6e3170f0 This function no longer needs these two parameters
Mark Doliner <markdoliner@pidgin.im>
parents: 28308
diff changeset
720 static void parse_font_tag(GString *dest, const char *tag_name, const char *tag,
656e6e3170f0 This function no longer needs these two parameters
Mark Doliner <markdoliner@pidgin.im>
parents: 28308
diff changeset
721 GSList **colors, GSList **tags)
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
722 {
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
723 const char *start;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
724 const char *end;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
725 GData *attributes;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
726 const char *attribute;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
727 gboolean needendtag;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
728 GString *tmp;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
729
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
730 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
731
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
732 needendtag = FALSE;
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
733 tmp = g_string_new(NULL);
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
734
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
735 attribute = g_datalist_get_data(&attributes, "color");
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
736 if (attribute != NULL) {
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
737 g_string_append(tmp, *colors ? (*colors)->data : "\033[#000000m");
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
738 g_string_append_printf(dest, "\033[%sm", attribute);
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
739 *colors = g_slist_prepend(*colors,
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
740 g_strdup_printf("\033[%sm", attribute));
28312
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
741 } else {
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
742 /* We need to add a value to the colors stack even if we're not
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
743 * setting a color because we ALWAYS pop exactly 1 element from
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
744 * this stack for every </font> tag. If we don't add anything
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
745 * then we'll pop something that we shouldn't when we hit this
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
746 * corresponding </font>. */
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
747 *colors = g_slist_prepend(*colors,
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
748 *colors ? g_strdup((*colors)->data) : g_strdup("\033[#000000m"));
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
749 }
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
750
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
751 attribute = g_datalist_get_data(&attributes, "face");
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
752 if (attribute != NULL) {
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
753 needendtag = TRUE;
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
754 g_string_append(dest, "<font ");
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
755 g_string_append_printf(dest, "face=\"%s\" ", attribute);
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
756 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
757
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
758 attribute = g_datalist_get_data(&attributes, "size");
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
759 if (attribute != NULL) {
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
760 if (!needendtag) {
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
761 needendtag = TRUE;
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
762 g_string_append(dest, "<font ");
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
763 }
28297
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
764
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
765 g_string_append_printf(dest, "size=\"%d\" ",
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
766 POINT_SIZE(strtol(attribute, NULL, 10)));
28297
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
767 }
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
768
28297
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
769 if (needendtag) {
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
770 dest->str[dest->len-1] = '>';
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
771 *tags = g_slist_prepend(*tags, g_strdup("</font>"));
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
772 g_string_free(tmp, TRUE);
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
773 } else {
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
774 *tags = g_slist_prepend(*tags, tmp->str);
230a550b96df Use a GSList here instead of a GQueue. Yay for simplification.
Mark Doliner <markdoliner@pidgin.im>
parents: 28296
diff changeset
775 g_string_free(tmp, FALSE);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
776 }
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
777
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
778 g_datalist_clear(&attributes);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
779 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
780
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
781 char *yahoo_html_to_codes(const char *src)
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
782 {
28101
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
783 GSList *colors = NULL;
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
784
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
785 /**
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
786 * A stack of char*s where each char* is the string that should be
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
787 * appended to dest in order to close all the tags that were opened
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
788 * by a <font> tag.
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
789 */
28101
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
790 GSList *tags = NULL;
28298
5084ac8ea136 Don't put stuff into a linked list only to iterate through the linked list
Mark Doliner <markdoliner@pidgin.im>
parents: 28297
diff changeset
791
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
792 size_t src_len;
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34234
diff changeset
793 guint i, j;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
794 GString *dest;
28009
6d11ca90ecc2 Simplify a wee bit
Mark Doliner <markdoliner@pidgin.im>
parents: 27959
diff changeset
795 char *esc;
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
796 gboolean no_more_gt_brackets = FALSE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
797 gchar *tag, *tag_name;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
798 gboolean is_closing_tag;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
799 CurrentMsgState current_state;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
800
28308
835e7fddf397 use memset instead of bzero for better portability and profit
Daniel Atallah <datallah@pidgin.im>
parents: 28307
diff changeset
801 memset(&current_state, 0, sizeof(current_state));
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
802
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
803 src_len = strlen(src);
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
804 dest = g_string_sized_new(src_len);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
805
28036
b9c7f979cd4f Minor optimization when sending and receiving messages on Yahoo: only
Mark Doliner <markdoliner@pidgin.im>
parents: 28035
diff changeset
806 for (i = 0; i < src_len; i++) {
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
807 if (src[i] == '<' && !no_more_gt_brackets) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
808 /* The start of an HTML tag */
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
809 j = i;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
810
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
811 while (j++ < src_len) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
812 if (src[j] != '>') {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
813 if (src[j] == '"') {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
814 /* We're inside a quoted attribute value. Skip to the end */
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
815 j++;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
816 while (j != src_len && src[j] != '"')
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
817 j++;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
818 } else if (src[j] == '\'') {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
819 /* We're inside a quoted attribute value. Skip to the end */
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
820 j++;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
821 while (j != src_len && src[j] != '\'')
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
822 j++;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
823 }
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
824 if (j != src_len)
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
825 /* Keep looking for the end of this tag */
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
826 continue;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
827
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
828 /* This < has no corresponding > */
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
829 g_string_append_c(dest, src[i]);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
830 no_more_gt_brackets = TRUE;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
831 break;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
832 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
833
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
834 tag = g_strndup(src + i, j - i + 1);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
835 tag_name = yahoo_markup_get_tag_name(tag, &is_closing_tag);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
836
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
837 if (g_str_equal(tag_name, "a")) {
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
838 const char *start;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
839 const char *end;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
840 GData *attributes;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
841 const char *attribute;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
842
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
843 /*
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
844 * TODO: Ideally we would replace this:
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 32280
diff changeset
845 * <a href="https://pidgin.im/">Pidgin</a>
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
846 * with this:
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 32280
diff changeset
847 * Pidgin (https://pidgin.im/)
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
848 *
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
849 * Currently we drop the text within the <a> tag and
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
850 * just show the URL. Doing it the fancy way is
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
851 * complicated when dealing with HTML tags within the
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
852 * <a> tag.
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
853 */
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
854
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
855 /* Append the URL */
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
856 purple_markup_find_tag(tag_name, tag, &start, &end, &attributes);
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
857 attribute = g_datalist_get_data(&attributes, "href");
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
858 if (attribute != NULL) {
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
859 if (purple_str_has_prefix(attribute, "mailto:"))
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
860 attribute += 7;
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
861 g_string_append(dest, attribute);
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
862 }
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
863 g_datalist_clear(&attributes);
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
864
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
865 /* Skip past the closing </a> tag */
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
866 end = purple_strcasestr(src + j, "</a>");
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
867 if (end != NULL)
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
868 j = end - src + 3;
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
869
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
870 } else if (g_str_equal(tag_name, "font")) {
28309
656e6e3170f0 This function no longer needs these two parameters
Mark Doliner <markdoliner@pidgin.im>
parents: 28308
diff changeset
871 parse_font_tag(dest, tag_name, tag, &colors, &tags);
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
872 } else if (g_str_equal(tag_name, "b")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
873 g_string_append(dest, "\033[1m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
874 current_state.bold = TRUE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
875 } else if (g_str_equal(tag_name, "/b")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
876 if (current_state.bold) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
877 g_string_append(dest, "\033[x1m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
878 current_state.bold = FALSE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
879 }
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
880 } else if (g_str_equal(tag_name, "i")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
881 current_state.italic = TRUE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
882 g_string_append(dest, "\033[2m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
883 } else if (g_str_equal(tag_name, "/i")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
884 if (current_state.italic) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
885 g_string_append(dest, "\033[x2m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
886 current_state.italic = FALSE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
887 }
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
888 } else if (g_str_equal(tag_name, "u")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
889 current_state.underline = TRUE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
890 g_string_append(dest, "\033[4m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
891 } else if (g_str_equal(tag_name, "/u")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
892 if (current_state.underline) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
893 g_string_append(dest, "\033[x4m");
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
894 current_state.underline = FALSE;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
895 }
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
896 } else if (g_str_equal(tag_name, "/a")) {
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
897 /* Do nothing */
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
898 } else if (g_str_equal(tag_name, "br")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
899 g_string_append_c(dest, '\n');
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
900 } else if (g_str_equal(tag_name, "/font")) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
901 if (tags != NULL) {
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
902 char *etag = tags->data;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
903 tags = g_slist_delete_link(tags, tags);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
904 g_string_append(dest, etag);
28312
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
905 if (colors != NULL) {
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
906 g_free(colors->data);
2624c0abf3ef Fix a bug in our outgoing yahoo message formatting where messages
Mark Doliner <markdoliner@pidgin.im>
parents: 28309
diff changeset
907 colors = g_slist_delete_link(colors, colors);
16169
4aa4ec9afa9c Stop Yahoo sending SPAN tags, fixes Yahoo part of ticket 78
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
908 }
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
909 g_free(etag);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
910 }
29239
d5708b46eac2 Don't send <span>...</span> on Yahoo. Fixes #11242, #10961.
Fartash Faghri <fartash.faghri@gmail.com>
parents: 28973
diff changeset
911 } else if (g_str_equal(tag_name, "span") || g_str_equal(tag_name, "/span")) {
d5708b46eac2 Don't send <span>...</span> on Yahoo. Fixes #11242, #10961.
Fartash Faghri <fartash.faghri@gmail.com>
parents: 28973
diff changeset
912 /* Do nothing */
28628
c06d717eb33c Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28340
diff changeset
913 } else {
c06d717eb33c Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28340
diff changeset
914 /* We don't know what the tag is. Send it unmodified. */
c06d717eb33c Fix sending /buzz on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28340
diff changeset
915 g_string_append(dest, tag);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
916 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
917
28292
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
918 i = j;
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
919 g_free(tag);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
920 g_free(tag_name);
e1f21cbb9b4d * Change yahoo_html_to_codes() a little to hopefully be more straight forward
Mark Doliner <markdoliner@pidgin.im>
parents: 28240
diff changeset
921 break;
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
922 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
923
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
924 } else {
28103
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
925 const char *entity;
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
926 int length;
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
927
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
928 entity = purple_markup_unescape_entity(src + i, &length);
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
929 if (entity != NULL) {
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
930 /* src[i] is the start of an HTML entity */
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
931 g_string_append(dest, entity);
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
932 i += length - 1;
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
933 } else
3d1f5d123294 Reuse our purple_markup_unescape_entity() function instead of
Mark Doliner <markdoliner@pidgin.im>
parents: 28102
diff changeset
934 /* src[i] is a normal character */
8440
b3cc68914150 [gaim-migrate @ 9170]
Tim Ringenbach <marv@pidgin.im>
parents: 8376
diff changeset
935 g_string_append_c(dest, src[i]);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
936 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
937 }
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
938
28009
6d11ca90ecc2 Simplify a wee bit
Mark Doliner <markdoliner@pidgin.im>
parents: 27959
diff changeset
939 esc = g_strescape(dest->str, NULL);
28293
8f160f6f9980 Make outgoing yahoo messages with links, font color, font face or font size
Mark Doliner <markdoliner@pidgin.im>
parents: 28292
diff changeset
940 purple_debug_misc("yahoo", "yahoo_html_to_codes(%s)=%s\n", src, esc);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
941 g_free(esc);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
942
28101
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
943 yahoo_htc_list_cleanup(colors);
b82c1e37c9a0 This is actually a stack, not a queue, so we can use a simpler data
Mark Doliner <markdoliner@pidgin.im>
parents: 28100
diff changeset
944 yahoo_htc_list_cleanup(tags);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
945
28009
6d11ca90ecc2 Simplify a wee bit
Mark Doliner <markdoliner@pidgin.im>
parents: 27959
diff changeset
946 return g_string_free(dest, FALSE);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6621
diff changeset
947 }
28786
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
948
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
949 YahooFederation yahoo_get_federation_from_name(const char *who)
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
950 {
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
951 YahooFederation fed = YAHOO_FEDERATION_NONE;
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
952 if (who[3] == '/') {
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
953 if (!g_ascii_strncasecmp(who, "msn", 3))
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
954 fed = YAHOO_FEDERATION_MSN;
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
955 else if (!g_ascii_strncasecmp(who, "ocs", 3))
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
956 fed = YAHOO_FEDERATION_OCS;
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
957 else if (!g_ascii_strncasecmp(who, "ibm", 3))
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
958 fed = YAHOO_FEDERATION_IBM;
29324
125eb74677d6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
Kartik Mohta <kartikmohta@gmail.com>
parents: 29239
diff changeset
959 else if (!g_ascii_strncasecmp(who, "pbx", 3))
125eb74677d6 Support Yahoo !PingBox. Includes a couple warning fixes. Fixes #7347.
Kartik Mohta <kartikmohta@gmail.com>
parents: 29239
diff changeset
960 fed = YAHOO_FEDERATION_PBX;
28786
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
961 }
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
962 return fed;
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
963 }
a0366821d1e4 Cannot send a file to a federated user on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28628
diff changeset
964

mercurial