src/protocols/yahoo/yahoo.c

Sat, 27 Sep 2003 19:17:21 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sat, 27 Sep 2003 19:17:21 +0000
changeset 6982
12f08de92674
parent 6847
0fda06bb588a
child 6986
40613e58e3d6
permissions
-rw-r--r--

[gaim-migrate @ 7538]
This is Mr. Holland's Opus. And by Mr. Holland I mean Robot101. He
rewrote the coreish IM image support so that the binary data gets
ripped out in the prpl and put in an imgstore instead of just being
passed in the same huge as char string as the actual message. This
is good because it's prpl agnostic, or something. It also means
we don't have a silly length of "-1" with pretty much every send or
receive IM function.

It should be crash free, bug free, and memleak free, but additional
testing is always a good thing.

If you like good stuff then you'll love this patch. But don't take
my word for it--ba dun dunt!

2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * gaim
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx>
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 * (at your option) any later version.
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * GNU General Public License for more details.
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
22 #include "internal.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
24 #include "account.h"
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
25 #include "accountopt.h"
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
26 #include "blist.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
27 #include "debug.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 #include "multi.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
29 #include "notify.h"
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
30 #include "privacy.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 #include "prpl.h"
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 #include "proxy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
33 #include "request.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
34 #include "server.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
35 #include "util.h"
6115
ac81410298f2 [gaim-migrate @ 6578]
Christian Hammond <chipx86@chipx86.com>
parents: 6069
diff changeset
36 #include "html.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
37
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
38 #include "yahoo.h"
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
39 #include "yahoochat.h"
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
40 #include "md5.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
42 /* XXX */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6321
diff changeset
43 #include "gtkinternal.h"
6546
6a14dfe43d5c [gaim-migrate @ 7068]
Mark Doliner <markdoliner@pidgin.im>
parents: 6516
diff changeset
44 #include "gaim.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
45 #include "ui.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3596
diff changeset
46
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
47 extern char *yahoo_crypt(const char *, const char *);
2795
b2e15894ab75 [gaim-migrate @ 2808]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2786
diff changeset
48
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
49 /* #define YAHOO_DEBUG */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 #define USEROPT_MAIL 0
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
53 #define YAHOO_PAGER_HOST "scs.yahoo.com"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 #define YAHOO_PAGER_PORT 5050
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
55 #define YAHOO_PROFILE_URL "http://profiles.yahoo.com/"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56
6810
c3ee52ec9b11 [gaim-migrate @ 7350]
Sean Egan <seanegan@pidgin.im>
parents: 6804
diff changeset
57 #define YAHOO_PROTO_VER 0x000b
3467
94a963c6c817 [gaim-migrate @ 3517]
Sean Egan <seanegan@pidgin.im>
parents: 3466
diff changeset
58
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 #define YAHOO_PACKET_HDRLEN (4 + 2 + 2 + 2 + 2 + 4 + 4)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60
6791
af1653e39a87 [gaim-migrate @ 7330]
Luke Schierer <lschiere@pidgin.im>
parents: 6787
diff changeset
61 static void yahoo_add_buddy(GaimConnection *gc, const char *who, GaimGroup *);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
62
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
63 static struct yahoo_friend *yahoo_friend_new()
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
64 {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
65 struct yahoo_friend *ret;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
66
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
67 ret = g_new0(struct yahoo_friend, 1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
68 ret->status = YAHOO_STATUS_OFFLINE;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
69
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
70 return ret;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
71 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
72
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
73 static void yahoo_friend_free(gpointer p)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
74 {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
75 struct yahoo_friend *f = p;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
76 if (f->msg)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
77 g_free(f->msg);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
78 if (f->game)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
79 g_free(f->game);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
80 g_free(f);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
81 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
82
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
83 struct yahoo_packet *yahoo_packet_new(enum yahoo_service service, enum yahoo_status status, int id)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 struct yahoo_packet *pkt = g_new0(struct yahoo_packet, 1);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 pkt->service = service;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 pkt->status = status;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 pkt->id = id;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 return pkt;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
94 void yahoo_packet_hash(struct yahoo_packet *pkt, int key, const char *value)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 struct yahoo_pair *pair = g_new0(struct yahoo_pair, 1);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 pair->key = key;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 pair->value = g_strdup(value);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 pkt->hash = g_slist_append(pkt->hash, pair);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 static int yahoo_packet_length(struct yahoo_packet *pkt)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 GSList *l;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 int len = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 int tmp = pair->key;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 do {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 tmp /= 10;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 len++;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 } while (tmp);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 len += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 len += strlen(pair->value);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 len += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 return len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 /* sometimes i wish prpls could #include things from other prpls. then i could just
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 * use the routines from libfaim and not have to admit to knowing how they work. */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 #define yahoo_put16(buf, data) ( \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 (*(buf) = (u_char)((data)>>8)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 (*((buf)+1) = (u_char)(data)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 2)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 #define yahoo_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 #define yahoo_put32(buf, data) ( \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 (*((buf)) = (u_char)((data)>>24)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 (*((buf)+1) = (u_char)((data)>>16)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 (*((buf)+2) = (u_char)((data)>>8)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136 (*((buf)+3) = (u_char)(data)&0xff), \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137 4)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 #define yahoo_get32(buf) ((((*(buf))<<24)&0xff000000) + \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 (((*((buf)+1))<<16)&0x00ff0000) + \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 (((*((buf)+2))<< 8)&0x0000ff00) + \
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 (((*((buf)+3) )&0x000000ff)))
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 static void yahoo_packet_read(struct yahoo_packet *pkt, guchar *data, int len)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 while (pos + 1 < len) {
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
148 char key[64], *value = NULL, *esc;
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
149 int accept;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 int x;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 struct yahoo_pair *pair = g_new0(struct yahoo_pair, 1);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 x = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 while (pos + 1 < len) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 if (data[pos] == 0xc0 && data[pos + 1] == 0x80)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 key[x++] = data[pos++];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 key[x] = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 pair->key = strtol(key, NULL, 10);
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
163 accept = x; /* if x is 0 there was no key, so don't accept it */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164
3996
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
165 if (len - pos + 1 <= 0) {
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
166 /* Truncated. Garbage or something. */
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
167 accept = 0;
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
168 }
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
169
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
170 if (accept) {
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
171 value = g_malloc(len - pos + 1);
3996
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
172 x = 0;
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
173 while (pos + 1 < len) {
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
174 if (data[pos] == 0xc0 && data[pos + 1] == 0x80)
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
175 break;
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
176 value[x++] = data[pos++];
3996
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
177 }
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
178 value[x] = 0;
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
179 pair->value = g_strdup(value);
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
180 g_free(value);
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
181 pkt->hash = g_slist_append(pkt->hash, pair);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
182 esc = g_strescape(pair->value, NULL);
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
183 gaim_debug(GAIM_DEBUG_MISC, "yahoo",
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
184 "Key: %d \tValue: %s\n", pair->key, esc);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
185 g_free(esc);
2724
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
186 } else {
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
187 g_free(pair);
d17b226540d3 [gaim-migrate @ 2737]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2723
diff changeset
188 }
3996
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
189 pos += 2;
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
190
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
191 /* Skip over garbage we've noticed in the mail notifications */
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
192 if (data[0] == '9' && data[pos] == 0x01)
5e58ec8c3b45 [gaim-migrate @ 4191]
Christian Hammond <chipx86@chipx86.com>
parents: 3768
diff changeset
193 pos++;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
194 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
195 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 static void yahoo_packet_write(struct yahoo_packet *pkt, guchar *data)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 guchar buf[100];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206 g_snprintf(buf, sizeof(buf), "%d", pair->key);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 strcpy(data + pos, buf);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 pos += strlen(buf);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 data[pos++] = 0xc0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 data[pos++] = 0x80;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 strcpy(data + pos, pair->value);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 pos += strlen(pair->value);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 data[pos++] = 0xc0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215 data[pos++] = 0x80;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
216
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
218 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221 static void yahoo_packet_dump(guchar *data, int len)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
222 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
223 #ifdef YAHOO_DEBUG
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
224 int i;
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
225
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
226 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "");
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
227
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
228 for (i = 0; i + 1 < len; i += 2) {
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
229 if ((i % 16 == 0) && i) {
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
230 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
231 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "");
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
232 }
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
233
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
234 gaim_debug(GAIM_DEBUG_MISC, NULL, "%02x%02x ", data[i], data[i + 1]);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
235 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
236 if (i < len)
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
237 gaim_debug(GAIM_DEBUG_MISC, NULL, "%02x", data[i]);
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
238
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
239 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
240 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "");
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
241
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
242 for (i = 0; i < len; i++) {
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
243 if ((i % 16 == 0) && i) {
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
244 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
245 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "");
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
246 }
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
247
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
248 if (g_ascii_isprint(data[i]))
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
249 gaim_debug(GAIM_DEBUG_MISC, NULL, "%c ", data[i]);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
250 else
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
251 gaim_debug(GAIM_DEBUG_MISC, NULL, ". ");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252 }
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
253
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
254 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255 #endif
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
256 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
257
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
258 int yahoo_send_packet(struct yahoo_data *yd, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
259 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
260 int pktlen = yahoo_packet_length(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
261 int len = YAHOO_PACKET_HDRLEN + pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
262 int ret;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
263
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
264 guchar *data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267 if (yd->fd < 0)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
268 return -1;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270 data = g_malloc0(len + 1);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 memcpy(data + pos, "YMSG", 4); pos += 4;
3467
94a963c6c817 [gaim-migrate @ 3517]
Sean Egan <seanegan@pidgin.im>
parents: 3466
diff changeset
273 pos += yahoo_put16(data + pos, YAHOO_PROTO_VER);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 pos += yahoo_put16(data + pos, 0x0000);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 pos += yahoo_put16(data + pos, pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276 pos += yahoo_put16(data + pos, pkt->service);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277 pos += yahoo_put32(data + pos, pkt->status);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 pos += yahoo_put32(data + pos, pkt->id);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280 yahoo_packet_write(pkt, data + pos);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
281
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 yahoo_packet_dump(data, len);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
283 ret = write(yd->fd, data, len);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 g_free(data);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
286 return ret;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
287 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
288
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
289 void yahoo_packet_free(struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
290 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
291 while (pkt->hash) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
292 struct yahoo_pair *pair = pkt->hash->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
293 g_free(pair->value);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
294 g_free(pair);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
295 pkt->hash = g_slist_remove(pkt->hash, pair);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
296 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
297 g_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
298 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
299
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
300 static void yahoo_update_status(GaimConnection *gc, const char *name, struct yahoo_friend *f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
301 {
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
302 int online = 1;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
303
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
304 if (!gc || !name || !f || !gaim_find_buddy(gaim_connection_get_account(gc), name))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
305 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
306
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
307 if (f->status == YAHOO_STATUS_OFFLINE)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
308 online = 0;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
309
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
310 serv_got_update(gc, name, online, 0, 0, f->idle, f->away ? UC_UNAVAILABLE : 0);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
311 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
312
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
313 static void yahoo_process_status(GaimConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
314 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
315 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
316 GSList *l = pkt->hash;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
317 struct yahoo_friend *f = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
318 char *name = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
319
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
320
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
321 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
322 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
323
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
324 switch (pair->key) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
325 case 0: /* we won't actually do anything with this */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
326 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
327 case 1: /* we don't get the full buddy list here. */
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
328 if (!yd->logged_in) {
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
329 gaim_connection_set_state(gc, GAIM_CONNECTED);
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
330 serv_finish_login(gc);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
331 gaim_connection_set_display_name(gc, pair->value);
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
332 yd->logged_in = TRUE;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
333
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
334 /* this requests the list. i have a feeling that this is very evil
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
335 *
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
336 * scs.yahoo.com sends you the list before this packet without it being
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
337 * requested
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
338 *
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
339 * do_import(gc, NULL);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
340 * newpkt = yahoo_packet_new(YAHOO_SERVICE_LIST, YAHOO_STATUS_OFFLINE, 0);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
341 * yahoo_send_packet(yd, newpkt);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
342 * yahoo_packet_free(newpkt);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
343 */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
344
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
345 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
346 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
347 case 8: /* how many online buddies we have */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349 case 7: /* the current buddy */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
350 name = pair->value;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
351 f = g_hash_table_lookup(yd->friends, name);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
352 if (!f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
353 f = yahoo_friend_new();
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
354 g_hash_table_insert(yd->friends, g_strdup(name), f);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
355 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
356 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357 case 10: /* state */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
358 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
359 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
360
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
361 f->status = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
362 if ((f->status >= YAHOO_STATUS_BRB) && (f->status <= YAHOO_STATUS_STEPPEDOUT))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
363 f->away = 1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
364 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
365 f->away = 0;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
366 if (f->status == YAHOO_STATUS_IDLE)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
367 f->idle = time(NULL);
6804
8247ddcbdf53 [gaim-migrate @ 7344]
Tim Ringenbach <marv@pidgin.im>
parents: 6796
diff changeset
368 else
8247ddcbdf53 [gaim-migrate @ 7344]
Tim Ringenbach <marv@pidgin.im>
parents: 6796
diff changeset
369 f->idle = 0;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
370 if (f->status != YAHOO_STATUS_CUSTOM) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
371 g_free(f->msg);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
372 f->msg = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
373 }
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
374
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
375 f->sms = 0;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
376 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
377 case 19: /* custom message */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
378 if (f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
379 if (f->msg)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
380 g_free(f->msg);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
381 f->msg = g_strdup(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
382 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
383 break;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
384 case 11: /* this is the buddy's session id */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386 case 17: /* in chat? */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
388 case 47: /* is custom status away or not? 2=idle*/
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
389 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
390 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
391 f->away = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
392 if (f->away == 2)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
393 f->idle = time(NULL);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
394 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
395 case 138: /* either we're not idle, or we are but won't say how long */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
396 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
397 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
398
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
399 if (f->idle)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
400 f->idle = -1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
401 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
402 case 137: /* usually idle time in seconds, sometimes login time */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
403 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
404 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
405
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
406 if (f->status != YAHOO_STATUS_AVAILABLE)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
407 f->idle = time(NULL) - strtol(pair->value, NULL, 10);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
408 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
409 case 13: /* bitmask, bit 0 = pager, bit 1 = chat, bit 2 = game */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
410 if (strtol(pair->value, NULL, 10) == 0) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
411 if (f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
412 f->status = YAHOO_STATUS_OFFLINE;
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4731
diff changeset
413 serv_got_update(gc, name, 0, 0, 0, 0, 0);
2807
fe1ea0453890 [gaim-migrate @ 2820]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2805
diff changeset
414 break;
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
415 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
416
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
417 if (f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
418 yahoo_update_status(gc, name, f);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
419 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
420 case 60: /* SMS */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
421 if (f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
422 f->sms = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
423 yahoo_update_status(gc, name, f);
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
424 }
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
425 break;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2951
diff changeset
426 case 16: /* Custom error message */
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5367
diff changeset
427 gaim_notify_error(gc, NULL, pair->value, NULL);
2951
fa9b438bf678 [gaim-migrate @ 2964]
Rob Flynn <gaim@robflynn.com>
parents: 2918
diff changeset
428 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429 default:
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
430 gaim_debug(GAIM_DEBUG_ERROR, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
431 "Unknown status key %d\n", pair->key);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
439 static void yahoo_do_group_check(GaimAccount *account, GHashTable *ht, const char *name, const char *group,
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
440 gboolean *export)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
441 {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
442 GaimBuddy *b;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
443 GaimGroup *g;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
444 GSList *list, *i;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
445 gboolean onlist = 0;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
446 char *oname = NULL;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
447
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
448 if (!g_hash_table_lookup_extended(ht, name, (gpointer *) &oname, (gpointer *) &list))
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
449 list = gaim_find_buddies(account, name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
450 else
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
451 g_hash_table_steal(ht, name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
452
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
453 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
454 b = i->data;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
455 g = gaim_find_buddys_group(b);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
456 if (!gaim_utf8_strcasecmp(group, g->name)) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
457 gaim_debug(GAIM_DEBUG_MISC, "yahoo",
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
458 "Oh good, %s is in the right group (%s).\n", name, group);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
459 list = g_slist_delete_link(list, i);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
460 onlist = 1;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
461 break;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
462 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
463 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
464
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
465 if (!onlist) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
466 gaim_debug(GAIM_DEBUG_MISC, "yahoo",
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
467 "Uhoh, %s isn't on the list (or not in this group), adding him to group %s.\n", name, group);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
468 if (!(g = gaim_find_group(group))) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
469 g = gaim_group_new(group);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
470 gaim_blist_add_group(g, NULL);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
471 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
472 b = gaim_buddy_new(account, name, NULL);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
473 gaim_blist_add_buddy(b, NULL, g, NULL);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
474 *export = TRUE;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
475 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
476
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
477 if (list) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
478 if (!oname)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
479 oname = g_strdup(name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
480 g_hash_table_insert(ht, oname, list);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
481 } else if (oname)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
482 g_free(oname);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
483 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
484
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
485 static void yahoo_do_group_cleanup(gpointer key, gpointer value, gpointer user_data)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
486 {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
487 char *name = key;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
488 GSList *list = value, *i;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
489 GaimBuddy *b;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
490 GaimGroup *g;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
491 gboolean *export = user_data;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
492
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
493 if (list)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
494 *export = TRUE;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
495
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
496 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
497 b = i->data;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
498 g = gaim_find_buddys_group(b);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
499 gaim_debug(GAIM_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, g->name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
500 gaim_blist_remove_buddy(b);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
501 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
502 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
503
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
504 static void yahoo_process_list(GaimConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 gboolean export = FALSE;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
508 gboolean got_serv_list = FALSE;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
509 GaimBuddy *b;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
510 GaimGroup *g;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
511 struct yahoo_friend *f = NULL;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
512 GaimAccount *account = gaim_connection_get_account(gc);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
513 struct yahoo_data *yd = gc->proto_data;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
514 GHashTable *ht;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
515
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
516 char **lines;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
517 char **split;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
518 char **buddies;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
519 char **tmp, **bud;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
521 while (l) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
522 struct yahoo_pair *pair = l->data;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
523 l = l->next;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
524
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
525 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
526 case 87:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
527 if (!yd->tmp_serv_blist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
528 yd->tmp_serv_blist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
529 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
530 g_string_append(yd->tmp_serv_blist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
531 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
532 case 88:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
533 if (!yd->tmp_serv_ilist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
534 yd->tmp_serv_ilist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
535 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
536 g_string_append(yd->tmp_serv_ilist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
537 break;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
538 }
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
539 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
541 if (pkt->status != 0)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
542 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
543
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
544 if (yd->tmp_serv_blist) {
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
545 ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
546
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
547 lines = g_strsplit(yd->tmp_serv_blist->str, "\n", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
548 for (tmp = lines; *tmp; tmp++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
549 split = g_strsplit(*tmp, ":", 2);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
550 if (!split)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
551 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
552 if (!split[0] || !split[1]) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
553 g_strfreev(split);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
554 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
555 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
556 buddies = g_strsplit(split[1], ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
557 for (bud = buddies; bud && *bud; bud++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
558 if (!(f = g_hash_table_lookup(yd->friends, *bud))) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
559 f = yahoo_friend_new(*bud);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
560 g_hash_table_insert(yd->friends, g_strdup(*bud), f);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
561 }
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
562 if (!(b = gaim_find_buddy(account, *bud))) {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
563 if (!(g = gaim_find_group(split[0]))) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
564 g = gaim_group_new(split[0]);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
565 gaim_blist_add_group(g, NULL);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
566 }
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
567 b = gaim_buddy_new(account, *bud, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
568 gaim_blist_add_buddy(b, NULL, g, NULL);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
569 export = TRUE;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
570 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
571
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
572 yahoo_do_group_check(account, ht, *bud, split[0], &export);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
573 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
574 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
575 g_strfreev(split);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
576 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
577 g_strfreev(lines);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
578
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
579 g_string_free(yd->tmp_serv_blist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
580 yd->tmp_serv_blist = NULL;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
581 g_hash_table_foreach(ht, yahoo_do_group_cleanup, &export);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
582 g_hash_table_destroy(ht);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
583 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
584
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
585
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
586 if (yd->tmp_serv_ilist) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
587 buddies = g_strsplit(yd->tmp_serv_ilist->str, ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
588 for (bud = buddies; bud && *bud; bud++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
589 /* The server is already ignoring the user */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
590 got_serv_list = TRUE;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
591 gaim_privacy_deny_add(gc->account, *bud, 1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
592 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
593 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
594
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
595 g_string_free(yd->tmp_serv_ilist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
596 yd->tmp_serv_ilist = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
597 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
598
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
599 if (got_serv_list) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
600 gc->account->perm_deny = 4;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
601 serv_set_permit_deny(gc);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
602 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 if (export)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
604 gaim_blist_save();
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
606
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
607 static void yahoo_process_notify(GaimConnection *gc, struct yahoo_packet *pkt)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
608 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
609 char *msg = NULL;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
610 char *from = NULL;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
611 char *stat = NULL;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
612 char *game = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
613 struct yahoo_friend *f = NULL;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
614 GSList *l = pkt->hash;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
615 struct yahoo_data *yd = (struct yahoo_data*) gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
616
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
617 while (l) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
618 struct yahoo_pair *pair = l->data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
619 if (pair->key == 4)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
620 from = pair->value;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
621 if (pair->key == 49)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
622 msg = pair->value;
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
623 if (pair->key == 13)
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
624 stat = pair->value;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
625 if (pair->key == 14)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
626 game = pair->value;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
627 l = l->next;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
628 }
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
629
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
630 if (!from || !msg)
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
631 return;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
632
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4777
diff changeset
633 if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))) {
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
634 if (*stat == '1')
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
635 serv_got_typing(gc, from, 0, GAIM_TYPING);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
636 else
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
637 serv_got_typing_stopped(gc, from);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4777
diff changeset
638 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
639 GaimBuddy *bud = gaim_find_buddy(gc->account, from);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
640
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
641 if (!bud) {
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
642 gaim_debug(GAIM_DEBUG_WARNING, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
643 "%s is playing a game, and doesn't want "
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
644 "you to know.\n", from);
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
645 }
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
646
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
647 f = g_hash_table_lookup(yd->friends, from);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
648 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
649 return; /* if they're not on the list, don't bother */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
650
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
651 if (f->game) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
652 g_free(f->game);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
653 f->game = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
654 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
655
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
656 if (*stat == '1') {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
657 f->game = g_strdup(game);
3020
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3019
diff changeset
658 if (bud)
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
659 yahoo_update_status(gc, from, f);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
660 }
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
661 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
662 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
663
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
664 static void yahoo_process_message(GaimConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 char *msg = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 char *from = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 time_t tm = time(NULL);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
669 GSList *l = pkt->hash;
6069
9f46466c89f8 [gaim-migrate @ 6519]
Luke Schierer <lschiere@pidgin.im>
parents: 6061
diff changeset
670
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
671 if (pkt->status <= 1 || pkt->status == 5) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
672 while (l) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
673 struct yahoo_pair *pair = l->data;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
674 if (pair->key == 4)
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
675 from = pair->value;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
676 if (pair->key == 15)
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
677 tm = strtol(pair->value, NULL, 10);
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
678 if (pair->key == 14) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
679 char *m;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
680
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
681 msg = pair->value;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
682
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
683 strip_linefeed(msg);
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
684 m = yahoo_codes_to_html(msg);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6847
diff changeset
685 serv_got_im(gc, from, m, 0, tm);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
686 g_free(m);
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
687
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
688 tm = time(NULL);
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
689 }
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
690 l = l->next;
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
691 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
692 } else if (pkt->status == 2) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5367
diff changeset
693 gaim_notify_error(gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5367
diff changeset
694 _("Your Yahoo! message did not get sent."), NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
698 static void yahoo_buddy_added_us(GaimConnection *gc, struct yahoo_packet *pkt) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699 char *id = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
700 char *who = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
701 char *msg = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
702 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
703
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
704 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
705 struct yahoo_pair *pair = l->data;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
706
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
707 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
708 case 1:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
709 id = pair->value;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
710 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
711 case 3:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
712 who = pair->value;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
713 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
714 case 15: /* time, for when they add us and we're offline */
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
715 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
716 case 14:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
717 msg = pair->value;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
718 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
719 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
720 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
721 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
722
2682
49c15f67d4b1 [gaim-migrate @ 2695]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
723 if (id)
49c15f67d4b1 [gaim-migrate @ 2695]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
724 show_got_added(gc, id, who, NULL, msg);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
725 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
726
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
727 static void yahoo_buddy_denied_our_add(GaimConnection *gc, struct yahoo_packet *pkt)
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
728 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
729 char *who = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
730 char *msg = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
731 GSList *l = pkt->hash;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
732 GString *buf = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
733 struct yahoo_data *yd = gc->proto_data;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
734
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
735 while (l) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
736 struct yahoo_pair *pair = l->data;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
737
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
738 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
739 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
740 who = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
741 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
742 case 14:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
743 msg = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
744 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
745 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
746 l = l->next;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
747 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
748
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
749 if (who) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
750 buf = g_string_sized_new(0);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
751 if (!msg)
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
752 g_string_printf(buf, _("%s has (retroactively) denied your request to add them to your list."), who);
2683
06507dfdd96c [gaim-migrate @ 2696]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2682
diff changeset
753 else
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
754 g_string_printf(buf, _("%s has (retroactively) denied your request to add them to your list for the following reason: %s."), who, msg);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
755 gaim_notify_info(gc, NULL, _("Add buddy rejected"), buf->str);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
756 g_string_free(buf, TRUE);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
757 g_hash_table_remove(yd->friends, who);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
758 serv_got_update(gc, who, 0, 0, 0, 0, 0);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
759 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
760 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
761
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
762 static void yahoo_process_contact(GaimConnection *gc, struct yahoo_packet *pkt)
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
763 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
764
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
765
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
766 switch (pkt->status) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
767 case 1:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
768 yahoo_process_status(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
769 return;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
770 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
771 yahoo_buddy_added_us(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
772 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
773 case 7:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
774 yahoo_buddy_denied_our_add(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
775 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
776 default:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
777 break;
2683
06507dfdd96c [gaim-migrate @ 2696]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2682
diff changeset
778 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
781 static void yahoo_process_mail(GaimConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 {
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
783 GaimAccount *account = gaim_connection_get_account(gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 char *who = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 char *email = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 char *subj = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 int count = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
790 if (!gaim_account_get_check_mail(account))
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
791 return;
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
792
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
793 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
794 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795 if (pair->key == 9)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
796 count = strtol(pair->value, NULL, 10);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 else if (pair->key == 43)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 who = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 else if (pair->key == 42)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 email = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 else if (pair->key == 18)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 subj = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
805
4001
ec3725a49136 [gaim-migrate @ 4201]
Luke Schierer <lschiere@pidgin.im>
parents: 3996
diff changeset
806 if (who && subj && email && *email) {
2850
783e46199cb4 [gaim-migrate @ 2863]
abiligiri
parents: 2813
diff changeset
807 char *from = g_strdup_printf("%s (%s)", who, email);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
808
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
809 gaim_notify_email(gc, subj, from, gaim_account_get_username(account),
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
810 "http://mail.yahoo.com/", NULL, NULL);
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
811
2850
783e46199cb4 [gaim-migrate @ 2863]
abiligiri
parents: 2813
diff changeset
812 g_free(from);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
813 } else if (count > 0) {
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
814 const char *to = gaim_account_get_username(account);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
815 const char *url = "http://mail.yahoo.com/";
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
816
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
817 gaim_notify_emails(gc, count, FALSE, NULL, NULL, &to, &url,
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
818 NULL, NULL);
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
819 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820 }
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
821 /* This is the y64 alphabet... it's like base64, but has a . and a _ */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
822 char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
823
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
824 /* This is taken from Sylpheed by Hiroyuki Yamamoto. We have our own tobase64 function
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
825 * in util.c, but it has a bug I don't feel like finding right now ;) */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
826 void to_y64(unsigned char *out, const unsigned char *in, int inlen)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
827 /* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
828 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
829 for (; inlen >= 3; inlen -= 3)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
830 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
831 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
832 *out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
833 *out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
834 *out++ = base64digits[in[2] & 0x3f];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
835 in += 3;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
836 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
837 if (inlen > 0)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
838 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
839 unsigned char fragment;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
840
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
841 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
842 fragment = (in[0] << 4) & 0x30;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
843 if (inlen > 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
844 fragment |= in[1] >> 4;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
845 *out++ = base64digits[fragment];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
846 *out++ = (inlen < 2) ? '-' : base64digits[(in[1] << 2) & 0x3c];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
847 *out++ = '-';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
848 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
849 *out = '\0';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
850 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
851
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
852 static void yahoo_process_auth(GaimConnection *gc, struct yahoo_packet *pkt)
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
853 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
854 char *seed = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
855 char *sn = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
856 GSList *l = pkt->hash;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
857 struct yahoo_data *yd = gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
858 GaimAccount *account = gaim_connection_get_account(gc);
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
859
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
860 while (l) {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
861 struct yahoo_pair *pair = l->data;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
862 if (pair->key == 94)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
863 seed = pair->value;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
864 if (pair->key == 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
865 sn = pair->value;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
866 l = l->next;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
867 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
868
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
869 if (seed) {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
870 struct yahoo_packet *pack;
5921
b49d0c63697a [gaim-migrate @ 6361]
Sean Egan <seanegan@pidgin.im>
parents: 5920
diff changeset
871 const char *name = normalize(gaim_account_get_username(account));
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
872 const char *pass = gaim_account_get_password(account);
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
873
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
874 /* So, Yahoo has stopped supporting its older clients in India, and undoubtedly
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
875 * will soon do so in the rest of the world.
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
876 *
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
877 * The new clients use this authentication method. I warn you in advance, it's
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
878 * bizzare, convoluted, inordinately complicated. It's also no more secure than
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
879 * crypt() was. The only purpose this scheme could serve is to prevent third
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
880 * part clients from connecting to their servers.
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
881 *
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
882 * Sorry, Yahoo.
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
883 */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
884
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
885 md5_byte_t result[16];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
886 md5_state_t ctx;
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
887
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
888 char *crypt_result;
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
889 char password_hash[25];
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
890 char crypt_hash[25];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
891 char *hash_string_p = g_malloc(50 + strlen(sn));
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
892 char *hash_string_c = g_malloc(50 + strlen(sn));
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
893
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
894 char checksum;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
895
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
896 int sv;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
897
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
898 char result6[25];
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
899 char result96[25];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
900
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
901 sv = seed[15];
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
902 sv = sv % 8;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
903
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
904 md5_init(&ctx);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
905 md5_append(&ctx, pass, strlen(pass));
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
906 md5_finish(&ctx, result);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
907 to_y64(password_hash, result, 16);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
908
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
909 md5_init(&ctx);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
910 crypt_result = yahoo_crypt(pass, "$1$_2S43d5f$");
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
911 md5_append(&ctx, crypt_result, strlen(crypt_result));
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
912 md5_finish(&ctx, result);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
913 to_y64(crypt_hash, result, 16);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
914
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
915 switch (sv) {
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
916 case 1:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
917 case 6:
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
918 checksum = seed[seed[9] % 16];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
919 g_snprintf(hash_string_p, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
920 "%c%s%s%s", checksum, name, seed, password_hash);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
921 g_snprintf(hash_string_c, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
922 "%c%s%s%s", checksum, name, seed, crypt_hash);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
923 break;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
924 case 2:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
925 case 7:
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
926 checksum = seed[seed[15] % 16];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
927 g_snprintf(hash_string_p, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
928 "%c%s%s%s", checksum, seed, password_hash, name);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
929 g_snprintf(hash_string_c, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
930 "%c%s%s%s", checksum, seed, crypt_hash, name);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
931 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
932 case 3:
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
933 checksum = seed[seed[1] % 16];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
934 g_snprintf(hash_string_p, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
935 "%c%s%s%s", checksum, name, password_hash, seed);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
936 g_snprintf(hash_string_c, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
937 "%c%s%s%s", checksum, name, crypt_hash, seed);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
938 break;
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
939 case 4:
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
940 checksum = seed[seed[3] % 16];
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
941 g_snprintf(hash_string_p, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
942 "%c%s%s%s", checksum, password_hash, seed, name);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
943 g_snprintf(hash_string_c, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
944 "%c%s%s%s", checksum, crypt_hash, seed, name);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
945 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
946 case 0:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
947 case 5:
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
948 checksum = seed[seed[7] % 16];
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
949 g_snprintf(hash_string_p, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
950 "%c%s%s%s", checksum, password_hash, name, seed);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
951 g_snprintf(hash_string_c, strlen(sn) + 50,
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
952 "%c%s%s%s", checksum, crypt_hash, name, seed);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
953 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
954 }
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
955
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
956 md5_init(&ctx);
3157
42016075531b [gaim-migrate @ 3173]
Toby Gray
parents: 3147
diff changeset
957 md5_append(&ctx, hash_string_p, strlen(hash_string_p));
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
958 md5_finish(&ctx, result);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
959 to_y64(result6, result, 16);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
960
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
961 md5_init(&ctx);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
962 md5_append(&ctx, hash_string_c, strlen(hash_string_c));
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
963 md5_finish(&ctx, result);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
964 to_y64(result96, result, 16);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
965
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
966 pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, YAHOO_STATUS_AVAILABLE, 0);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
967 yahoo_packet_hash(pack, 0, name);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
968 yahoo_packet_hash(pack, 6, result6);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
969 yahoo_packet_hash(pack, 96, result96);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
970 yahoo_packet_hash(pack, 1, name);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
971
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
972 yahoo_send_packet(yd, pack);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
973
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
974 g_free(hash_string_p);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
975 g_free(hash_string_c);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
976
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
977 yahoo_packet_free(pack);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
978 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
979 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
981 static void ignore_buddy(GaimBuddy *b) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
982 GaimGroup *g;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
983 GaimConversation *c;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
984 GaimAccount *account;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
985 gchar *name;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
986
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
987 if (!b)
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
988 return;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
989
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
990 g = gaim_find_buddys_group(b);
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
991 name = g_strdup(b->name);
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
992 account = b->account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
993
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
994 gaim_debug(GAIM_DEBUG_INFO, "blist",
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
995 "Removing '%s' from buddy list.\n", b->name);
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
996 serv_remove_buddy(account->gc, name, g->name);
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
997 gaim_blist_remove_buddy(b);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
998
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
999 serv_add_deny(account->gc, name);
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
1000 gaim_blist_save();
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1001
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
1002 c = gaim_find_conversation_with_account(name, account);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1003
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
1004 if (c != NULL)
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
1005 gaim_conversation_update(c, GAIM_CONV_UPDATE_REMOVE);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1006
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1007 g_free(name);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1008 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1009
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1010 static void keep_buddy(GaimBuddy *b) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1011 gaim_privacy_deny_remove(b->account, b->name, 1);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1012 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1013
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1014 static void yahoo_process_ignore(GaimConnection *gc, struct yahoo_packet *pkt) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1015 GaimBuddy *b;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1016 GSList *l;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1017 gchar *who = NULL;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1018 gchar *sn = NULL;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1019 gchar buf[BUF_LONG];
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1020 gint ignore = 0;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1021 gint status = 0;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1022
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1023 for (l = pkt->hash; l; l = l->next) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1024 struct yahoo_pair *pair = l->data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1025 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1026 case 0:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1027 who = pair->value;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1028 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1029 case 1:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1030 sn = pair->value;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1031 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1032 case 13:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1033 ignore = strtol(pair->value, NULL, 10);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1034 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1035 case 66:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1036 status = strtol(pair->value, NULL, 10);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1037 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1038 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1039 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1040 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1041 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1042
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1043 switch (status) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1044 case 12:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1045 b = gaim_find_buddy(gc->account, who);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1046 g_snprintf(buf, sizeof(buf), _("You have tried to ignore %s, but the "
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1047 "user is on your buddy list. Clicking \"Yes\" "
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1048 "will remove and ignore the buddy."), who);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1049 gaim_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0, b,
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1050 G_CALLBACK(ignore_buddy),
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1051 G_CALLBACK(keep_buddy));
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1052 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1053 case 2:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1054 case 3:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1055 case 0:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1056 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1057 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1058 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1059 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1060
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1061 static void yahoo_process_authresp(GaimConnection *gc, struct yahoo_packet *pkt)
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1062 {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1063 GSList *l = pkt->hash;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1064 int err = 0;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1065 char *msg;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1066
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1067 while (l) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1068 struct yahoo_pair *pair = l->data;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1069
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1070 if (pair->key == 66)
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1071 err = strtol(pair->value, NULL, 10);
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1072
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1073 l = l->next;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1074 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1075
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1076 switch (err) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1077 case 3:
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1078 msg = _("Invalid username.");
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1079 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1080 case 13:
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1081 msg = _("Incorrect password.");
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1082 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1083 default:
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1084 msg = _("Unknown error.");
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1085 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1086
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1087 gaim_connection_error(gc, msg);
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1088 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
1089
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1090 static void yahoo_process_addbuddy(GaimConnection *gc, struct yahoo_packet *pkt)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1091 {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1092 int err = 0;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1093 char *who = NULL;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1094 char *group = NULL;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1095 char *buf;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1096 struct yahoo_friend *f;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1097 struct yahoo_data *yd = gc->proto_data;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1098 GSList *l = pkt->hash;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1099
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1100 while (l) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1101 struct yahoo_pair *pair = l->data;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1102
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1103 switch (pair->key) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1104 case 66:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1105 err = strtol(pair->value, NULL, 10);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1106 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1107 case 7:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1108 who = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1109 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1110 case 65:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1111 group = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1112 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1113 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1114
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1115 l = l->next;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1116 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1117
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1118 if (!who)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1119 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1120 if (!group)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1121 group = "";
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1122
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1123 if (!err || (err == 2)) { /* 0 = ok, 2 = already on serv list */
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1124 if (!g_hash_table_lookup(yd->friends, who)) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1125 f = yahoo_friend_new();
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1126 g_hash_table_insert(yd->friends, g_strdup(who), f);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1127 yahoo_update_status(gc, who, f);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1128 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1129 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1130 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1131
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1132 buf = g_strdup_printf(_("Could not add buddy %s to group %s to the server list on account %s."),
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1133 who, group, gaim_connection_get_display_name(gc));
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1134 gaim_notify_error(gc, NULL, _("Could not add buddy to server list"), buf);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1135 g_free(buf);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1136 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1137
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1138 static void yahoo_packet_process(GaimConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1139 {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1140 switch (pkt->service) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 case YAHOO_SERVICE_LOGON:
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
1142 case YAHOO_SERVICE_LOGOFF:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1143 case YAHOO_SERVICE_ISAWAY:
2737
f7edb9c3f348 [gaim-migrate @ 2750]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2724
diff changeset
1144 case YAHOO_SERVICE_ISBACK:
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1145 case YAHOO_SERVICE_GAMELOGON:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1146 case YAHOO_SERVICE_GAMELOGOFF:
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1147 case YAHOO_SERVICE_CHATLOGON:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1148 case YAHOO_SERVICE_CHATLOGOFF:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1149 yahoo_process_status(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1150 break;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1151 case YAHOO_SERVICE_NOTIFY:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1152 yahoo_process_notify(gc, pkt);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1153 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1154 case YAHOO_SERVICE_MESSAGE:
2786
c281356d8eda [gaim-migrate @ 2799]
brian macke
parents: 2772
diff changeset
1155 case YAHOO_SERVICE_GAMEMSG:
5939
cedbbd2d983a [gaim-migrate @ 6379]
Tim Ringenbach <marv@pidgin.im>
parents: 5921
diff changeset
1156 case YAHOO_SERVICE_CHATMSG:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1157 yahoo_process_message(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1158 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159 case YAHOO_SERVICE_NEWMAIL:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1160 yahoo_process_mail(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162 case YAHOO_SERVICE_NEWCONTACT:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163 yahoo_process_contact(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1165 case YAHOO_SERVICE_AUTHRESP:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1166 yahoo_process_authresp(gc, pkt);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1167 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1168 case YAHOO_SERVICE_LIST:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1169 yahoo_process_list(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1170 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1171 case YAHOO_SERVICE_AUTH:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1172 yahoo_process_auth(gc, pkt);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1173 break;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1174 case YAHOO_SERVICE_ADDBUDDY:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1175 yahoo_process_addbuddy(gc, pkt);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1176 break;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1177 case YAHOO_SERVICE_IGNORECONTACT:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1178 yahoo_process_ignore(gc, pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1179 break;
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1180 case YAHOO_SERVICE_CONFINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1181 case YAHOO_SERVICE_CONFADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1182 yahoo_process_conference_invite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1183 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1184 case YAHOO_SERVICE_CONFDECLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1185 yahoo_process_conference_decline(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1186 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1187 case YAHOO_SERVICE_CONFLOGON:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1188 yahoo_process_conference_logon(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1189 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1190 case YAHOO_SERVICE_CONFLOGOFF:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1191 yahoo_process_conference_logoff(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1192 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1193 case YAHOO_SERVICE_CONFMSG:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1194 yahoo_process_conference_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1195 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1196 case YAHOO_SERVICE_CHATONLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1197 yahoo_process_chat_online(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1198 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1199 case YAHOO_SERVICE_CHATLOGOUT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1200 yahoo_process_chat_logout(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1201 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1202 case YAHOO_SERVICE_CHATGOTO:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1203 yahoo_process_chat_goto(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1204 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1205 case YAHOO_SERVICE_CHATJOIN:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1206 yahoo_process_chat_join(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1207 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1208 case YAHOO_SERVICE_CHATLEAVE: /* XXX is this right? */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1209 case YAHOO_SERVICE_CHATEXIT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1210 yahoo_process_chat_exit(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1211 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1212 case YAHOO_SERVICE_CHATINVITE: /* XXX never seen this one, might not do it right */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1213 case YAHOO_SERVICE_CHATADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1214 yahoo_process_chat_addinvite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1215 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1216 case YAHOO_SERVICE_COMMENT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1217 yahoo_process_chat_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1218 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1219 default:
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
1220 gaim_debug(GAIM_DEBUG_ERROR, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1221 "Unhandled service 0x%02x\n", pkt->service);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1223 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1226 static void yahoo_pending(gpointer data, gint source, GaimInputCondition cond)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227 {
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1228 GaimConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 char buf[1024];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 int len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 len = read(yd->fd, buf, sizeof(buf));
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235 if (len <= 0) {
6321
0b54b2a172d1 [gaim-migrate @ 6820]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6115
diff changeset
1236 gaim_connection_error(gc, _("Unable to read"));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240 yd->rxqueue = g_realloc(yd->rxqueue, len + yd->rxlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1241 memcpy(yd->rxqueue + yd->rxlen, buf, len);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1242 yd->rxlen += len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1244 while (1) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245 struct yahoo_packet *pkt;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1246 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1247 int pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1248
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1249 if (yd->rxlen < YAHOO_PACKET_HDRLEN)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1250 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252 pos += 4; /* YMSG */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1256 pktlen = yahoo_get16(yd->rxqueue + pos); pos += 2;
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
1257 gaim_debug(GAIM_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1258 "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen))
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1262
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1263 yahoo_packet_dump(yd->rxqueue, YAHOO_PACKET_HDRLEN + pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1264
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265 pkt = yahoo_packet_new(0, 0, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1266
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1267 pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2;
3021
91e6cbdb62b1 [gaim-migrate @ 3034]
Sean Egan <seanegan@pidgin.im>
parents: 3020
diff changeset
1268 pkt->status = yahoo_get32(yd->rxqueue + pos); pos += 4;
5220
f42438a0cc06 [gaim-migrate @ 5590]
Christian Hammond <chipx86@chipx86.com>
parents: 5216
diff changeset
1269 gaim_debug(GAIM_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1270 "Yahoo Service: 0x%02x Status: %d\n",
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1271 pkt->service, pkt->status);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 yahoo_packet_read(pkt, yd->rxqueue + pos, pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 yd->rxlen -= YAHOO_PACKET_HDRLEN + pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277 if (yd->rxlen) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 char *tmp = g_memdup(yd->rxqueue + YAHOO_PACKET_HDRLEN + pktlen, yd->rxlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1280 yd->rxqueue = tmp;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 } else {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1282 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 yd->rxqueue = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1284 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286 yahoo_packet_process(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1289 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1290 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 static void yahoo_got_connected(gpointer data, gint source, GaimInputCondition cond)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 {
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1294 GaimConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 struct yahoo_data *yd;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 struct yahoo_packet *pkt;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297
5590
96f84b9aae41 [gaim-migrate @ 5994]
Christian Hammond <chipx86@chipx86.com>
parents: 5583
diff changeset
1298 if (!g_list_find(gaim_connections_get_all(), gc)) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299 close(source);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303 if (source < 0) {
6321
0b54b2a172d1 [gaim-migrate @ 6820]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6115
diff changeset
1304 gaim_connection_error(gc, _("Unable to connect"));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 yd->fd = source;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1311 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, YAHOO_STATUS_AVAILABLE, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312
5921
b49d0c63697a [gaim-migrate @ 6361]
Sean Egan <seanegan@pidgin.im>
parents: 5920
diff changeset
1313 yahoo_packet_hash(pkt, 1, normalize(gaim_account_get_username(gaim_connection_get_account(gc))));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318 gc->inpa = gaim_input_add(yd->fd, GAIM_INPUT_READ, yahoo_pending, gc);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1321 static void yahoo_login(GaimAccount *account) {
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1322 GaimConnection *gc = gaim_account_get_connection(account);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 struct yahoo_data *yd = gc->proto_data = g_new0(struct yahoo_data, 1);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1324
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1325 gc->flags |= GAIM_CONNECTION_HTML | GAIM_CONNECTION_NO_BGCOLOR;
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1326
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1327 gaim_connection_update_progress(gc, _("Connecting"), 1, 2);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 yd->fd = -1;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1330 yd->friends = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_friend_free);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1331 yd->confs = NULL;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1332 yd->conf_id = 2;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1333
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
1334 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", YAHOO_PAGER_HOST),
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1335 gaim_account_get_int(account, "port", YAHOO_PAGER_PORT),
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1336 yahoo_got_connected, gc) != 0) {
6321
0b54b2a172d1 [gaim-migrate @ 6820]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6115
diff changeset
1337 gaim_connection_error(gc, _("Connection problem"));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1339 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1340
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1341 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1342
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1343 static void yahoo_close(GaimConnection *gc) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1344 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1345
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1346 g_hash_table_destroy(yd->friends);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1347 g_slist_free(yd->confs);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1348 if (yd->chat_name)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1349 g_free(yd->chat_name);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1350
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351 if (yd->fd >= 0)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1352 close(yd->fd);
3720
dbba62e0d603 [gaim-migrate @ 3853]
Herman Bloggs <herman@bluedigits.com>
parents: 3642
diff changeset
1353
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1354 if (yd->rxqueue)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1355 g_free(yd->rxqueue);
2687
664e22f507cf [gaim-migrate @ 2700]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2686
diff changeset
1356 yd->rxlen = 0;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1357 if (gc->inpa)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 gaim_input_remove(gc->inpa);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359 g_free(yd);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1361
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
1362 static const char *yahoo_list_icon(GaimAccount *a, GaimBuddy *b)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1363 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
1364 return "yahoo";
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1365 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1366
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
1367 static void yahoo_list_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1368 {
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1369 int i = 0;
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1370 char *emblems[4] = {NULL,NULL,NULL,NULL};
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1371 GaimAccount *account;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1372 GaimConnection *gc;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1373 struct yahoo_data *yd;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1374 struct yahoo_friend *f;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1375
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1376 if (!b || !(account = b->account) || !(gc = gaim_account_get_connection(account)) ||
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1377 !(yd = gc->proto_data))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1378 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1379
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1380 f = g_hash_table_lookup(yd->friends, b->name);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1381 if (!f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1382 *se = "notauthorized";
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1383 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1384 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1385
5068
0d4c4df65dd0 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 5002
diff changeset
1386 if (b->present == GAIM_BUDDY_OFFLINE) {
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1387 *se = "offline";
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1388 return;
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1389 } else {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1390 if (f->away)
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
1391 emblems[i++] = "away";
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1392 if (f->sms)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1393 emblems[i++] = "wireless";
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1394 if (f->game)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1395 emblems[i++] = "game";
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1396 }
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1397 *se = emblems[0];
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1398 *sw = emblems[1];
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1399 *nw = emblems[2];
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1400 *ne = emblems[3];
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
1401 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1402
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 static char *yahoo_get_status_string(enum yahoo_status a)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1404 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 switch (a) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406 case YAHOO_STATUS_BRB:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1407 return _("Be Right Back");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1408 case YAHOO_STATUS_BUSY:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1409 return _("Busy");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1410 case YAHOO_STATUS_NOTATHOME:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1411 return _("Not At Home");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 case YAHOO_STATUS_NOTATDESK:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1413 return _("Not At Desk");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1414 case YAHOO_STATUS_NOTINOFFICE:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1415 return _("Not In Office");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1416 case YAHOO_STATUS_ONPHONE:
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4596
diff changeset
1417 return _("On The Phone");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1418 case YAHOO_STATUS_ONVACATION:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1419 return _("On Vacation");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1420 case YAHOO_STATUS_OUTTOLUNCH:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1421 return _("Out To Lunch");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422 case YAHOO_STATUS_STEPPEDOUT:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1423 return _("Stepped Out");
2873
9e56887eeb06 [gaim-migrate @ 2886]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2856
diff changeset
1424 case YAHOO_STATUS_INVISIBLE:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1425 return _("Invisible");
4730
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
1426 case YAHOO_STATUS_IDLE:
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
1427 return _("Idle");
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1428 case YAHOO_STATUS_OFFLINE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1429 return _("Offline");
2879
e417cf7111c4 [gaim-migrate @ 2892]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2878
diff changeset
1430 default:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1431 return _("Online");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1432 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1433 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1434
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1435 static void yahoo_initiate_conference(GaimConnection *gc, const char *name)
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1436 {
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1437 GHashTable *components;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1438 struct yahoo_data *yd;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1439 int id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1440
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1441 yd = gc->proto_data;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1442 id = yd->conf_id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1443
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1444 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1445 g_hash_table_replace(components, g_strdup("room"),
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1446 g_strdup_printf("%s-%d", gaim_connection_get_display_name(gc), id));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1447 g_hash_table_replace(components, g_strdup("topic"), g_strdup("Join my conference..."));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1448 g_hash_table_replace(components, g_strdup("type"), g_strdup("Conference"));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1449 yahoo_c_join(gc, components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1450 g_hash_table_destroy(components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1451
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1452 yahoo_c_invite(gc, id, "Join my conference...", name);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1453 }
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1454
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1455 static void yahoo_game(GaimConnection *gc, const char *name) {
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1456 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1457 char *game = NULL;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1458 char *t;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1459 char url[256];
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1460 struct yahoo_friend *f;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1461
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1462 f = g_hash_table_lookup(yd->friends, name);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1463 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1464 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1465
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1466 game = f->game;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1467 if (!game)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1468 return;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1469
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1470 t = game = g_strdup(strstr(game, "ante?room="));
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1471 while (*t != '\t')
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1472 t++;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1473 *t = 0;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1474 g_snprintf(url, sizeof url, "http://games.yahoo.com/games/%s", game);
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
1475 gaim_notify_uri(gc, url);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1476 g_free(game);
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1477 }
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1478
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
1479 static char *yahoo_status_text(GaimBuddy *b)
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1480 {
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1481 struct yahoo_data *yd = (struct yahoo_data*)b->account->gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1482 struct yahoo_friend *f = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1483 char *stripped = NULL;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
1484
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1485 f = g_hash_table_lookup(yd->friends, b->name);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1486 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1487 return g_strdup(_("Not on server list"));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1488
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1489 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1490 case YAHOO_STATUS_AVAILABLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1491 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1492 case YAHOO_STATUS_IDLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1493 if (f->idle == -1)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1494 return g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1495 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1496 case YAHOO_STATUS_CUSTOM:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1497 if (!f->msg)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1498 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1499 stripped = strip_html(f->msg);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1500 if (stripped) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1501 char *ret = g_markup_escape_text(stripped, strlen(stripped));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1502 g_free(stripped);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1503 return ret;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1504 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1505 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1506 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1507 return g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1508 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1509
4729
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
1510 return NULL;
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1511 }
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1512
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
1513 static char *yahoo_tooltip_text(GaimBuddy *b)
4724
2c7fae3847c8 [gaim-migrate @ 5037]
Sean Egan <seanegan@pidgin.im>
parents: 4722
diff changeset
1514 {
2c7fae3847c8 [gaim-migrate @ 5037]
Sean Egan <seanegan@pidgin.im>
parents: 4722
diff changeset
1515 struct yahoo_data *yd = (struct yahoo_data*)b->account->gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1516 struct yahoo_friend *f;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1517 char *escaped, *status, *ret;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1518
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1519 f = g_hash_table_lookup(yd->friends, b->name);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1520 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1521 status = g_strdup(_("Not on server list"));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1522 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1523 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1524 case YAHOO_STATUS_IDLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1525 if (f->idle == -1) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1526 status = g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1527 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1528 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1529 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1530 case YAHOO_STATUS_CUSTOM:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1531 if (!f->msg)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1532 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1533 status = strip_html(f->msg);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1534 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1535 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1536 status = g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1537 break;
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4732
diff changeset
1538 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1539
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1540 escaped = g_markup_escape_text(status, strlen(status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1541 ret = g_strdup_printf(_("<b>Status:</b> %s"), escaped);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1542 g_free(status);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1543 g_free(escaped);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1544
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1545 return ret;
4729
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
1546 }
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
1547
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1548 static void yahoo_addbuddyfrommenu_cb(GaimConnection *gc, const char *who)
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1549 {
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1550 yahoo_add_buddy(gc, who, NULL);
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1551 }
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1552
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1553 static GList *yahoo_buddy_menu(GaimConnection *gc, const char *who)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1554 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1555 GList *m = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1556 struct proto_buddy_menu *pbm;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1557 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1558 static char buf2[1024];
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1559 struct yahoo_friend *f;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1560
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1561 f = g_hash_table_lookup(yd->friends, who);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1562
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1563 if (!f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1564 pbm = g_new0(struct proto_buddy_menu, 1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1565 pbm->label = _("Add Buddy");
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
1566 pbm->callback = yahoo_addbuddyfrommenu_cb;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1567 pbm->gc = gc;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1568 m = g_list_append(m, pbm);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1569
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1570 return m;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1571 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1572
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1573 if (f->status == YAHOO_STATUS_OFFLINE)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1574 return NULL;
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1575
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1576 pbm = g_new0(struct proto_buddy_menu, 1);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1577 pbm->label = _("Join in Chat");
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1578 pbm->callback = yahoo_chat_goto;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1579 pbm->gc = gc;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1580 m = g_list_append(m, pbm);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1581
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1582 pbm = g_new0(struct proto_buddy_menu, 1);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1583 pbm->label = _("Initiate Conference");
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1584 pbm->callback = yahoo_initiate_conference;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1585 pbm->gc = gc;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1586 m = g_list_append(m, pbm);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1587
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1588 if (f->game) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1589 char *game = f->game;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1590 char *room;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1591 char *t;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1592
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1593 if (!game)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1594 return m;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1595
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1596 pbm = g_new0(struct proto_buddy_menu, 1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1597 if (!(room = strstr(game, "&follow="))) /* skip ahead to the url */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1598 return m;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1599 while (*room && *room != '\t') /* skip to the tab */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1600 room++;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1601 t = room++; /* room as now at the name */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1602 while (*t != '\n')
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1603 t++; /* replace the \n with a space */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1604 *t = ' ';
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1605 g_snprintf(buf2, sizeof buf2, "%s", room);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1606 pbm->label = buf2;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1607 pbm->callback = yahoo_game;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1608 pbm->gc = gc;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1609 m = g_list_append(m, pbm);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1610 }
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1611
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1612 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1613 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1614
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1615 static void yahoo_act_id(GaimConnection *gc, const char *entry)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1616 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1617 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1618
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1619 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1620 yahoo_packet_hash(pkt, 3, entry);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1621 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1622 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1623
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1624 gaim_connection_set_display_name(gc, entry);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1625 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1626
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1627 static void yahoo_show_act_id(GaimConnection *gc)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1628 {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
1629 gaim_request_input(gc, NULL, _("Active which ID?"), NULL,
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 5939
diff changeset
1630 gaim_connection_get_display_name(gc), FALSE, FALSE,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
1631 _("OK"), G_CALLBACK(yahoo_act_id),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
1632 _("Cancel"), NULL, gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1633 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1634
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1635 static GList *yahoo_actions(GaimConnection *gc) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1636 GList *m = NULL;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1637 struct proto_actions_menu *pam;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1638
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1639 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1640 pam->label = _("Activate ID");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1641 pam->callback = yahoo_show_act_id;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1642 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4201
diff changeset
1643 m = g_list_append(m, pam);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1644
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1645 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1646 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1647
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6847
diff changeset
1648 static int yahoo_send_im(GaimConnection *gc, const char *who, const char *what, GaimImFlags flags)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1649 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1650 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1651 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, 0);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1652 char *msg = yahoo_html_to_codes(what);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1653
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1654 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1655 yahoo_packet_hash(pkt, 5, who);
3493
22733759ba51 [gaim-migrate @ 3553]
Luke Schierer <lschiere@pidgin.im>
parents: 3467
diff changeset
1656 yahoo_packet_hash(pkt, 14, msg);
6044
7832d0fb043f [gaim-migrate @ 6494]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
1657 yahoo_packet_hash(pkt, 97, "1");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1658
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1659 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1660
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1661 yahoo_packet_free(pkt);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1662
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1663 g_free(msg);
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
1664
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1665 return 1;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1666 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1667
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6044
diff changeset
1668 int yahoo_send_typing(GaimConnection *gc, const char *who, int typ)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1669 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1670 struct yahoo_data *yd = gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
1671 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, 0);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1672 yahoo_packet_hash(pkt, 49, "TYPING");
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1673 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1674 yahoo_packet_hash(pkt, 14, " ");
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
1675 yahoo_packet_hash(pkt, 13, typ == GAIM_TYPING ? "1" : "0");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1676 yahoo_packet_hash(pkt, 5, who);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1677 yahoo_packet_hash(pkt, 1002, "1");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1678
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1679 yahoo_send_packet(yd, pkt);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1680
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1681 yahoo_packet_free(pkt);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1682
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
1683 return 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1684 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
1685
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6044
diff changeset
1686 static void yahoo_set_away(GaimConnection *gc, const char *state, const char *msg)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1688 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1689 struct yahoo_packet *pkt;
2772
f7659670fc0b [gaim-migrate @ 2785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2771
diff changeset
1690 int service;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1691 char s[4];
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
1692
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4044
diff changeset
1693 if (gc->away) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4044
diff changeset
1694 g_free(gc->away);
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4044
diff changeset
1695 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4044
diff changeset
1696 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1697
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1698 if (msg) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1699 yd->current_status = YAHOO_STATUS_CUSTOM;
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1700 gc->away = g_strndup(msg, YAHOO_MAX_STATUS_MESSAGE_LENGTH);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1701 } else if (state) {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4044
diff changeset
1702 gc->away = g_strdup("");
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1703 if (!strcmp(state, _("Available"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1704 yd->current_status = YAHOO_STATUS_AVAILABLE;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1705 } else if (!strcmp(state, _("Be Right Back"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1706 yd->current_status = YAHOO_STATUS_BRB;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1707 } else if (!strcmp(state, _("Busy"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1708 yd->current_status = YAHOO_STATUS_BUSY;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1709 } else if (!strcmp(state, _("Not At Home"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1710 yd->current_status = YAHOO_STATUS_NOTATHOME;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1711 } else if (!strcmp(state, _("Not At Desk"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1712 yd->current_status = YAHOO_STATUS_NOTATDESK;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1713 } else if (!strcmp(state, _("Not In Office"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1714 yd->current_status = YAHOO_STATUS_NOTINOFFICE;
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4596
diff changeset
1715 } else if (!strcmp(state, _("On The Phone"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1716 yd->current_status = YAHOO_STATUS_ONPHONE;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1717 } else if (!strcmp(state, _("On Vacation"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1718 yd->current_status = YAHOO_STATUS_ONVACATION;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1719 } else if (!strcmp(state, _("Out To Lunch"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1720 yd->current_status = YAHOO_STATUS_OUTTOLUNCH;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1721 } else if (!strcmp(state, _("Stepped Out"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1722 yd->current_status = YAHOO_STATUS_STEPPEDOUT;
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1723 } else if (!strcmp(state, _("Invisible"))) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1724 yd->current_status = YAHOO_STATUS_INVISIBLE;
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1725 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) { /* this should never happen? */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1726 if (gc->is_idle) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1727 yd->current_status = YAHOO_STATUS_IDLE;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1728 } else {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1729 yd->current_status = YAHOO_STATUS_AVAILABLE;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1730 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1731 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1732 } else if (gc->is_idle) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1733 yd->current_status = YAHOO_STATUS_IDLE;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1734 } else {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1735 yd->current_status = YAHOO_STATUS_AVAILABLE;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1736 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1737
2772
f7659670fc0b [gaim-migrate @ 2785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2771
diff changeset
1738 if (yd->current_status == YAHOO_STATUS_AVAILABLE)
f7659670fc0b [gaim-migrate @ 2785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2771
diff changeset
1739 service = YAHOO_SERVICE_ISBACK;
f7659670fc0b [gaim-migrate @ 2785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2771
diff changeset
1740 else
f7659670fc0b [gaim-migrate @ 2785]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2771
diff changeset
1741 service = YAHOO_SERVICE_ISAWAY;
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1742
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1743 pkt = yahoo_packet_new(service, YAHOO_STATUS_AVAILABLE, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744 g_snprintf(s, sizeof(s), "%d", yd->current_status);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1745 yahoo_packet_hash(pkt, 10, s);
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1746
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1747 if ((yd->current_status == YAHOO_STATUS_CUSTOM) && gc->away)
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1748 yahoo_packet_hash(pkt, 19, gc->away);
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1749
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1750 if ((yd->current_status != YAHOO_STATUS_AVAILABLE) &&
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1751 (yd->current_status != YAHOO_STATUS_IDLE)) {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1752 if (gc->is_idle)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1753 yahoo_packet_hash(pkt, 47, "2");
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1754 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1755 yahoo_packet_hash(pkt, 47, "1");
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1756 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1757
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1758 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1759 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1760 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1761
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1762 static void yahoo_set_idle(GaimConnection *gc, int idle)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1763 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1764 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1765 struct yahoo_packet *pkt = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1766
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1767 if (idle && yd->current_status == YAHOO_STATUS_AVAILABLE) {
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1768 pkt = yahoo_packet_new(YAHOO_SERVICE_ISAWAY, YAHOO_STATUS_AVAILABLE, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1769 yd->current_status = YAHOO_STATUS_IDLE;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 } else if (!idle && yd->current_status == YAHOO_STATUS_IDLE) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771 pkt = yahoo_packet_new(YAHOO_SERVICE_ISAWAY, YAHOO_STATUS_AVAILABLE, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1772 yd->current_status = YAHOO_STATUS_AVAILABLE;
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1773 } else {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1774 pkt = yahoo_packet_new(YAHOO_SERVICE_ISAWAY, YAHOO_STATUS_AVAILABLE, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1775 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1776
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1777 if (pkt) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1778 char buf[4];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1779 g_snprintf(buf, sizeof(buf), "%d", yd->current_status);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1780 yahoo_packet_hash(pkt, 10, buf);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1781 if (gc->away && yd->current_status == YAHOO_STATUS_CUSTOM) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1782 yahoo_packet_hash(pkt, 19, gc->away);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1783 if (idle)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1784 yahoo_packet_hash(pkt, 47, "2");
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1785 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1786 yahoo_packet_hash(pkt, 47, "1"); /* fixme when available messages are possible */
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1787 } else if (idle && (yd->current_status != YAHOO_STATUS_AVAILABLE) &&
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1788 (yd->current_status != YAHOO_STATUS_IDLE)) {
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1789 yahoo_packet_hash(pkt, 47, "2");
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1790 } else if (!idle && (yd->current_status != YAHOO_STATUS_AVAILABLE) &&
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1791 (yd->current_status != YAHOO_STATUS_IDLE)) {
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1792 yahoo_packet_hash(pkt, 47, "1");
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1793 }
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
1794
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1795 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1796 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1797 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1798 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1799
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1800 static GList *yahoo_away_states(GaimConnection *gc)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1801 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1802 GList *m = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1803
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1804 m = g_list_append(m, _("Available"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1805 m = g_list_append(m, _("Be Right Back"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1806 m = g_list_append(m, _("Busy"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1807 m = g_list_append(m, _("Not At Home"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1808 m = g_list_append(m, _("Not At Desk"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1809 m = g_list_append(m, _("Not In Office"));
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4596
diff changeset
1810 m = g_list_append(m, _("On The Phone"));
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1811 m = g_list_append(m, _("On Vacation"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1812 m = g_list_append(m, _("Out To Lunch"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1813 m = g_list_append(m, _("Stepped Out"));
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
1814 m = g_list_append(m, _("Invisible"));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1815 m = g_list_append(m, GAIM_AWAY_CUSTOM);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1816
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1817 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1818 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1819
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1820 static void yahoo_keepalive(GaimConnection *gc)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1821 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1822 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1823 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YAHOO_STATUS_AVAILABLE, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1825 yahoo_packet_free(pkt);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1826
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1827 if (!yd->chat_online)
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1828 return;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1829
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1830 pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YAHOO_STATUS_AVAILABLE, 0);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1831 yahoo_packet_hash(pkt, 109, gaim_connection_get_display_name(gc));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1832 yahoo_send_packet(yd, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
1833 yahoo_packet_free(pkt);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1834 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1835
6787
7d8e0ba98f68 [gaim-migrate @ 7326]
Christian Hammond <chipx86@chipx86.com>
parents: 6784
diff changeset
1836 static void yahoo_add_buddy(GaimConnection *gc, const char *who, GaimGroup *foo)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1837 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1838 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1839 struct yahoo_packet *pkt;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6691
diff changeset
1840 GaimGroup *g;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1841 char *group = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1842
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1843 if (!yd->logged_in)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1844 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1845
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1846 if (foo)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1847 group = foo->name;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1848 if (!group) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1849 g = gaim_find_buddys_group(gaim_find_buddy(gc->account, who));
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1850 if (g)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1851 group = g->name;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1852 else
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1853 group = "Buddies";
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1854 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1855
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1856 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, 0);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1857 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1858 yahoo_packet_hash(pkt, 7, who);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1859 yahoo_packet_hash(pkt, 65, group);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
1860 yahoo_packet_hash(pkt, 14, "");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1861 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1862 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1863 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1864
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6044
diff changeset
1865 static void yahoo_remove_buddy(GaimConnection *gc, const char *who, const char *group)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1866 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1867 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1868 struct yahoo_friend *f;
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
1869 struct yahoo_packet *pkt;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1870 GSList *buddies, *l;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1871 GaimGroup *g;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1872 gboolean remove = TRUE;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1873
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1874 if (!(f = g_hash_table_lookup(yd->friends, who)))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1875 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
1876
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1877 buddies = gaim_find_buddies(gaim_connection_get_account(gc), who);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1878 for (l = buddies; l; l = l->next) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1879 g = gaim_find_buddys_group(l->data);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1880 if (gaim_utf8_strcasecmp(group, g->name)) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1881 remove = FALSE;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1882 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1883 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1884 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1885
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1886 g_slist_free(buddies);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1887
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
1888 if (remove)
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
1889 g_hash_table_remove(yd->friends, who);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1890
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
1891 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0);
5583
823143bef3b0 [gaim-migrate @ 5987]
Sean Egan <seanegan@pidgin.im>
parents: 5521
diff changeset
1892 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1893 yahoo_packet_hash(pkt, 7, who);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1894 yahoo_packet_hash(pkt, 65, group);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1895 yahoo_send_packet(yd, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1896 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1897 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1898
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1899 static void yahoo_add_deny(GaimConnection *gc, const char *who) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1900 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1901 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1902
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1903 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1904 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1905
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1906 if (gc->account->perm_deny != 4)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1907 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1908
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1909 if (!who || who[0] == '\0')
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1910 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1911
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1912 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1913 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1914 yahoo_packet_hash(pkt, 7, who);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1915 yahoo_packet_hash(pkt, 13, "1");
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1916 yahoo_send_packet(yd, pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1917 yahoo_packet_free(pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1918 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1919
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1920 static void yahoo_rem_deny(GaimConnection *gc, const char *who) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1921 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1922 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1923
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1924 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1925 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1926
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1927 if (!who || who[0] == '\0')
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1928 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1929
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1930 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1931 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1932 yahoo_packet_hash(pkt, 7, who);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1933 yahoo_packet_hash(pkt, 13, "2");
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1934 yahoo_send_packet(yd, pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1935 yahoo_packet_free(pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1936 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1937
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1938 static void yahoo_set_permit_deny(GaimConnection *gc) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1939 GaimAccount *acct;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1940 GSList *deny;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1941
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1942 acct = gc->account;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1943
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1944 switch (acct->perm_deny) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1945 case 1:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1946 case 3:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1947 case 5:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1948 for (deny = acct->deny;deny;deny = deny->next)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1949 yahoo_rem_deny(gc, deny->data);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1950 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1951 case 4:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1952 for (deny = acct->deny;deny;deny = deny->next)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1953 yahoo_add_deny(gc, deny->data);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1954 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1955 case 2:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1956 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1957 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1958 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1959 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
1960
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1961 static gboolean yahoo_unload_plugin(GaimPlugin *plugin)
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1962 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1963 yahoo_dest_colorht();
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1964 return TRUE;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1965 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
1966
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1967 static void yahoo_got_info(gpointer data, char *url_text, unsigned long len)
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1968 {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1969 char *stripped,*p;
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1970 char buf[1024];
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1971
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1972 /* we failed to grab the profile URL */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1973 if (!url_text) {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1974 g_show_info_text(NULL, NULL, 2,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
1975 _("<html><body><b>Error retrieving profile</b></body></html>"), NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1976 return;
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1977 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1978
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1979 /* we don't yet support the multiple link level of the warning page for
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1980 * 'adult' profiles, not to mention the fact that yahoo wants you to be
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1981 * logged in (on the website) to be able to view an 'adult' profile. for
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1982 * now, just tell them that we can't help them, and provide a link to the
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1983 * profile if they want to do the web browser thing.
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1984 */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1985 p = strstr(url_text, "Adult Profiles Warning Message");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1986 if (p) {
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
1987 strcpy(buf, _("<b>Sorry, profiles marked as containing adult content are not supported at this time.</b><br><br>\n"));
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1988 info_extract_field(url_text, buf, ".idname=", 0, "%26", 0, NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
1989 _("If you wish to view this profile, you will need to visit this link in your web browser"),
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1990 1, YAHOO_PROFILE_URL);
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1991 strcat(buf, "</body></html>\n");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1992 g_show_info_text(NULL, NULL, 2, buf, NULL);
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1993 return;
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1994 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
1995
6630
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
1996 /* at the moment we don't support profile pages with languages other than
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
1997 * english. the problem is, that every user may choose his/her own profile
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
1998 * language. this language has nothing to do with the preferences of the
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
1999 * user which looks at the profile
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2000 */
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2001 p = strstr(url_text, "Last Updated:");
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2002 if (!p) {
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2003 strcpy(buf, _("<b>Sorry, non-English profiles are not supported at this time.</b><br><br>\n"));
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2004 info_extract_field(url_text, buf, "<title>", 0, "'s Yahoo! Profile", 0, NULL,
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2005 _("If you wish to view this profile, you will need to visit this link in your web browser"),
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2006 1, YAHOO_PROFILE_URL);
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2007 strcat(buf, "</body></html>\n");
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2008 g_show_info_text(NULL, NULL, 2, buf, NULL);
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2009 return;
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2010 }
397873e01b05 [gaim-migrate @ 7154]
Luke Schierer <lschiere@pidgin.im>
parents: 6629
diff changeset
2011
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2012 /* strip_html() doesn't strip out character entities like &nbsp; and &#183;
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2013 */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2014 while ((p = strstr(url_text, "&nbsp;")) != NULL) {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2015 memmove(p, p + 6, strlen(p + 6));
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2016 url_text[strlen(url_text) - 6] = '\0';
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2017 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2018 while ((p = strstr(url_text, "&#183;")) != NULL) {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2019 memmove(p, p + 6, strlen(p + 6));
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2020 url_text[strlen(url_text) - 6] = '\0';
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2021 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2022
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2023 /* nuke the nasty \r's */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2024 while ((p = strchr(url_text, '\r')) != NULL) {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2025 memmove(p, p + 1, strlen(p + 1));
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2026 url_text[strlen(url_text) - 1] = '\0';
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2027 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2028
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2029 /* nuke the html, it's easier than trying to parse the horrid stuff */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2030 stripped = strip_html(url_text);
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2031
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2032 /* gonna re-use the memory we've already got for url_text */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2033 strcpy(url_text, "<html><body>\n");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2034
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2035 /* extract their Yahoo! ID and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2036 info_extract_field(stripped, url_text, "Yahoo! ID:", 2, "\n", 0,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2037 NULL, _("Yahoo! ID"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2038
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2039 /* extract their Email address and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2040 info_extract_field(stripped, url_text, "My Email", 5, "\n", 0,
6657
31bb7535e168 [gaim-migrate @ 7182]
Nathan Poznick
parents: 6630
diff changeset
2041 "Private", _("Email"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2042
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2043 /* extract the Nickname if it exists */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2044 info_extract_field(stripped, url_text, "Nickname:", 1, "\n", '\n',
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2045 NULL, _("Nickname"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2046
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2047 /* extract their RealName and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2048 info_extract_field(stripped, url_text, "RealName:", 1, "\n", '\n',
6623
75ba9eb9d3f8 [gaim-migrate @ 7147]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6622
diff changeset
2049 NULL, _("Realname"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2050
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2051 /* extract their Location and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2052 info_extract_field(stripped, url_text, "Location:", 2, "\n", '\n',
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2053 NULL, _("Location"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2054
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2055 /* extract their Age and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2056 info_extract_field(stripped, url_text, "Age:", 3, "\n", '\n',
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2057 NULL, _("Age"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2058
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2059 /* extract their MaritalStatus and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2060 info_extract_field(stripped, url_text, "MaritalStatus:", 3, "\n", '\n',
6657
31bb7535e168 [gaim-migrate @ 7182]
Nathan Poznick
parents: 6630
diff changeset
2061 "No Answer", _("Marital Status"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2062
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2063 /* extract their Gender and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2064 info_extract_field(stripped, url_text, "Gender:", 3, "\n", '\n',
6657
31bb7535e168 [gaim-migrate @ 7182]
Nathan Poznick
parents: 6630
diff changeset
2065 "No Answer", _("Gender"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2066
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2067 /* extract their Occupation and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2068 info_extract_field(stripped, url_text, "Occupation:", 2, "\n", '\n',
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2069 NULL, _("Occupation"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2070
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2071 /* Hobbies, Latest News, and Favorite Quote are a bit different, since the
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2072 * values can contain embedded newlines... but any or all of them can also
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2073 * not appear. The way we delimit them is to successively look for the next
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2074 * one that _could_ appear, and if all else fails, we end the section by
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2075 * looking for the 'Links' heading, which is the next thing to follow this
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2076 * bunch.
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2077 */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2078 if (!info_extract_field(stripped, url_text, "Hobbies:", 1, "Latest News",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2079 '\n', NULL, _("Hobbies"), 0, NULL))
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2080 if (!info_extract_field(stripped, url_text, "Hobbies:", 1, "Favorite Quote",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2081 '\n', NULL, _("Hobbies"), 0, NULL))
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2082 info_extract_field(stripped, url_text, "Hobbies:", 1, "Links",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2083 '\n', NULL, _("Hobbies"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2084 if (!info_extract_field(stripped, url_text, "Latest News:", 1, "Favorite Quote",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2085 '\n', NULL, _("Latest News"), 0, NULL))
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2086 info_extract_field(stripped, url_text, "Latest News:", 1, "Links",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2087 '\n', NULL, _("Latest News"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2088 info_extract_field(stripped, url_text, "Favorite Quote:", 0, "Links",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2089 '\n', NULL, _("Favorite Quote"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2090
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2091 /* Home Page will either be "No home page specified",
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2092 * or "Home Page: " and a link. */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2093 p = strstr(stripped, "No home page specified");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2094 if (!p)
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2095 info_extract_field(stripped, url_text, "Home Page:", 1, " ", 0, NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2096 _("Home Page"), 1, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2097
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2098 /* Cool Link {1,2,3} is also different. If "No cool link specified" exists,
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2099 * then we have none. If we have one however, we'll need to check and see if
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2100 * we have a second one. If we have a second one, we have to check to see if
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2101 * we have a third one.
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2102 */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2103 p = strstr(stripped,"No cool link specified");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2104 if (!p)
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2105 if (info_extract_field(stripped, url_text, "Cool Link 1:", 1, " ", 0, NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2106 _("Cool Link 1"), 1, NULL))
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2107 if (info_extract_field(stripped, url_text, "Cool Link 2:", 1, " ", 0, NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2108 _("Cool Link 2"), 1, NULL))
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2109 info_extract_field(stripped, url_text, "Cool Link 3:", 1, " ", 0, NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2110 _("Cool Link 3"), 1, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2111
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2112 /* see if Member Since is there, and if so, extract it. */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2113 info_extract_field(stripped, url_text, "Member Since:", 1, "Last Updated:",
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2114 '\n', NULL, _("Member Since"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2115
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2116 /* extract the Last Updated date and put it in */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2117 info_extract_field(stripped, url_text, "Last Updated:", 1, "\n", '\n', NULL,
6573
a3d6102d1e65 [gaim-migrate @ 7095]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6546
diff changeset
2118 _("Last Updated"), 0, NULL);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2119
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2120 /* finish off the html */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2121 strcat(url_text, "</body></html>\n");
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2122 g_free(stripped);
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2123
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2124 /* show it to the user */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2125 g_show_info_text(NULL, NULL, 2, url_text, NULL);
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2126 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2127
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2128 static void yahoo_get_info(GaimConnection *gc, const char *name)
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2129 {
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2130 /* struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data; */
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2131 char url[256];
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2132 g_snprintf(url, sizeof url, "%s%s", YAHOO_PROFILE_URL, name);
6516
ea1e11634bf5 [gaim-migrate @ 7033]
Luke Schierer <lschiere@pidgin.im>
parents: 6514
diff changeset
2133 grab_url(url, FALSE, yahoo_got_info, NULL, NULL, 0);
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2134 }
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2135
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2136 static void yahoo_change_buddys_group(GaimConnection *gc, const char *who,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2137 const char *old_group, const char *new_group)
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2138 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2139 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2140 struct yahoo_packet *pkt;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2141
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2142 /* Step 0: If they aren't on the server list anyway,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2143 * don't bother letting the server know.
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2144 */
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2145 if (!g_hash_table_lookup(yd->friends, who))
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2146 return;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2147
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2148 /* Step 1: Add buddy to new group. */
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2149 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, 0);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2150 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2151 yahoo_packet_hash(pkt, 7, who);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2152 yahoo_packet_hash(pkt, 65, new_group);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2153 yahoo_packet_hash(pkt, 14, "");
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2154 yahoo_send_packet(yd, pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2155 yahoo_packet_free(pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2156
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2157 /* Step 2: Remove buddy from old group */
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2158 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2159 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2160 yahoo_packet_hash(pkt, 7, who);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2161 yahoo_packet_hash(pkt, 65, old_group);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2162 yahoo_send_packet(yd, pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2163 yahoo_packet_free(pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2164 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2165
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2166 static void yahoo_rename_group(GaimConnection *gc, const char *old_group,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2167 const char *new_group, GList *whocares)
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2168 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2169 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2170 struct yahoo_packet *pkt;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2171
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2172 pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, YAHOO_STATUS_AVAILABLE, 0);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2173 yahoo_packet_hash(pkt, 1, gaim_connection_get_display_name(gc));
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2174 yahoo_packet_hash(pkt, 65, old_group);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2175 yahoo_packet_hash(pkt, 67, new_group);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2176 yahoo_send_packet(yd, pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2177 yahoo_packet_free(pkt);
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2178 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2179
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2180 static GaimPlugin *my_protocol = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2181
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2182 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2183 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2184 GAIM_PROTO_YAHOO,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2185 OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2186 NULL, /* user_splits */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2187 NULL, /* protocol_options */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2188 yahoo_list_icon,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2189 yahoo_list_emblems,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2190 yahoo_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2191 yahoo_tooltip_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2192 yahoo_away_states,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2193 yahoo_actions,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2194 yahoo_buddy_menu,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2195 yahoo_c_info,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2196 yahoo_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2197 yahoo_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2198 yahoo_send_im,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2199 NULL, /* set info */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2200 yahoo_send_typing,
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
2201 yahoo_get_info,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2202 yahoo_set_away,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2203 NULL, /* get_away */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2204 NULL, /* set_dir */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2205 NULL, /* get_dir */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2206 NULL, /* dir_search */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2207 yahoo_set_idle,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2208 NULL, /* change_passwd*/
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2209 yahoo_add_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2210 NULL, /* add_buddies */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2211 yahoo_remove_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2212 NULL, /*remove_buddies */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2213 NULL, /* add_permit */
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2214 yahoo_add_deny,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2215 NULL, /* rem_permit */
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2216 yahoo_rem_deny,
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2217 yahoo_set_permit_deny,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2218 NULL, /* warn */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2219 yahoo_c_join,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2220 yahoo_c_invite,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2221 yahoo_c_leave,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2222 NULL, /* chat whisper */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2223 yahoo_c_send,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2224 yahoo_keepalive,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2225 NULL, /* register_user */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2226 NULL, /* get_cb_info */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2227 NULL, /* get_cb_away */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2228 NULL, /* alias_buddy */
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2229 yahoo_change_buddys_group,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
2230 yahoo_rename_group,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2231 NULL, /* buddy_free */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2232 NULL, /* convo_closed */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2233 NULL, /* normalize */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2234 NULL /* set_buddy_icon */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2235 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2236
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2237 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2238 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2239 2, /**< api_version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2240 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2241 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2242 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2243 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2244 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2245
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2246 "prpl-yahoo", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2247 "Yahoo", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2248 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2249 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2250 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2251 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2252 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2253 NULL, /**< author */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6321
diff changeset
2254 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2255
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2256 NULL, /**< load */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
2257 yahoo_unload_plugin, /**< unload */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2258 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2259
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2260 NULL, /**< ui_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2261 &prpl_info /**< extra_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2262 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2263
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2264 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
2265 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2266 {
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2267 GaimAccountOption *option;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2268
5685
2523e4143d74 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
2269 option = gaim_account_option_string_new(_("Pager host"), "server",
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2270 YAHOO_PAGER_HOST);
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2271 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2272 option);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2273
5685
2523e4143d74 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
2274 option = gaim_account_option_int_new(_("Pager port"), "port",
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2275 YAHOO_PAGER_PORT);
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2276 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
2277 option);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2278 my_protocol = plugin;
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
2279
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
2280 yahoo_init_colorht();
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2281 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
2282
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
2283 GAIM_INIT_PLUGIN(yahoo, init_plugin, info);

mercurial