annotate plugins/yay/libyahoo.c @ 1054:0b0b4cb53c17

[gaim-migrate @ 1064] yahoo prpl committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 03 Nov 2000 10:03:53 +0000
parents
children 4416ead31db7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 Yahoo Pager Client Library
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 This code is based on code by Douglas Winslow. The original info from
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 his code is listed below. This code has taken his code and has been
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 altered to my naming and coding conventions and has been made more
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7 usable as a library of routines.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9 -- Nathan Neulinger <nneul@umr.edu>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 Yahoo Pager Client Emulator Pro - yppro.c
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 A basic reference implementation
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 Douglas Winslow <douglas@min.net>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 Tue Sep 1 02:28:21 EDT 1998
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 Version 2, Revision 2
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 Known to compile on Linux 2.0, FreeBSD 2.2, and BSDi 3.0.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 hi to aap bdc drw jfn jrc mm mcd [cejn]b #cz and rootshell
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 Finally!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 Yahoo finally patched their server-side, and things will be getting
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 back to "normal". I will continue to maintain this code as long as
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 there is interest for it. Since Yahoo will be discontinuing YPNS1.1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 login support shortly, I've upgraded this client to do YPNS1.2. You
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 *must* have a password to pass authentication to the pager server.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 This authentication is done by a weird HTTP cookie method.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29 This code is distributed under the GNU General Public License (GPL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32 #include "config.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 #include <stdio.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 #include <netdb.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
35 #include <fcntl.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 #include <errno.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 #include <sys/socket.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38 #include <netinet/in.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39 #if defined(WITH_GTK)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #include <gtk/gtk.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42 #include <unistd.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 #if defined(HAVE_STRINGS_H)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44 #include <strings.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46 #if defined(HAVE_STRING_H)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47 #include <string.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49 #include <ctype.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
50 #include "libyahoo.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
51 #ifdef HAVE_DMALLOC
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52 #include "dmalloc.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
53 #else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
54 #include <stdlib.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
55 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57 #include "memtok.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59 /* allow libyahoo to be used without gtkyahoo's debug support */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 #include "libyahoo-debug.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
62 #else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
63 static void yahoo_dbg_Print(char *tmp, ...)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
65 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
66
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
67 #define yahoo_dbg_NullCheck(x) ((x)?(x):("[NULL]"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
68 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
69
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70 /* remap functions to gtk versions */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
71 #if defined(WITH_GTK)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72 #define malloc g_malloc
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73 #define free g_free
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 #define calloc(x,y) g_malloc0((x)*(y))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
75 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77 #if (!defined(TRUE) || !defined(FALSE))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78 # define TRUE 1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 # define FALSE 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82 /* Define a quick shortcut function to free a pointer and set it to null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 #define FREE(x) if (x) { free(x); x=NULL; }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86 void SOCKSinit(char *argv0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 /* pager server host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 #define YAHOO_PAGER_HOST "cs.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91 #define YAHOO_PAGER_PORT 5050
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 /* pager server host for http connections */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 #define YAHOO_PAGER_HTTP_HOST "http.pager.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94 #define YAHOO_PAGER_HTTP_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
95 /* authentication/login host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 #define YAHOO_AUTH_HOST "msg.edit.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 #define YAHOO_AUTH_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 /* buddy/identity/config host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 #define YAHOO_DATA_HOST YAHOO_AUTH_HOST
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100 #define YAHOO_DATA_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 /* Address book host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 #define YAHOO_ADDRESS_HOST "uk.address.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103 #define YAHOO_ADDRESS_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
104
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
105 /* User agent to use for HTTP connections */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 /* It needs to have Mozilla/4 in it, otherwise it fails */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 #ifndef VERSION
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
108 #define VERSION "1.0"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
110 #define YAHOO_USER_AGENT "Mozilla/4.6 (libyahoo/" VERSION ")"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
111
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
112 #define YAHOO_PROTOCOL_HEADER "YPNS2.0"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
115 * Routines and data private to this library, should not be directly
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
116 * accessed outside of these routines.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
117 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
118
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
119 /* Service code labels for debugging output */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
120 static struct yahoo_idlabel yahoo_service_codes[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
121 {YAHOO_SERVICE_LOGON, "Pager Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
123 {YAHOO_SERVICE_ISAWAY, "Is Away"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 {YAHOO_SERVICE_ISBACK, "Is Back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 {YAHOO_SERVICE_IDLE, "Idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126 {YAHOO_SERVICE_MESSAGE, "Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 {YAHOO_SERVICE_IDACT, "Activate Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
129 {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
130 {YAHOO_SERVICE_USERSTAT, "User Status"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 {YAHOO_SERVICE_NEWMAIL, "New Mail"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132 {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
134 {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
135 {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
136 {YAHOO_SERVICE_GROUPRENAME, "Group Renamed"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
139 {YAHOO_SERVICE_PING, "Ping"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
140 {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142 {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 {YAHOO_SERVICE_CONFMSG, "Conference Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
146 {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149 {YAHOO_SERVICE_CHATMSG, "Chat Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
150 {YAHOO_SERVICE_GAMELOGON, "Game Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151 {YAHOO_SERVICE_GAMELOGOFF, "Game Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
152 {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
153 {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157 /* Status codes */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
158 static struct yahoo_idlabel yahoo_status_codes[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
159 {YAHOO_STATUS_AVAILABLE, "I'm Available"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
160 {YAHOO_STATUS_BRB, "Be Right Back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
161 {YAHOO_STATUS_BUSY, "Busy"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 {YAHOO_STATUS_NOTATHOME, "Not at Home"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163 {YAHOO_STATUS_NOTATDESK, "Not at my Desk"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
164 {YAHOO_STATUS_NOTINOFFICE, "Not in the Office"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
165 {YAHOO_STATUS_ONPHONE, "On the Phone"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
166 {YAHOO_STATUS_ONVACATION, "On Vacation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
167 {YAHOO_STATUS_OUTTOLUNCH, "Out to Lunch"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
168 {YAHOO_STATUS_STEPPEDOUT, "Stepped Out"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 {YAHOO_STATUS_INVISIBLE, "Invisible"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170 {YAHOO_STATUS_IDLE, "Idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
171 {YAHOO_STATUS_CUSTOM, "Custom Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
172 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
173 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
174
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
175 /* Status codes */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
176 static struct yahoo_idlabel yahoo_status_append[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
177 {YAHOO_STATUS_AVAILABLE, "is now available"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
178 {YAHOO_STATUS_BRB, "will be right back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
179 {YAHOO_STATUS_BUSY, "is now busy"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
180 {YAHOO_STATUS_NOTATHOME, "is not at home"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
181 {YAHOO_STATUS_NOTATDESK, "is not at their desk"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
182 {YAHOO_STATUS_NOTINOFFICE, "is not in the office"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
183 {YAHOO_STATUS_ONPHONE, "is on the phone"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
184 {YAHOO_STATUS_ONVACATION, "is on vacation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
185 {YAHOO_STATUS_OUTTOLUNCH, "is out to lunch"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
186 {YAHOO_STATUS_STEPPEDOUT, "has stepped out"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
187 {YAHOO_STATUS_INVISIBLE, "is now invisible"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
188 {YAHOO_STATUS_IDLE, "is now idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
189 {YAHOO_STATUS_CUSTOM, ""},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
190 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
191 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
192
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
193 /* Take a 4-byte character string in little-endian format and return
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
194 a unsigned integer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
195 unsigned int yahoo_makeint(unsigned char *data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
196 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
197 if (data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
198 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
199 return ((data[3] << 24) + (data[2] << 16) + (data[1] << 8) +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
200 (data[0]));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
201 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
202 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
203 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
204
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
205 /* Take an integer and store it into a 4 character little-endian string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
206 static void yahoo_storeint(unsigned char *data, unsigned int val)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
207 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
208 unsigned int tmp = val;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
209 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
210
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
211 if (data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
212 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
213 for (i = 0; i < 4; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
214 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
215 data[i] = tmp % 256;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
216 tmp >>= 8;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
217 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
218 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
219 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
220
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
221 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
222 converts a comma seperated list to an array of strings
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
223 used primarily in conference code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
224
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
225 allocates a string in here -- caller needs to free it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 char **yahoo_list2array(char *buff)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229 char **tmp_array = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 char *array_elem = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
231 char *tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233 char *buffer = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234 char *ptr_buffer = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
235
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236 int sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
237 int cnt = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
239 unsigned int i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
240 unsigned int len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 if (0 == buff)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
244
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
245 buffer = strdup(buff); /* play with a copy */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
246 ptr_buffer = buffer;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
247
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
248 /* count the number of users (commas + 1) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
249 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
250 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
253 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
254 if not looking at end of list
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255 ( ignore extra pesky comma at end of list)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
256 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
257 if (i != (strlen(buffer) - 1))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
258 cnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
259 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
260 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
261
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
262 /* add one more name than comma .. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
263 cnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
264
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
265 /* allocate the array to hold the list of buddys */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
266 /* null terminated array of pointers */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
267 tmp_array = (char **) malloc(sizeof(char *) * (cnt + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
269 memset(tmp_array, 0, (sizeof(char *) * (cnt + 1)));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
271 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
273 sublen++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
274 tmp = (char *) malloc(sizeof(char) * (sublen + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 memcpy(tmp, ptr_buffer, sublen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
277 tmp[sublen] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
278
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
279 if (ptr_buffer[sublen] != '\0')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
280 ptr_buffer = &(ptr_buffer[sublen + 1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
281 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
282 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
283 sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
285 while (tmp && (strcmp(tmp, "") != 0))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
286 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
287 len = strlen(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
288 array_elem = (char *) malloc(sizeof(char) * (len + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
289
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
290 strncpy(array_elem, tmp, (len + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
291 array_elem[len] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
293 tmp_array[nxtelem++] = array_elem;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294 array_elem = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
295
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
296 FREE(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
297
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
298 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
299 sublen++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
300 tmp = (char *) malloc(sizeof(char) * (sublen + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
301
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 memcpy(tmp, ptr_buffer, sublen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
303 tmp[sublen] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
304
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
305 if (ptr_buffer[sublen] != '\0')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
306 ptr_buffer = &(ptr_buffer[sublen + 1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
307 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
308 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
309
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
310 sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
311 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 tmp_array[nxtelem] = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
313
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
314 FREE(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
315 FREE(buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
316 return (tmp_array);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
318 } /* yahoo_list2array() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
319
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
321 Free's the memory associated with an array generated bu yahoo_list2array
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
322 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
323 void yahoo_arraykill(char **array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
324 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
325 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
326
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
327 if (NULL == array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
328 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
329
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
330 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
331 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
332 free(array[nxtelem++]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
333 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
334
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
335 free(array);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
336 } /* yahoo_arraykill() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
338 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
339 converts an array of strings to a comma seperated list
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
340 used primarily in conference code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
341
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
342 allocates a string in here.. needs to be freed by caller program
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
343 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
344 char *yahoo_array2list(char **array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
345 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
346 char *list = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
347 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
348 int arraylength = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
349
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
350 if (NULL == array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
351 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
352
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
353 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
354 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
355 arraylength += strlen(array[nxtelem++]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
356 arraylength++; /* comma */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
357 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
358
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
359 nxtelem = 0; /* reset array counter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
360
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
361 /* allocate at least one - for NULL list - and to
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
362 allow my strcat to write past the end for the
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
363 last comma which gets converted to NULL */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
364 list = (char *) malloc(sizeof(char) * (arraylength + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
365
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
366 memset(list, 0, (arraylength + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
367
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
368 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
369 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
370 strcat(list, array[nxtelem++]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
371 strcat(list, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
372 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
373 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
374 overwrite last ',' with a NULL
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
375 makes the string end with two null characters, but this way
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
376 handles empty lists gracefully
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
377 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
378 list[arraylength - 1] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
379
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
380 return (list);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
381 } /* yahoo_array2list() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
382
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
383 /* Free a buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
384 static void yahoo_free_buddies(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
385 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
386 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
387
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
388 if (!ctx->buddies)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
389 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
390 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
391 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
392
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
393 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
394 while (ctx->buddies[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
395 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
396 FREE(ctx->buddies[i]->group);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
397 FREE(ctx->buddies[i]->id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
398 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
399 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
400
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
401 FREE(ctx->buddies);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
402 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
403
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
404 /* Free a identities list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
405 static void yahoo_free_identities(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
406 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
407 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
408
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
409 if (!ctx->identities)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
410 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
412 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
413
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
415 while (ctx->identities[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
417 FREE(ctx->identities[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
418 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
419 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
420
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
421 FREE(ctx->identities);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_free_identities: done\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 #if 0 /* not used at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
426 static void yahoo_hexdump(char *label, unsigned char *data, int datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428 int i, j;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429 int val, skipped_last;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
430 char current[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 char last[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
432 char tmp[15];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 char outline[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 static int last_datalen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435 static unsigned char *last_data = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
436
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
437 if (last_data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
438 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439 if (last_datalen == datalen && !memcmp(data, last_data, datalen))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
441 printf("\n%s: <same as last dump>\n", label);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
442 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
443 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
444 FREE(last_data);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
445 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
446
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
447 /* Copy the packet so we can don't duplicate it next time. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
448 last_datalen = datalen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
449 last_data = (unsigned char *) malloc(datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
450 memcpy(last_data, data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
451
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
452 /* Handle printing the full entry out */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
453 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
454 printf("%s:\n", label);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
455
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
456 skipped_last = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
457 last[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
458 for (j = 0; j * 16 < datalen; j++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
459 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
460 current[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
461
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462 /* Print out in hex */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
463 for (i = j * 16; i < (j * 16 + 16); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
464 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
465 if (i < datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
467 val = data[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
468 sprintf(tmp, "%.2X ", val);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
469 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
470 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
471 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472 sprintf(tmp, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
474 strcat(current, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
475 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
476
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
477 /* Print out in ascii */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
478 strcat(current, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
479 for (i = j * 16; i < (j * 16) + 16; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
480 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
481 if (i < datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
482 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
483 if (isprint(data[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
484 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
485 sprintf(tmp, "%c", data[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
486 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
487 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
488 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
489 sprintf(tmp, ".");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
490 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
491 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
492 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
493 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
494 sprintf(tmp, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
495 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 strcat(current, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
497 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
498
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499 outline[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
500 if (!strcmp(current, last))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
502 if (!skipped_last)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
503 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504 strcpy(outline, " ....:\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
505 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
506 skipped_last = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
507 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
508 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
509 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
510 sprintf(outline, " %.4d: %s\n", j * 16, current);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
511 skipped_last = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513 printf("%s", outline);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
514 strcpy(last, current);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
515 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
516
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
517 if (skipped_last)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
518 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
519 printf("%s", outline);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
520 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
521 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
522 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
523 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
524
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
525 static int yahoo_socket_connect(struct yahoo_context *ctx, char *host,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
526 int port)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
527 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
528 struct sockaddr_in serv_addr;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
529 struct hostent *server;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
530 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
531 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
532
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
533 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
534 "[libyahoo] yahoo_socket_connect - starting [%s:%d]\n", host, port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
535
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
536 if (!ctx || !host || !port)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
537 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
538 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
539 "[libyahoo] yahoo_socket_connect - nulls\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
540 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
541 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
542
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
543 server = gethostbyname(host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
544 if (!server)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
545 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
546 printf("[libyahoo] failed to look up server (%s:%d)\n", host, port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
547 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
548 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
549
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
550 servfd = socket(AF_INET, SOCK_STREAM, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
551
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
552 bzero(&serv_addr, sizeof(serv_addr));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
553 serv_addr.sin_family = AF_INET;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
554 bcopy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
555 serv_addr.sin_port = htons(port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
556
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
557 res = -1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
558 if (ctx->connect_mode == YAHOO_CONNECT_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
559 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
560 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
561 res =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
562 Rconnect(servfd, (struct sockaddr *) &serv_addr,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
563 sizeof(serv_addr));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
564 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
565 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
566 else if (ctx->connect_mode == YAHOO_CONNECT_SOCKS5)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
567 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
568 #if defined(WITH_SOCKS5)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
569 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
570 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
571 else if (ctx->connect_mode == YAHOO_CONNECT_NORMAL ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
572 ctx->connect_mode == YAHOO_CONNECT_HTTP ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
573 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
574 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
575 res =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
576 connect(servfd, (struct sockaddr *) &serv_addr,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
577 sizeof(serv_addr));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
578 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
579 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
580 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
581 printf("[libyahoo] unhandled connect mode (%d).\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
582 ctx->connect_mode);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
583 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
584 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
585
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
586 if (res < 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
587 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
588 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
589 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
590 printf("[libyahoo] failed to connect to server (%s:%d)\n", host,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
591 port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
592 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
593 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
594
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
595 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
596 "[libyahoo] yahoo_socket_connect - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
597 return servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
598 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
599
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
600 /* really ugly brute force approach - someone find a GPL'd/free
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
601 equivalent and replace this p.o.s. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
602 static char *yahoo_urlencode(char *data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
603 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
604 static char *tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
605 char buf[4];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
606 int i, len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
607
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
608 len = 3 * strlen(data) + 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
609
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
610 FREE(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
611
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
612 if (!data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
613 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
614 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
615 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
616
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 /* change this at some point to re-use the buffer, no sense
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
618 allocating repeatedly */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
619 tmp = (char *) malloc(len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
620 tmp[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
621
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
622 for (i = 0; i < strlen(data); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
623 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
624 if (isdigit((int) (data[i])) ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
625 isalpha((int) data[i]) || data[i] == '_')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
626 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
627 buf[0] = data[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
628 buf[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
629 strcat(tmp, buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
631 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
632 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
633 sprintf(buf, "%%%.2X", data[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
634 strcat(tmp, buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
635 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
637
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
639 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
640
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
641 static void yahoo_addtobuffer(struct yahoo_context *ctx, char *data,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
642 int datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
643 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
644 //yahoo_hexdump("yahoo_addtobuffer", data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
646 /* Check buffer, increase size if necessary */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
647 if (!ctx->io_buf
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
648 || ((ctx->io_buf_maxlen - ctx->io_buf_curlen) < (datalen + 100)))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
649 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
650 char *new_io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
651
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
652 if (datalen < 10240)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
653 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
654 ctx->io_buf_maxlen += 10240;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
655 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
656 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
657 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
658 ctx->io_buf_maxlen += datalen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
659 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
660 new_io_buf = (char *) malloc(ctx->io_buf_maxlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
661
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
662 if (ctx->io_buf)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
663 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
664 memcpy(new_io_buf, ctx->io_buf, ctx->io_buf_curlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
665 FREE(ctx->io_buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
666 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
667
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
668 ctx->io_buf = new_io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
669 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
670
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
671 memcpy(ctx->io_buf + ctx->io_buf_curlen, data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
672 ctx->io_buf_curlen += datalen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
673 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
674
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
675 static int yahoo_tcp_readline(char *ptr, int maxlen, int fd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
676 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
677 int n, rc;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
678 char c;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
679
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
680 for (n = 1; n < maxlen; n++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
681 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
682 again:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
683
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
684 if ((rc = read(fd, &c, 1)) == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
685 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
686 *ptr++ = c;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
687 if (c == '\n')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
688 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
689 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
690 else if (rc == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
691 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
692 if (n == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
693 return (0); /* EOF, no data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
694 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
695 break; /* EOF, w/ data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
696 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
697 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
698 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
699 if (errno == EINTR)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
700 goto again;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
701 printf
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
702 ("Yahoo: Error reading from socket in yahoo_tcp_readline.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
703 exit(1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
704 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
705 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
706
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
707 *ptr = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
708 return (n);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
709 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
710
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
711 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
712 * Published library interfaces
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
713 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
714
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
715 /* Initialize interface to yahoo library, sortof like a class object
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
716 creation routine. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
717 struct yahoo_context *yahoo_init(char *user, char *password,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
718 struct yahoo_options *options)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
719 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
720 struct yahoo_context *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
721
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
722 if (!user || !password)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
723 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
724 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
725 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
726
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
727 /* Allocate a new context */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
728 tmp = (struct yahoo_context *) calloc(1, sizeof(*tmp));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
729
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
730 /* Fill in any available info */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
731 tmp->user = strdup(user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
732 tmp->password = strdup(password);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
733 if (options->proxy_host)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
734 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
735 tmp->proxy_host = strdup(options->proxy_host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
736 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
737 tmp->proxy_port = options->proxy_port;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
738 tmp->connect_mode = options->connect_mode;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
739
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
740 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
741 if (connect_mode == YAHOO_CONNECT_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
742 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
743 static int did_socks_init = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
744
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
745 if (did_socks_init == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
746 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
747 SOCKSinit("libyahoo");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
748 did_socks_init = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
749 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
750 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
751 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
752
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
753 /* Fetch the cookies */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
754 if (!yahoo_fetchcookies(tmp))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
755 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
756 yahoo_free_context(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
757 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
758 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
759
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
760 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
761 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
762
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
763 /* Free a yahoo context */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
764 void yahoo_free_context(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
765 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
766 FREE(ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
767 FREE(ctx->password);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
768 FREE(ctx->proxy_host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
769 FREE(ctx->io_buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
770 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
771 FREE(ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
772 FREE(ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
773
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
774 yahoo_free_buddies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
775 yahoo_free_identities(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
776
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
777 FREE(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
778 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
779
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
780 /* Turn a status code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
781 char *yahoo_get_status_string(int statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
782 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
783 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
784
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
785 for (i = 0; yahoo_status_codes[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
786 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
787 if (yahoo_status_codes[i].id == statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
788 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
789 return yahoo_status_codes[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
790 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
791 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
792 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
793 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
794
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
795 /* Turn a status code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
796 char *yahoo_get_status_append(int statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
797 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
798 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
799
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
800 for (i = 0; yahoo_status_append[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
801 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
802 if (yahoo_status_append[i].id == statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
803 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
804 return yahoo_status_append[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
805 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
806 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
807 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
808 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
809
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
810 /* Turn a service code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
811 char *yahoo_get_service_string(int servicecode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
812 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
813 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
814 char *name = "Unknown Service";
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
815 static char tmp[50];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
816
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
817 for (i = 0; yahoo_service_codes[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
818 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
819 if (yahoo_service_codes[i].id == servicecode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
820 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
821 name = yahoo_service_codes[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
822 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
823 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
824 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
825
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
826 snprintf(tmp, 50, "(%d) %s", servicecode, name);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
827 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
828 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
829
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
830 /* Return a malloc()'d copy of the users cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
831 int yahoo_fetchcookies(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
832 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
833 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
834 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
835 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
836 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
837 char *tmpstr;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
838
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
839 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
840 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
841 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
842 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
843
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
844 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
845
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
846 /* Check for cached cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
847 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
848 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
849 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
850 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
851 if (ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
852 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
853 FREE(ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
854 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
855
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
856 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
857 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
858 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
859 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
860 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
861 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
862 servfd = yahoo_socket_connect(ctx, YAHOO_AUTH_HOST, YAHOO_AUTH_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
863 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
864 if (!servfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
865 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
866 printf("[libyahoo] failed to connect to pager auth server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
867 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
868 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
869
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
870 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
871 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
872 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
873 strcat(buffer, "http://" YAHOO_AUTH_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
874 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
875 strcat(buffer, "/config/ncclogin?login=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
876 if (ctx->login_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
877 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
878 strcat(buffer, yahoo_urlencode(ctx->login_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
879 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
880 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
881 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
882 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
883 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
884 strcat(buffer, "&passwd=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
885 strcat(buffer, yahoo_urlencode(ctx->password));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
886 strcat(buffer, "&n=1 HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
887 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
888 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
889 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
890
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
891 write(servfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
892
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
893 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
894 "[libyahoo] yahoo_fetchcookies: writing buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
895
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
896 ctx->cookie = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
897 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
898 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
899 /* strip out any non-alphas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
900 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
901 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
902 if (!isprint((int) buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
903 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
904 buffer[i] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
905 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
906 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
907
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
908 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
909 "[libyahoo] yahoo_fetchcookies: read buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
910
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
911 if (!strcasecmp(buffer, "ERROR: Invalid NCC Login"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
912 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
913 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
914 "[libyahoo] yahoo_fetchcookies: password was invalid\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
915 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
916 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
917
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
918 if (!strncasecmp(buffer, "Set-Cookie: Y=", 14))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
919 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
920 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
921 ctx->cookie = strdup(buffer + 12);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
922
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
923 tmpstr = strchr(ctx->cookie, ';');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
924 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
925 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
926 *tmpstr = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
927 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
928 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
929 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
930 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
931 "[libyahoo] yahoo_fetchcookies: closing server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
932 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
933 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
934 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
935 "[libyahoo] yahoo_fetchcookies: closed server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
936
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
937 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
938 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
939 tmpstr = strstr(ctx->cookie, "n=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
940 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
941 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
942 ctx->login_cookie = strdup(tmpstr + 2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
943 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
944
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
945 tmpstr = strchr(ctx->login_cookie, '&');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
946 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
947 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
948 *tmpstr = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
949 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
950 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
951
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
952 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
953 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
954 "[libyahoo] yahoo_fetchcookies: cookie (%s)\n", ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
955 if (ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
956 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
957 "[libyahoo] yahoo_fetchcookies: login cookie (%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
958 ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
959
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
960 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: done\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
961
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
962 return 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
963 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
964
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
965 /* Add a buddy to your buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
966 int yahoo_add_buddy(struct yahoo_context *ctx, char *addid,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
967 char *active_id, char *group, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
968 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
969 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
970 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
971
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
972 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
973 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
974 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
975 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
976
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
977 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
978 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
979 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
980 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
981 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
982 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
983 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
984 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
985 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
986 "[libyahoo] yahoo_add_buddy - connecting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
987 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
988 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
989 if (!servfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
990 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
991 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
992 "[libyahoo] yahoo_add_buddy: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
993 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
994 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
995
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
996 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
997 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
998 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
999 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1000 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1001 strcat(buffer, "/config/set_buddygrp?.bg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1002 strcat(buffer, yahoo_urlencode(group));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1003 strcat(buffer, "&.src=bl&.cmd=a&.bdl=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1004 strcat(buffer, yahoo_urlencode(addid));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1005 strcat(buffer, "&.id=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1006 strcat(buffer, yahoo_urlencode(active_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1007 strcat(buffer, "&.l=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1008 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1009 strcat(buffer, "&.amsg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1010 strcat(buffer, yahoo_urlencode(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1011 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1012
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1013 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1014 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1015 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1016 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1017 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1018 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1019
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1020 write(servfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1021 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1022 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1023 /* just dump the output, I don't care about errors at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1024 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1025 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1026 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1027
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1028 /* indicate success for now with 0 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1029 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy: finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1030 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1031 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1032
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1033 /* Remove a buddy from your buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1034 int yahoo_remove_buddy(struct yahoo_context *ctx, char *addid,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1035 char *active_id, char *group, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1036 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1037 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1038 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1039
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1040 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1041 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1042 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1043 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1044
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1045 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1046 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1047 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1048 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1049 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1050 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1051 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1052 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1053 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy - connecting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1054 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1055 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1056 if (!servfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1057 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1058 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1059 "[libyahoo] yahoo_add_buddy: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1060 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1061 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1062
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1063 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1064 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1065 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1066 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1067 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1068 strcat(buffer, "/config/set_buddygrp?.bg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1069 strcat(buffer, yahoo_urlencode(group));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1070 strcat(buffer, "&.src=bl&.cmd=d&.bdl=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1071 strcat(buffer, yahoo_urlencode(addid));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1072 strcat(buffer, "&.id=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1073 strcat(buffer, yahoo_urlencode(active_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1074 strcat(buffer, "&.l=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1075 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1076 strcat(buffer, "&.amsg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1077 strcat(buffer, yahoo_urlencode(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1078 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1079
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1080 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1081 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1082 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1083 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1084 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1085 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1086
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1087 write(servfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1088 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1089 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1090 /* just dump the output, I don't care about errors at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1091 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1092 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1093 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1094
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1095 /* indicate success for now with 0 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1096 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1097 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1098
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1099 /* Retrieve the configuration from the server */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1100 int yahoo_get_config(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1101 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1102 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1103 int i, j;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1104 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1105 int commas;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1106 int in_section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1107 struct yahoo_buddy **buddylist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1108 int buddycnt = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1109 int nextbuddy = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1110
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1111 /* Check for cached cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1112 if (!ctx || !ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1113 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1114 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1115 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1116
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1117 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1118
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1119 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1120 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1121 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1122 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1123 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1124 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1125 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1126 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1127 if (!servfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1128 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1129 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1130 "[libyahoo] yahoo_get_config: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1131 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1132 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1133
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1134 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1135 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1136 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1137 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1138 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1139 strcat(buffer, "/config/get_buddylist?.src=bl HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1140 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1141 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1142 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1143 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1144
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1145 write(servfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1146 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: sending '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1147 buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1148
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1149 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1150 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1151 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1152 /* strip out any non-alphas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1153 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1154 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1155 if (!isprint((int) buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1156 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1157 for (j = i; j < strlen(buffer); j++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1158 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1159 buffer[j] = buffer[j + 1];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1160 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1161 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1162 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1163
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1164 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1165 "[libyahoo] yahoo_get_config: read '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1166
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1167 if (!strcasecmp(buffer, "BEGIN IDENTITIES"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1168 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1169 in_section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1170 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1171 else if (!strcasecmp(buffer, "END IDENTITIES"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1172 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1173 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1174 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1175 else if (!strcasecmp(buffer, "BEGIN BUDDYLIST"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1176 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1177 in_section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1178 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1179 else if (!strcasecmp(buffer, "END BUDDYLIST"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1180 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1181 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1182 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1183 else if (in_section == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1184 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1185 char *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1186
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1187 /* count the commas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1188 commas = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1189 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1190 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1191 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1192 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1193 commas++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1194 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1195 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1196
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1197 /* make sure we've gotten rid of any previous identities array */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1198 yahoo_free_identities(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1199
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1200 /* allocate the array to hold the list of identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1201 ctx->identities = (char **) calloc(commas + 2, sizeof(char *));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1202
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1203 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1204 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1205 tmp = strtok(buffer, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1206 while (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1207 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1208 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1209 "[libyahoo] yahoo_get_config: retrieved "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1210 "identity '%s'\n", tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1211 ctx->identities[i++] = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1212 tmp = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1213 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1214 ctx->identities[i] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1215 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1216 else if (in_section == 2)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1217 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1218 char *group;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1219 char *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1220 struct yahoo_buddy **tmp_buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1221 struct yahoo_buddy *tmpbuddy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1222 int tmp_buddycnt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1223
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1224 /* count the buddies on this line */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1225 tmp_buddycnt = buddycnt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1226 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1227 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1228 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1229 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1230 buddycnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1231 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1232 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1233 buddycnt++; /* always one more than comma count */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1234
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1235 /* allocate the array to hold the list of buddy */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1236 tmp_buddylist = (struct yahoo_buddy **)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1237 malloc(sizeof(struct yahoo_buddy *) * (buddycnt + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1238
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1239 /* Free and copy the old one if necessary */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1240 if (buddylist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1241 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1242 memcpy(tmp_buddylist, buddylist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1243
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1244 (tmp_buddycnt + 1) * sizeof(struct yahoo_buddy *));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1245
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1246 FREE(buddylist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1247 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1248 buddylist = tmp_buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1249
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1250 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1251 tmp = strtok(buffer, ",:");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1252 group = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1253 while (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1254 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1255 if (tmp == buffer) /* group name */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1256 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1257 group = tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1258 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1259 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1260 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1261 tmpbuddy = (struct yahoo_buddy *)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1262
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1263 malloc(sizeof(struct yahoo_buddy));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1264
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1265 tmpbuddy->id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1266 tmpbuddy->group = strdup(group);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1267 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1268 "[libyahoo] yahoo_get_config: retrieved buddy '%s:%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1269 group, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1270 buddylist[nextbuddy++] = tmpbuddy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1271 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1272 tmp = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1273 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1274 buddylist[nextbuddy] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1275 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1276 else if (!strncasecmp(buffer, "Mail=", strlen("Mail=")))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1277 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1278 ctx->mail = atoi(buffer + strlen("Mail="));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1279 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1280 "[libyahoo] yahoo_get_config: retrieved mail flag '%d'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1281 ctx->mail);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1282 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1283 else if (!strncasecmp(buffer, "Login=", strlen("Login=")))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1284 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1285 FREE(ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1286 ctx->login_id = strdup(buffer + strlen("Login="));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1287 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1288 "[libyahoo] yahoo_get_config: retrieved login id '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1289 ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1290 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1291 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1292 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1293 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1294
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1295 yahoo_free_buddies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1296 ctx->buddies = buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1297
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1298 /* fill in a bogus login_in, just in case */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1299 if (!ctx->login_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1300 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1301 ctx->login_id = strdup(ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1302 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1303
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1304 /* refetch the cookie if the login_id is different so that
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1305 it will have the correct info in it */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1306 if (strcmp(ctx->login_id, ctx->user))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1307 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1308 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1309 "[libyahoo] yahoo_get_config - refetching cookies\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1310 yahoo_fetchcookies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1311 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1312
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1313 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1314
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1315 return 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1316 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1317
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318 /* Log in, optionally activating other secondary identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1319 int yahoo_cmd_logon(struct yahoo_context *ctx, unsigned int initial_status)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1320 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1321 char login_string[5000]; /* need to change to malloc ASAP */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1322 char *tmpid;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1323 char **identities = ctx->identities;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1324 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1325
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1326 if (!ctx || !ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1327 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1328 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1329 "[libyahoo] yahoo_cmd_logon: logon called without "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1330 "context and/or cookie.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1331 exit(1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1332 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1333
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1334 strcpy(login_string, ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1335 /* testing with new logon code */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1336 // strcpy(login_string, "$1$_2S43d5f$XXXXXXXXWtRKNclLWyy8C.");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1337
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1338 login_string[strlen(login_string) + 1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1339 login_string[strlen(login_string)] = 1; /* control-A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1340
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1341 strcat(login_string, ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1342
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1343 /* Send all identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1344 if (identities)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1345 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1346 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1347 tmpid = identities[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1348 while (tmpid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1349 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1350 if (strcasecmp(tmpid, ctx->user))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1351 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1352 strcat(login_string, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1353 strcat(login_string, tmpid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1354 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1355 tmpid = identities[i++];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1356 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1357 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1358
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1359 yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGON, ctx->user, login_string,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1360 initial_status);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1361
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1362 /* something that the windows one sends, not sure what it is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1363 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1364 login_string[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1365 strcat(login_string, "C=0\002");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1366 strcat(login_string, "F=0,P=0,H=0,S=0,W=0,O=0\002");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1367 strcat(login_string, "M=0,P=0,C=0,S=0");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1368 yahoo_sendcmd(ctx, YAHOO_SERVICE_PASSTHROUGH2, ctx->user, login_string,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1369 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1370 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1371
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1372 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1373 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1374
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1375 int yahoo_connect(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1376 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1377 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1378
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1379 res = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1380 ctx->sockfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1381
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1382 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1383
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1384 switch (ctx->connect_mode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1385 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1386 case YAHOO_CONNECT_SOCKS4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1387 case YAHOO_CONNECT_SOCKS5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1388 case YAHOO_CONNECT_NORMAL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1389 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1390 "[libyahoo] yahoo_connect - establishing socket connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1391 ctx->sockfd =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1392 yahoo_socket_connect(ctx, YAHOO_PAGER_HOST, YAHOO_PAGER_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1393 if (!ctx->sockfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1394 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1395 printf("[libyahoo] couldn't connect to pager host\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1396 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1397 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1398 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1399
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1400 case YAHOO_CONNECT_HTTP:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1401 case YAHOO_CONNECT_HTTPPROXY:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1402 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1403 "[libyahoo] yahoo_connect - no connect for HTTP\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1404 /* no pager connection will be established for this */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1405 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1406
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1407 default:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1408 printf("[libyahoo] unhandled connect mode (%d)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1409 ctx->connect_mode);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1410 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1411
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1412 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1413 return (1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1414 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1415
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1416 /* Send a packet to the server via http connection method */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1417 /* at moment only handles regular http connection, once I have that
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1418 working, this code needs to also do http proxy connections as well */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1419 int yahoo_sendcmd_http(struct yahoo_context *ctx, struct yahoo_rawpacket *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1420 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1421 int sockfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1422 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1423 char tmpbuf[1000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1424 int size;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1425 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1426
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1427 if (!ctx || !pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1428 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1429 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1430 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1431
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1432 size = YAHOO_PACKET_HEADER_SIZE + strlen(pkt->content) + 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1433
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1434 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1435 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1436 sockfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1437 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1438 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1439 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1440 sockfd = yahoo_socket_connect(ctx, YAHOO_PAGER_HTTP_HOST,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1441 YAHOO_PAGER_HTTP_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1442 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1443 if (!sockfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1444 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445 printf("[libyahoo] failed to connect to pager http server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1446 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1447 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1448
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1449 strcpy(buffer, "POST ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1450 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1451 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1452 strcat(buffer, "http://" YAHOO_PAGER_HTTP_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1453 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1454 strcat(buffer, "/notify HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1455
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1456 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1457 strcat(buffer, "Host: " YAHOO_PAGER_HTTP_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1458 snprintf(tmpbuf, 1000, "Content-Length: %d\r\n", size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1459 strcat(buffer, tmpbuf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1460
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1461 strcat(buffer, "Pragma: No-Cache\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1462
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1463 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1464 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1465 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1466 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1467
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1468 write(sockfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1469 write(sockfd, pkt, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1470 write(sockfd, "\r\n", 2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1471
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1472 /* now we need to read the results */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1473 /* I'm taking the cheat approach and just dumping them onto the
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1474 buffer, headers and all, the _skip_to_YHOO_ code will handle it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1475 for now */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1476
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1477 while ((res = read(sockfd, buffer, 5000)) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1478 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1479 if (res == -1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1480 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1481 printf("[libyahoo] Error reading data from server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1482 exit(1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1483 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1484 yahoo_addtobuffer(ctx, buffer, res);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1485 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1486 close(sockfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1487 sockfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1488
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1489 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1490 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1491
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1492 /* Send a packet to the server, called by all routines that want to issue
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1493 a command. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1494 int yahoo_sendcmd(struct yahoo_context *ctx, int service, char *active_nick,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1495 char *content, unsigned int msgtype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1496 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1497 int size;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1498 struct yahoo_rawpacket *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1499 int maxcontentsize;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1500
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1501 /* why the )&*@#$( did they hardwire the packet size that gets sent
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1502 when the size of the packet is included in what is sent, bizarre */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1503 size = 4 * 256 + YAHOO_PACKET_HEADER_SIZE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1504 pkt = (struct yahoo_rawpacket *) calloc(1, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1505
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1506 /* figure out max content length, including trailing null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1507 maxcontentsize = size - sizeof(struct yahoo_rawpacket);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1508
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1509 /* Build the packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1510 strcpy(pkt->version, YAHOO_PROTOCOL_HEADER);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1511 yahoo_storeint(pkt->len, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1512 yahoo_storeint(pkt->service, service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1513
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1514 /* not sure if this is valid with YPNS1.4 or if it needs 2.0 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1515 yahoo_storeint(pkt->msgtype, msgtype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1516
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1517 /* Not sure, but might as well send for regular connections as well. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1518 yahoo_storeint(pkt->magic_id, ctx->magic_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1519 strcpy(pkt->nick1, ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1520 strcpy(pkt->nick2, active_nick);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1521 strncpy(pkt->content, content, maxcontentsize);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1522
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1523 // yahoo_hexdump("send_cmd", (char *) pkt, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1524
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1525 switch (ctx->connect_mode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1526 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1527 case YAHOO_CONNECT_SOCKS4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1528 case YAHOO_CONNECT_SOCKS5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1529 case YAHOO_CONNECT_NORMAL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1530 write(ctx->sockfd, pkt, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1531 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1532 case YAHOO_CONNECT_HTTP:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1533 case YAHOO_CONNECT_HTTPPROXY:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1534 yahoo_sendcmd_http(ctx, pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1535 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1536 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1537
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1538 FREE(pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1539 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1540 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1541
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1542 int yahoo_cmd_ping(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1543 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1544 yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1545 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1546 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1547
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1548 int yahoo_cmd_idle(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1549 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1550 yahoo_sendcmd(ctx, YAHOO_SERVICE_IDLE, ctx->user, "", 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1551 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1552 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1553
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1554 int yahoo_cmd_sendfile(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1555 char *touser, char *msg, char *filename)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1556 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1557 yahoo_dbg_Print("libyahoo", "yahoo_cmd_sendfile not implemented yet!");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1558 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1559 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1560
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1561 int yahoo_cmd_msg(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1562 char *touser, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1563 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1564 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1565
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1566 content = (char *) malloc(strlen(touser) + strlen(msg) + 5);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1567
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1568 if (strlen(touser))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1569 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1570 sprintf(content, "%s,%s", touser, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1571 yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1572 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1573
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1574 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1575 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1576 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1577
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1578 int yahoo_cmd_msg_offline(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1579 char *touser, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1580 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1581 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1582
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1583 content = (char *) malloc(strlen(touser) + strlen(msg) + 5);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1584
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1585 if (strlen(touser))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1586 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1587 sprintf(content, "%s,%s", touser, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1588 yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user, content,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1589 YAHOO_MSGTYPE_KNOWN_USER);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1590 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1591
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1592 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1593 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1594 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1595
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1596 /* appended the " " so that won't trigger yahoo bug - hack for the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1597 int yahoo_cmd_set_away_mode(struct yahoo_context *ctx, int status, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1598 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1599 char statusstring[500];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1600
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1601 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1602 "[libyahoo] yahoo_cmd_set_away_mode: set status (%d), msg(%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1603 status, yahoo_dbg_NullCheck(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1604
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1605 if (status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1606 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1607 if (msg && msg[0] != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1608 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1609 snprintf(statusstring, 500, "%d%c%s", status, 1, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1610 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1611 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1612 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1613 snprintf(statusstring, 500, "%d%c---", status, 1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1614 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1615 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1616 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1617 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1618 snprintf(statusstring, 500, "%d", status);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1619 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1620 yahoo_sendcmd(ctx, YAHOO_SERVICE_ISAWAY, ctx->user, statusstring, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1621
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1622 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1623 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1624
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1625 int yahoo_cmd_set_back_mode(struct yahoo_context *ctx, int status, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1626 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1627 char statusstring[500];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1628
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1629 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1630 "[libyahoo] yahoo_cmd_set_back_mode: set status (%d), msg(%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1631 status, yahoo_dbg_NullCheck(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1632
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1633 snprintf(statusstring, 500, "%d%c%s ", status, 1, msg ? msg : "");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1634 yahoo_sendcmd(ctx, YAHOO_SERVICE_ISBACK, ctx->user, statusstring, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1635
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1636 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1637 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1638
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1639 int yahoo_cmd_activate_id(struct yahoo_context *ctx, char *newid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1640 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1641 if (strlen(newid))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1642 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1643 yahoo_sendcmd(ctx, YAHOO_SERVICE_IDACT, newid, newid, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1644 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1645 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1646 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1647
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1648 int yahoo_cmd_user_status(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1649 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1650 yahoo_sendcmd(ctx, YAHOO_SERVICE_USERSTAT, ctx->user, "", 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1651 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1652 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1653
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1654 int yahoo_cmd_logoff(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1655 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1656 yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGOFF, ctx->user, ctx->user, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1657 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1658 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1659
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1660 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1661
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1662 yahoo_cmd_start_conf()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1663
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1664 Starts a conference. (You create the conference)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1665
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1666 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1667 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1668 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1669 You create this id to start the conference, but pass it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1670 along after that.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1671 char **userlist == Users to invite. Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1672 car *msg == Invitiation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1673 int type == 0 - normal, 1 - voice (not supported yet)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1674
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1675 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1676 id^invited-users^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1677 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1678 int yahoo_cmd_start_conf(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1679 char **userlist, char *msg, int type)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1680 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1681 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1682 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1683 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1684 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1685
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1686 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1687 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1688 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1689
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1690 int size = strlen(conf_id) + strlen(msg) + 8 + strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1691
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1692 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1693 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1694
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1695 cont_len = snprintf(content,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1696 size - 1,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1697 "%s%c%s%c%s%c%d",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1698 conf_id, ctrlb, new_userlist, ctrlb, msg, ctrlb, type);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1699
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1700 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1701 unraw_msg = yahoo_unraw_buffer(content, cont_len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1702 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_start_conf: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1703 unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1704 free(unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1705 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1706 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFINVITE, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1707
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1708 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1709 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1710 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1711 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1712
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1713 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1714 yahoo_cmd_conf_logon()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1715
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1716 Reply to a conference invitation, logs you into conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1717
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1718 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1719 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1720 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1721 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1722 char *host == The person that sent you the invitation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1723 char **userlist == Everyone else invited. This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1724 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1725
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1726 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1727 id^all-invited-users-and-host
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1728
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1729 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1730 int yahoo_cmd_conf_logon(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1731 char *host, char **userlist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1732 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1733 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1734 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1735 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1736 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1737
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1738 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1739 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1740 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1741
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1742 int size = strlen(conf_id) + strlen(host) + 8 + strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1743
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1744 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1745 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1746
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1747 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1748 sprintf(content, "%s%c%s,%s", conf_id, ctrlb, host, new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1749
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1750 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1751 unraw_msg = yahoo_unraw_buffer(content, cont_len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1752 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logon: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1753 unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1754 free(unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1755 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1756 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGON, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1757
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1758 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1759 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1760 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1761 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1762
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1763 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1764
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1765 yahoo_cmd_decline_conf()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1766
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1767 Reply to a conference invitation, decline offer.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1768
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1769 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1770 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1771 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1772 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1773 char *host == The person that sent you the invitation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1774 char **userlist == Everyone else invited. This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1775 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1776 (Null if replying to a conference additional invite )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1777 char *msg == Reason for declining.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1778
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1779 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1780 id^all-invited-users-and-host^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1781
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1782 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1783 int yahoo_cmd_decline_conf(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1784 char *host, char **userlist, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1785 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1786 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1787 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1788 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1789
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1790 int size =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1791
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1792 strlen(conf_id) + strlen(host) + strlen(msg) + 8 +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1793 strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1794
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1795 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1796 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1797
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1798 sprintf(content, "%s%c%s,%s%c%s", conf_id, ctrlb, host, new_userlist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1799 ctrlb, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1800
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1801 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_decline_conf: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1802 content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1803 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFDECLINE, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1804
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1805 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1806 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1807 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1808 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1809
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1810 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1811
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1812 yahoo_cmd_conf_logoff()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1813
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1814 Logoff of a conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1815
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1816 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1817 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1818 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1819 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1820 char **userlist == Everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1821 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1822
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1823 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1824 id^all-invited-users
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1825
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1826 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1827
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1828 int yahoo_cmd_conf_logoff(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1829 char **userlist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1830 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1831 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1832 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1833 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1834
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1835 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1836 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1837 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1838 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1839
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1840 int size = strlen(conf_id) + strlen(new_userlist) + 8;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1841
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1842 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1843 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1844
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1845 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1846 snprintf(content, size, "%s%c%s", conf_id, ctrlb, new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1847 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1848 unraw_msg = yahoo_unraw_buffer(content, cont_len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1849 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logoff: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1850 unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1851 free(unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1852 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1853 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGOFF, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1854
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1855 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1856 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1857 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1858 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1859
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1860 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1861
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1862 yahoo_cmd_conf_invite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1863
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1864 Invite another user to an already running conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1865
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1866 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1867 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1868 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1869 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1870 char *invited_user == The person being invited to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1871 char **userlist == Everyone else in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1872 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1873 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1874
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1875 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1876 id^invited-user^who-else-in-conf^who-else-in-conf^msg^0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1877
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1878 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1879
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1880 int yahoo_cmd_conf_invite(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1881 char **userlist, char *invited_user, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1882 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1883 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1884 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1885 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1886
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1887 int size = strlen(conf_id) + strlen(invited_user)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1888 + (2 * strlen(new_userlist)) + strlen(msg) + 7;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1889
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1890 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1891 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1892
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1893 sprintf(content, "%s%c%s%c%s%c%s%c%s%c0", conf_id, ctrlb,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1894 invited_user, ctrlb, new_userlist, ctrlb,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1895 new_userlist, ctrlb, msg, ctrlb);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1896 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_invite: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1897 content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1898 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFADDINVITE, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1899
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1900 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1901 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1902 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1903 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1904
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1905 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1906
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1907 yahoo_cmd_conf_msg()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1908
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1909 Send a message to everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1910
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1911 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1912 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1913 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1914 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1915 char **userlist == Everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1916 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1917 char *msg == Message to send.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1918
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1919 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1920 id^all-invited-users^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1921
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1922 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1923 int yahoo_cmd_conf_msg(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1924 char **userlist, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1925 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1926 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1927 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1928 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1929
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1930 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1931 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1932 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1933 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1934
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1935 int size = strlen(conf_id) + strlen(new_userlist) + strlen(msg) + 8;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1936
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1937 content = (char *) malloc(size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1938 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1939
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1940 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1941 snprintf(content, size, "%s%c%s%c%s", conf_id, ctrlb, new_userlist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1942 ctrlb, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1943 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1944 unraw_msg = yahoo_unraw_buffer(content, cont_len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1945 yahoo_dbg_Print("libyahoo", "yahoo_cmd_conf_msg: %s\n", unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1946 free(unraw_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1947 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1948 yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFMSG, ctx->user, content, 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1949
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1950 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1951 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1952 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1953 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1954
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1955 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1956 * Free the rawpacket structure - primarily a placeholder
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1957 * since all static elements at the moment
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1958 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1959 void yahoo_free_rawpacket(struct yahoo_rawpacket *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1960 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1961 FREE(pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1962 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1963
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1964 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1965 * Free entire packet structure including string elements
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1966 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1967 void yahoo_free_packet(struct yahoo_packet *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1968 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1969 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1970
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1971 if (pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1972 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1973 FREE(pkt->real_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1974 FREE(pkt->active_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1975 FREE(pkt->conf_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1976 FREE(pkt->conf_host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1977 FREE(pkt->conf_user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1978 FREE(pkt->conf_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1979 FREE(pkt->cal_url);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1980 FREE(pkt->cal_timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1981 FREE(pkt->cal_title);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1982 FREE(pkt->cal_description);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1983 FREE(pkt->chat_invite_content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1984 FREE(pkt->msg_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1985 FREE(pkt->msg_timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1986 FREE(pkt->msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1987 FREE(pkt->file_from);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1988 FREE(pkt->file_flag);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1989 FREE(pkt->file_url);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1990 FREE(pkt->file_description);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1991 FREE(pkt->group_old);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1992 FREE(pkt->group_new);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1993 if (pkt->idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1994 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1995 for (i = 0; i < pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1996 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1997 yahoo_free_idstatus(pkt->idstatus[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1998 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1999 free(pkt->idstatus);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2000 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2001 free(pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2002 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2003 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2004
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2005 void yahoo_free_idstatus(struct yahoo_idstatus *idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2006 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2007 if (!idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2008 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2009 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2010 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2011
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2012 FREE(idstatus->id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2013 FREE(idstatus->connection_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2014 FREE(idstatus->status_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2015 FREE(idstatus);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2016 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2017
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2018 struct yahoo_packet *yahoo_parsepacket(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2019 struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2020 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2021 struct yahoo_packet *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2022
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2023 /* If no valid inpkt passed, return */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2024 if (!inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2025 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2026 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2027 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2028
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2029 /* Allocate the packet structure, zeroed out */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2030 pkt = (struct yahoo_packet *) calloc(sizeof(*pkt), 1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2031
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2032 /* Pull out the standard data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2033 pkt->service = yahoo_makeint(inpkt->service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2034 pkt->connection_id = yahoo_makeint(inpkt->connection_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2035 pkt->real_id = strdup(inpkt->nick1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2036 pkt->active_id = strdup(inpkt->nick2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2037
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2038 pkt->magic_id = yahoo_makeint(inpkt->magic_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2039 pkt->unknown1 = yahoo_makeint(inpkt->unknown1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2040 pkt->msgtype = yahoo_makeint(inpkt->msgtype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2041
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2042 /* doing this seems like a cleaner approach, but am not sure if it is
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2043 a valid one */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2044 if (pkt->magic_id != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2045 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2046 ctx->magic_id = pkt->magic_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2047 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2048 if (pkt->connection_id != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2049 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2050 ctx->connection_id = pkt->connection_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2051 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2052
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2053 /* Call a particular parse routine to pull out the content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2054 switch (pkt->service)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2055 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2056 case YAHOO_SERVICE_LOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2057 case YAHOO_SERVICE_LOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2058 case YAHOO_SERVICE_ISAWAY:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2059 case YAHOO_SERVICE_ISBACK:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2060 case YAHOO_SERVICE_USERSTAT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2061 case YAHOO_SERVICE_CHATLOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2062 case YAHOO_SERVICE_CHATLOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2063 case YAHOO_SERVICE_GAMELOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2064 case YAHOO_SERVICE_GAMELOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2065 yahoo_parsepacket_status(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2066 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2067 case YAHOO_SERVICE_IDACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2068 case YAHOO_SERVICE_IDDEACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2069 /* nothing needs done, only has main fields */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2070 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2071 case YAHOO_SERVICE_MESSAGE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2072 case YAHOO_SERVICE_SYSMESSAGE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2073 case YAHOO_SERVICE_CHATMSG:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2074 yahoo_parsepacket_message(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2075 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2076 case YAHOO_SERVICE_NEWMAIL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2077 case YAHOO_SERVICE_NEWPERSONALMAIL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2078 yahoo_parsepacket_newmail(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2079 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2080 case YAHOO_SERVICE_CALENDAR:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2081 yahoo_parsepacket_calendar(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2082 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2083 case YAHOO_SERVICE_CHATINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2084 yahoo_parsepacket_chatinvite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2085 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2086 case YAHOO_SERVICE_NEWCONTACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2087 yahoo_parsepacket_newcontact(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2088 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2089 case YAHOO_SERVICE_GROUPRENAME:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2090 yahoo_parsepacket_grouprename(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2091 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2092 case YAHOO_SERVICE_CONFINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2093 yahoo_parsepacket_conference_invite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2094 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2095 case YAHOO_SERVICE_CONFLOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2096 case YAHOO_SERVICE_CONFLOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2097 yahoo_parsepacket_conference_user(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2098 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2099 case YAHOO_SERVICE_CONFDECLINE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2100 yahoo_parsepacket_conference_decline(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2101 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2102 case YAHOO_SERVICE_CONFADDINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2103 yahoo_parsepacket_conference_addinvite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2104 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2105 case YAHOO_SERVICE_CONFMSG:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2106 yahoo_parsepacket_conference_msg(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2107 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2108 case YAHOO_SERVICE_PING:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2109 yahoo_parsepacket_ping(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2110 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2111 case YAHOO_SERVICE_FILETRANSFER:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2112 yahoo_parsepacket_filetransfer(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2113 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2114 default:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2115 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2116 "yahoo_parsepacket: can't parse packet type (%d)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2117 pkt->service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2118 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2119 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2120
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2121 return pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2122 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2124 int yahoo_parsepacket_ping(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2125 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2126 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2127 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2128
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2129 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2130 content = inpkt->content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2131
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2132 pkt->msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2133 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2134 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2135 pkt->msg = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2136 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2137
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2138 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2139 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2140
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2141 int yahoo_parsepacket_newmail(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2142 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2143 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2144 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2145 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2146
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2147 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2148 content = inpkt->content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2149 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2150
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2151 if (pkt->service == YAHOO_SERVICE_NEWMAIL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2152 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2153 pkt->mail_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2154 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2155 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2156 pkt->mail_status = atoi(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2157 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2158 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2159 else if (pkt->service == YAHOO_SERVICE_NEWPERSONALMAIL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2160 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2161 pkt->mail_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2162 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2163 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2164 pkt->mail_status = atoi(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2165 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2166 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2167
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2168 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2169 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2170
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2171 int yahoo_parsepacket_grouprename(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2172 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2173 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2174 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2175 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2176
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2177 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2178 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2179
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2180 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2181 pkt->group_old = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2182 pkt->group_new = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2183
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2184 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2185 delim[0] = 1; /* control-a */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2186 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2187
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2188 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2189 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2190 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2191 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2192
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2193 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2194 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2195 pkt->group_old = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2196 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2197 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2198
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2199 if (tmp) /* conference host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2200 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2201 pkt->group_new = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2202 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2203 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2204
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2205 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2206 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2207 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2208
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2209 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2210
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2211 yahoo_parsepacket_conference_invite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2212
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2213 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2214 id^host^invited-users^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2215
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2216 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2217 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2218 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2219 char *conf_host == The person inviting you to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2220 char **userlist == Everyone else invited to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2221 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2222 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2223 int conf_type == Type of conference ( 0 = text, 1 = voice )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2224
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2225 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2226 int yahoo_parsepacket_conference_invite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2227 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2228 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2229 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2230 char *tmp = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2231 size_t found = 0, len = yahoo_makeint(inpkt->len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2232
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2233 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2234 content = memdup(inpkt->content, len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2235
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2236 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2237 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2238 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2239 pkt->conf_user = pkt->active_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2240 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2241 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2242 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2243
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2244 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2245 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2246 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2247 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2248
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2249 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2250 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2251 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2252 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2253 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2254
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2255 if (tmp) /* conference host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2256 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2257 pkt->conf_host = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2258 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2259 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2260
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2261 if (tmp) /* who else is invited */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2262 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2263 char *userlist = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2264
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2265 pkt->conf_userlist = yahoo_list2array(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2266 FREE(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2267 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2268 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2269
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2270 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2271 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2272 pkt->conf_msg = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2273 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2274 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2275
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2276 if (tmp) /* 0 == text chat 1 == voice chat */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2277 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2278 char *conftype = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2279
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2280 if (0 != conftype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2281 pkt->conf_type = atoi(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2282 FREE(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2283 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2284 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2285
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2286 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2287 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2288 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2289
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2290 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2291
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2292 yahoo_parsepacket_conference_decline()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2293
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2294 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2295 id^user-who-declined^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2296
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2297 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2298 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2299 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2300 char *conf_user == User who declined.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2301 char *msg == Reason for declining.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2302
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2303 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2304 int yahoo_parsepacket_conference_decline(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2305 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2306 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2307 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2308 char *tmp, delim[2];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2309
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2310 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2311 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2312
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2313 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2314 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2315 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2316 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2317 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2318 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2319 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2320
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2321 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2322 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2323 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2324
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2325 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2326 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2327 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2328 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2329
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2330 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2331 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2332 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2333 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2334 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2335 if (tmp) /* got the user who declined */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2336 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2337 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2338 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2339 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2340 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2341 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2342 pkt->conf_msg = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2343 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2344 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2345
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2346 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2347 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2348
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2349 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2350
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2351 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2352
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2353 yahoo_parsepacket_conference_addinvite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2354
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2355 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2356 Msgtype == 1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2357 id^inviter^who-else-invited^who-else-in-conf^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2358 Msgtype == 11
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2359 id^inviter^invited-user
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2360
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2361 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2362 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2363 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2364 char *conf_inviter == The person inviting you to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2365 char **userlist == Everyone else in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2366 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2367 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2368 int conf_type == Type of conference ( 0 = text, 1 = voice )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2369
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2370 char *conf_user == User invited to conference (msgtype == 11)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2371 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2372 int yahoo_parsepacket_conference_addinvite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2373 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2374 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2375 char *content = 0, *tmp = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2376 size_t found = 0, len = yahoo_makeint(inpkt->len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2377
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2378 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2379 content = memdup(inpkt->content, len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2380
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2381 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2382 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2383 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2384 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2385 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2386 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2387 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2388
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2389 if (pkt->msgtype == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2390 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2391 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2392 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2393 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2394 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2395
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2396 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2397 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2398 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2399 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2400 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2401 if (tmp) /* got the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2402 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2403 pkt->conf_inviter = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2404 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2405 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2406 if (tmp) /* got who-else-invited */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2407 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2408 /* don't use this field, its the same as the next one
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2409 so I'm going to use the second field */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2410 /* pkt->conf_userlist = yahoo_list2array(tmp); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2411 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2412 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2413 if (tmp) /* got the people in conference
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2414 not counting the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2415 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2416 char *userlist = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2417
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2418 pkt->conf_userlist = yahoo_list2array(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2419 FREE(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2420 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2421 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2422 if (tmp) /* got the message */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2423 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2424 pkt->conf_msg = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2425 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2426 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2427 if (tmp) /* 0 at the end */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2428 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2429 char *conftype = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2430
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2431 if (0 != conftype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2432 pkt->conf_type = atoi(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2433 FREE(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2434 /* tmp = memtok (0, 0, "\002", 2, &found); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2435 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2436 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2437 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2438 /* msgid == 11 (someone else is being invited) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2439 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2440 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2441 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2442 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2443 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2444
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2445 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2446 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2447 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2448 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2449 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2450
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2451 if (tmp) /* got the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2452 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2453 pkt->conf_inviter = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2454 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2455 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2456
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2457 if (tmp) /* got the invited-user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2458 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2459 pkt->conf_user = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2460 /* tmp = memtok (0, 0, "\002", 2, &found); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2461 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2462 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2463
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2464 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2465 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2466 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2467
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2468 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2469
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2470 yahoo_parsepacket_conference_msg()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2471
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2472 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2473 id^who-from^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2474
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2475 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2476 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2477 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2478 char *conf_user == User who sent message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2479 char *msg == Message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2480
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2481 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2482 int yahoo_parsepacket_conference_msg(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2483 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2484 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2485 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2486 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2487
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2488 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2489 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2490
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2491 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2492 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2493 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2494 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2495 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2496 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2497 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2498
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2499 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2500 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2501 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2502
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2503 /* parse error messages first */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2504 if (pkt->msgtype == YAHOO_MSGTYPE_ERROR)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2505 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2506 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2507 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2508 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2509
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2510 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2511 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2512 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2513 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2514
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2515 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2516 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2517 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2518 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2519 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2520
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2521 if (tmp) /* conference user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2522 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2523 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2524 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2525 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2526
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2527 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2528 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2529 pkt->conf_msg = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2530 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2531 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2532
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2533 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2534 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2535 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2536
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2537 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2538
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2539 yahoo_parsepacket_conference_user()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2540 (User logged on/off to conference)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2541 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2542 id^user_who_logged_on/off
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2543
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2544 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2545 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2546 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2547 char *conf_user == User who logged on to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2548
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2549 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2550 int yahoo_parsepacket_conference_user(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2551 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2552 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2553 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2554 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2555
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2556 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2557 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2558
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2559 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2560 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2561 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2562 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2563 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2564 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2565 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2566
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2567 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2568 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2569 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2570
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2571 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2572 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2573 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2574 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2575
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2576 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2577 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2578 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2579 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2580 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2581
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2582 if (tmp) /* conference user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2583 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2584 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2585 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2586 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2587
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2588 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2589 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2590 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2591
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2592 int yahoo_parsepacket_filetransfer(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2593 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2594 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2595 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2596 char *tmp[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2597 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2598
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2599 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2600 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2601
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2602 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2603 pkt->file_from = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2604 pkt->file_flag = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2605 pkt->file_url = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2606 pkt->file_expires = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2607 pkt->file_description = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2608
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2609 /* overkill allocation, but simple since only temporary use */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2610 tmp[0] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2611 tmp[1] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2612 tmp[2] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2613 tmp[3] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2614 tmp[4] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2615
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2616 /* raw data format: from,flag,url,timestamp,description */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2617
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2618 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2619 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2620 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2621 tmp[0][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2622 tmp[1][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2623 tmp[2][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2624 tmp[3][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2625 tmp[4][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2626
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2627 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2628 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2629 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2630
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2631 if (ch == ',' && section < 4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2632 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2633 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2634 section++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2635 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2636 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2637 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2638 tmp[section][j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2639 tmp[section][j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2640 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2641 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2642 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2643
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2644 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2645 pkt->file_from = strdup(tmp[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2646 pkt->file_flag = strdup(tmp[1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2647 pkt->file_url = strdup(tmp[2]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2648 pkt->file_expires = atoi(tmp[3]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2649 pkt->file_description = strdup(tmp[4]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2650
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2651 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2652 FREE(tmp[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2653 FREE(tmp[1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2654 FREE(tmp[2]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2655 FREE(tmp[3]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2656 FREE(tmp[4]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2657 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2658 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2659 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2660
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2661 int yahoo_parsepacket_calendar(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2662 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2663 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2664 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2665 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2666
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2667 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2668 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2669
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2670 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2671 pkt->cal_url = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2672 pkt->cal_timestamp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2673 pkt->cal_type = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2674 pkt->cal_title = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2675 pkt->cal_description = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2676
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2677 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2678 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2679 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2680
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2681 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2682 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2683 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2684 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2685
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2686 if (tmp) /* got the url */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2687 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2688 pkt->cal_url = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2689 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2690
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2691 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2692 v= is not the type code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2693 i= doesn't look like it either
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2694 tmp2 = strstr(pkt->cal_url, "v=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2695 if ( tmp2 )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2696 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2697 pkt->cal_type = atoi(tmp2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2698 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2699 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2700
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2701 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2702
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2703 if (tmp) /* unknown (type code?) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2704 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2705 /* appears this isn't it either, I don't see where it is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2706 /* pkt->cal_type = atoi(tmp); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2707 tmp = strtok(NULL, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2708 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2709
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2710 if (tmp) /* timestamp */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2711 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2712 pkt->cal_timestamp = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2713 tmp = strtok(NULL, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2714 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2715
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2716 if (tmp) /* title */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2717 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2718 pkt->cal_title = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2719 tmp = strtok(NULL, delim); /* use delim since it won't occur again */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2720 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2721
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2722 if (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2723 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2724 pkt->cal_description = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2725 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2726
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2727 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2728 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2729 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2730
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2731 int yahoo_parsepacket_chatinvite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2732 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2733 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2734 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2735 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2736
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2737 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2738 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2739 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2740
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2741 /* do special parsing for invite later on */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2742 pkt->chat_invite_content = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2743
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2744 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2745 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2746
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2747 int yahoo_parsepacket_newcontact(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2748 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2749 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2750 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2751 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2752
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2753 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2754 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2755 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2756
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2757 /* cheat for now, say if first digit is number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2758 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2759 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2760 if (isdigit((int) content[0]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2761 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2762 return yahoo_parsepacket_status(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2763 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2764 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2765 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2766 return yahoo_parsepacket_message(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2767 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2768 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2769
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2770 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2771 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2772
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2773 int yahoo_parsepacket_status(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2774 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2775 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2776 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2777 char *tmpc;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2778 char *tmp1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2779 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2780 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2781 int index;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2782 int realcount;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2783
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2784 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2785 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2786 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2787
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2788 /* Pull off the flag from the initial part of the content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2789 /* this flag indicates the number of buddy that're online */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2790 pkt->flag = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2791 tmpc = content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2792 while (tmpc[0] && isdigit((int) tmpc[0]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2793 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2794 pkt->flag = pkt->flag * 10 + (content[0] - '0');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2795 tmpc++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2796 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2797 if (tmpc[0] && tmpc[0] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2798 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2799 tmpc++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2800 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2801
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2802 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2803 We're receiving either this:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2804 2,buddy1(0,728EE9FB,0,1,0,0),buddy2(0,7AC00000,0,1,0,0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2805 or this:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2806 buddy1(0,728EE9FB,0,1,0,0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2807 hence:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2808 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2809
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2810 if (pkt->flag == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2811 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2812 pkt->idstatus_count = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2813 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2814 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2815 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2816 pkt->idstatus_count = pkt->flag;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2817 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2818
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2819 /* print an error if I get the was not AWAY */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2820 if (strstr(tmpc, "was not AWAY"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2821 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2822 pkt->idstatus_count = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2823 yahoo_dbg_Print("libyahoo", "yahoo_parsepacket_status: "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2824 "got a 'was not AWAY' message\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2825 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2826
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2827 if (pkt->idstatus_count == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2828 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2829 /* No entries, so no array needed */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2830 pkt->idstatus = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2831 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2832 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2833 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2834 /* Allocate the array */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2835 pkt->idstatus = (struct yahoo_idstatus **)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2836 calloc(sizeof(struct yahoo_idstatus), pkt->idstatus_count);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2837
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2838 for (i = 0; i < pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2839 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2840 pkt->idstatus[i] = (struct yahoo_idstatus *)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2841
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2842 calloc(1, sizeof(struct yahoo_idstatus));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2843 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2844 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2845
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2846 index = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2847 tmp1 = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2848 realcount = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2849 while (tmpc && tmpc[0] && pkt->idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2850 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2851 struct yahoo_idstatus *tmpid;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2852
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2853 /* Get pointer to allocated structure to hold status data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2854 tmpid = pkt->idstatus[index++];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2855 if (!tmpid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2856 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2857 /* shortcut, we know there can't be any more status entries
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2858 at this point */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2859 /* yahoo_dbg_Print("status", "null tmpid"); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2860 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2861 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2862
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2863 /* YPNS2.0 nick(status,msg,connection_id,UNK,in_pager,in_chat,in_game) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2864 /* tnneul(99,test,message^A,6AD68325,0,1,0,0) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2865 /* 0 1 2 3 4 5 6 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2866
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2867 /* YPNS1.0 nick(status,connection_id,UNK,in_pager,in_chat,in_game) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2868 /* nneul(0,7081F531,0,1,0,0) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2869 /* 0 2 3 4 5 6 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2870
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2871 /* rewrite this whole section in a less ugly fashion */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2872 /* first pull off the id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2873
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2874 /* YUCK - YPNS2.0 has variable format status records, if type is 99,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2875 it has 7 fields, second is msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2876
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2877 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2878 yahoo_dbg_Print("status", "whole string = '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2879 yahoo_dbg_NullCheck(tmpc));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2880 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2881
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2882 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2883 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2884 tmp1 = strtok(NULL, "(");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2885 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2886 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2887 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2888 tmp1 = strtok(tmpc, "(");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2889 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2890 if (tmp1 && tmp1[0] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2891 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2892 tmp1++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2893 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2894
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2895 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2896 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2897 tmpid->id = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2898 realcount++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2899
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2900 for (i = 0; i <= 6 && tmp1; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2901 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2902 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2903 yahoo_dbg_Print("status", "i==%d\n", i);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2904 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2905
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2906 if (i == 6) /* end of status area */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2907 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2908 tmp1 = strtok(NULL, "),");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2909 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2910 else if (i == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2911 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2912 char delim[3];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2913
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2914 if (tmpid->status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2915 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2916 delim[0] = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2917 delim[1] = ',';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2918 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2919 tmp1 = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2920 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2921 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2922 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2923 i = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2924 tmp1 = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2925 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2926 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2927 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2928 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2929
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2930 tmp1 = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2931 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2932
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2933 /* then pull off the particular element of the list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2934 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2935 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2936 switch (i)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2937 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2938 case 0: /* status */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2939 tmpid->status = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2940 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2941 case 1: /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2942 if (tmpid->status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2943 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2944 tmpid->status_msg = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2945 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2946 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2947 case 2: /* session id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2948 tmpid->connection_id = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2949 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2950 case 3: /* dunno what this is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2951 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2952 case 4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2953 tmpid->in_pager = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2954 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2955 case 5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2956 tmpid->in_chat = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2957 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2958 case 6:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2959 tmpid->in_game = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2960 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2961 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2962 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2963 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2964 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2965 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2966
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2967 for (i = realcount; i <= pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2968 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2969 if (pkt->idstatus && pkt->idstatus[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2970 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2971 FREE(pkt->idstatus[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2972 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2973 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2974 pkt->idstatus_count = realcount;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2975
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2976 /* Free working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2977 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2978
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2979 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2980 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2981 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2982
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2983 int yahoo_parsepacket_message(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2984 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2985 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2986 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2987 char *tmp_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2988 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2989
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2990 if (pkt->msgtype == YAHOO_MSGTYPE_OFFLINE)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2991 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2992 return yahoo_parsepacket_message_offline(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2993 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2994
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2995 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2996 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2997 tmp_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2998
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2999 /* initialize */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3000 pkt->msg_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3001
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3002 /* possible message content formats: */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3003 /* userid(#) *//* msgtype == YAHOO_MSGTYPE_STATUS */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3004 /* userid,,msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3005
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3006 /* this needed butchered */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3007 /* YAHOO_MSGTYPE_OFFLINE */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3008 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3009
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3010 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3011 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3012 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3013 tmp_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3014 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3015 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3016 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3017
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3018 if (section == 0) /* parsing userid */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3019 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3020 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3021 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3022 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3023 section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3024 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3025 else if (ch == '(')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3026 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3027 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3028 section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3029 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3030 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3031 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3032 tmp_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3033 tmp_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3034 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3035 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3036 else if (section == 1) /* parsing flag */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3037 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3038 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3039 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3040 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3041 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3042 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3043 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3044 else if (section == 2) /* parsing status */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3045 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3046 if (ch == ')')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3047 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3048 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3049 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3050 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3051 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3052 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3053 if (isdigit((int) ch))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3054 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3055 pkt->msg_status *= 10;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3056 pkt->msg_status += ch - '0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3057 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3058 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3059 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3060 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3061 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3062 pkt->msg = strdup(&content[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3063 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3064 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3065
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3066 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3067 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3068
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3069 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3070 pkt->msg_id = strdup(tmp_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3071
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3072 /* handle empty message case */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3073 /* don't pass a message if it's just a status update */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3074 if (!pkt->msg && pkt->msgtype != YAHOO_MSGTYPE_STATUS)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3075 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3076 pkt->msg = strdup("");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3077 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3078
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3079 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3080 FREE(tmp_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3081 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3082
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3083 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3084 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3085 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3086
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3087 /* This parses a special format offline message, and is only currently
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3088 called from yahoo_parsepacket_message. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3089 int yahoo_parsepacket_message_offline(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3090 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3091 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3092 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3093 char *to_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3094 char *from_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3095 char *timestamp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3096 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3097
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3098 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3099 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3100 to_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3101 from_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3102 timestamp = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3103
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3104 /* initialize */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3105 pkt->msg_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3106
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3107 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3108 /* sec0,sec1,sec2=to,sec3=from,sec4=tstamp,sec5=msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3109
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3110 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3111 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3112 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3113 to_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3114 from_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3115 timestamp[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3116
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3117 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3118 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3119 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3120
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3121 if (section == 0) /* parsing first unknown number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3122 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3123 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3124 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3125 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3126 section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3127 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3128 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3129 else if (section == 1) /* parsing second unknown number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3130 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3131 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3132 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3133 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3134 section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3135 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3136 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3137 else if (section == 2) /* parsing to-id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3138 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3139 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3140 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3141 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3142 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3143 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3144 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3145 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3146 to_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3147 to_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3148 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3149 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3150 else if (section == 3) /* parsing from-id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3151 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3152 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3153 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3154 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3155 section = 4;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3156 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3157 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3158 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3159 from_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3160 from_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3161 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3162 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3163 else if (section == 4) /* parsing timestamp */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3164 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3165 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3166 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3167 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3168 section = 5;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3169 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3170 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3171 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3172 timestamp[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3173 timestamp[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3174 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3175 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3176 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3177 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3178 pkt->msg = strdup(&content[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3179 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3180 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3181
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3182 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3183 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3184
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3185 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3186 pkt->msg_id = strdup(from_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3187 pkt->msg_timestamp = strdup(timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3188 if (pkt->active_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3189 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3190 FREE(pkt->active_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3191 pkt->active_id = strdup(to_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3192 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3193
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3194 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3195 FREE(timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3196 FREE(from_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3197 FREE(to_id) FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3198
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3199 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3200 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3201 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3202
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3203 int yahoo_getdata(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3204 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3205 char buf[1000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3206 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3207
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3208 /* This is a http mode connection, so just send a ping to get any
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3209 new data from the server. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3210 if (ctx->connect_mode == YAHOO_CONNECT_HTTP ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3211 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3212 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3213 yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3214 return (1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3215 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3216
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3217 /* this assumes that data is ready */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3218 /* Read from the connection to the server and get any new data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3219 res = read(ctx->sockfd, buf, 1000);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3220 if (res == -1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3221 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3222 yahoo_dbg_Print("io",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3223 "yahoo_getdata: error reading data from server\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3224 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3225 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3226 if (res > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3227 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3228 yahoo_addtobuffer(ctx, buf, res);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3229 yahoo_dbg_Print("io", "[libyahoo] yahoo_getdata: read (%d) bytes\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3230 res);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3231 return 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3232 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3233 else if (res == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3234 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3235 yahoo_dbg_Print("io",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3236 "[libyahoo] yahoo_getdata: got zero length read\n", res);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3237 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3238 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3239
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3240 return (1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3241 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3242
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3243 struct yahoo_rawpacket *yahoo_getpacket(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3244 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3245 struct yahoo_rawpacket *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3246 struct yahoo_rawpacket *retpkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3247 int *buflen = &ctx->io_buf_curlen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3248 char *buffer = ctx->io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3249 unsigned int contentlen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3250
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3251 /* If buffer doesn't start with YHOO, skip bytes until it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3252 does. This is to protect against possible packet alignment
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3253 errors if I size something wrong at any time. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3254
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3255 while ((*buflen >= 4) && (memcmp(buffer, "YHOO", 4)))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3256 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3257 /* making quiet for now so I don't have to work too hard on the HTTP support */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3258 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3259 printf("\nskipped buffer byte (%d)\n", buffer[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3260 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3261 memmove(buffer, buffer + 1, *buflen - 1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3262 *buflen = *buflen - 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3263 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3264
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3265 /* Don't do anything if the buffer doesn't have at least a full
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3266 header */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3267 if (*buflen < YAHOO_PACKET_HEADER_SIZE)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3268 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3269 // printf("returning null cause buffer is too small\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3270 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3271 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3272
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3273 /* print out the beginning of the buffer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3274 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3275 printf("Buffer (buflen = %d):\n", *buflen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3276 for (i = 0; i < *buflen; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3277 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3278 if ((i) % 10 == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3279 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3280 printf("\n%.4d: ", i);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3281 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3282 if (isprint(buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3283 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3284 printf("%-3d %c ", buffer[i], buffer[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3285 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3286 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3287 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3288 printf("%-3d ", buffer[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3289 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3290 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3291 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3292 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3293 /* Make pkt point to buffer for ease of use */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3294 pkt = (struct yahoo_rawpacket *) buffer;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3295
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3296 /* Determine the content size specified by the header */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3297 contentlen = yahoo_makeint(pkt->len) - YAHOO_PACKET_HEADER_SIZE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3298 // printf("contentlen = %d\n", contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3299
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3300 /* Don't continue if buffer doesn't have full content in it */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3301 if (*buflen < (YAHOO_PACKET_HEADER_SIZE + contentlen))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3302 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3303 // printf("buffer not big enough for contentlen\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3304 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3305 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3306
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3307 /* Copy this packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3308 retpkt =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3309 (struct yahoo_rawpacket *) malloc(YAHOO_PACKET_HEADER_SIZE +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3310 contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3311 memcpy(retpkt, buffer, YAHOO_PACKET_HEADER_SIZE + contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3312
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3313 /* Shift the buffer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3314 memmove(buffer, buffer + YAHOO_PACKET_HEADER_SIZE + contentlen,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3315 *buflen - YAHOO_PACKET_HEADER_SIZE - contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3316
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3317 /* Adjust the buffer length */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3318 *buflen -= (YAHOO_PACKET_HEADER_SIZE + contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3319
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3320 /* Return the packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3321 return retpkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3322 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3323
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3324 int yahoo_isbuddy(struct yahoo_context *ctx, const char *id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3325 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3326 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3327 char *buddy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3328
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3329 if (!id || !ctx || !ctx->buddies)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3330 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3331 return FALSE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3332 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3333
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3334 for (i = 0; ctx->buddies[i]; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3335 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3336 buddy = (ctx->buddies[i])->id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3337 if (!strcasecmp(id, buddy))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3338 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3339 return TRUE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3340 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3341 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3342
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3343 return FALSE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3344 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3345
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3346 static void yahoo_free_address (struct yahoo_address *add)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3347 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3348 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3349 "[libyahoo] yahoo_free_address: record at address 0x%08p for user %s (%s %s) being free'd\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3350 add, add->id, add->firstname, add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3351
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3352 FREE (add->firstname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3353 FREE (add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3354 FREE (add->emailnickname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3355 FREE (add->email);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3356 FREE (add->workphone);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3357 FREE (add->homephone);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3358 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3359
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3360 void yahoo_freeaddressbook(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3361 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3362 unsigned int count = ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3363 struct yahoo_address *add_p = ctx->addresses;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3364
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3365 if (NULL == ctx || NULL == ctx->addresses)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3366 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3367
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3368 while (count-- > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3369 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3370 yahoo_free_address (add_p++);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3371 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3372
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3373 ctx->address_count = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3374 FREE (ctx->addresses);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3375 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3376
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3377 static void yahoo_data_to_addressbook (char *block, struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3378 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3379 char *token = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3380 int record = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3381 struct yahoo_address *add = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3382
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3383 if (NULL == block || NULL == ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3384 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3385
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3386 yahoo_freeaddressbook (ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3387
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3388 add = ctx->addresses = calloc (ctx->address_count, sizeof (struct yahoo_address));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3389
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3390 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3391 Okay!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3392 At this point we have a char * (block) that has \012 delimited records
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3393 Each record (as a string when retreived with strtok) follows the format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3394 <ID>:<FIRSTNAME>\011<LASTNAME>\011<EMAILNICKNAME>\011<EMAIL>\011<HOMEPHONE>\011<WORKPHONE>\011[01]\011<ENTRYID>\000
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3395 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3396
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3397 token = strtok (block, "\012");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3398 while (NULL != token)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3399 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3400 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3401 Here we must use memtok because we'll get some repeated tokens!!!!!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3402 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3403 char *field = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3404 size_t token_len = 0, found = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3405
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3406 ++record;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3407 token_len = strlen (token);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3408
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3409 field = memtok(token, token_len, ":", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3410
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3411 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3412 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3413 add->id = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3414 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3415 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3416
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3417 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3418 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3419 add->firstname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3420 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3421 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3422
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3423 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3424 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3425 add->lastname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3426 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3427 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3428
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3429 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3430 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3431 add->emailnickname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3432 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3433 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3434
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3435 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3436 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3437 add->email = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3438 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3439 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3440
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3441 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3442 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3443 add->homephone = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3444 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3445 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3446
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3447 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3448 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3449 add->workphone = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3450 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3451 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3452
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3453 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3454 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3455 add->primary_phone = (*field == '0' ? home : work);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3456 field = memtok(0, 0, "", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3457 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3458
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3459 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3460 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3461 char *entryid = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3462 if (NULL != entryid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3463 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3464 add->entryid = atoi (entryid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3465 FREE (entryid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3466 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3467 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3468
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3469 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3470 "[libyahoo] yahoo_fetchaddressbook: record #%d is for user %s (%s %s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3471 record, add->id, add->firstname, add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3472
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3473 ++add;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3474
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3475 token = strtok (NULL, "\012");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3476 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3477 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3478
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3479 /* retreive the details of the friends in your address book that have a Yahoo! id listed */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3480 int yahoo_fetchaddressbook(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3481 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3482 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3483 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3484 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3485 int copied = 0, size = 5000;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3486 char *address = NULL, *copy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3487
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3488 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3489 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3490 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3491 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3492
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3493 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3494 "[libyahoo] yahoo_fetchaddressbook: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3495
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3496 /* Check for cached addresses */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3497 if (ctx->addresses)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3498 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3499 yahoo_freeaddressbook(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3500 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3501
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3502 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3503 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3504 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3505 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3506 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3507 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3508 servfd = yahoo_socket_connect(ctx, YAHOO_ADDRESS_HOST, YAHOO_ADDRESS_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3509 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3510
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3511 if (!servfd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3512 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3513 printf("[libyahoo] failed to connect to address book server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3514 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3515 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3516
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3517 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3518 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3519 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3520 strcat(buffer, YAHOO_ADDRESS_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3521 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3522 strcat(buffer, "/yab/uk/yab?v=PG&A=s");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3523 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3524 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3525 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3526 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3527 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3528 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3529 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3530
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3531 write(servfd, buffer, strlen(buffer));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3532
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3533 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3534 "[libyahoo] yahoo_fetchaddressbook: writing buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3535
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3536 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3537 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3538 if ('\012' == buffer[0])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3539 continue;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3540
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3541 if (0 == strncmp (buffer, "1\011", 2))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3542 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3543 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3544 "[libyahoo] yahoo_fetchaddressbook: found first line\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3545 if (3 == res)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3546 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3547 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3548 "[libyahoo] yahoo_fetchaddressbook: however there's been a problem\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3549 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3550 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3551
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3552 address = &buffer[2];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3553 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3554 else if (NULL != address)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3555 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3556 address = &buffer[0];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3557 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3558
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3559 if (NULL != address)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3560 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3561 if (NULL == copy)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3562 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3563 copy = malloc (size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3564 memset (copy, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3565 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3566
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3567 if ((copied + res) > size)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3568 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3569 char *newcopy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3570
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3571 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3572 "[libyahoo] yahoo_fetchaddressbook: resizing buffer from %d bytes to %d bytes\n", size, size * 2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3573 size *= 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3574 newcopy = malloc (size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3575 memset (newcopy, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3576 memcpy (newcopy, copy, copied);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3577 free (copy);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3578 copy = newcopy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3579 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3580
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3581 copied += res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3582 strcat (copy, address);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3583 ++ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3584 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3585 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3586
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3587 yahoo_data_to_addressbook (copy, ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3588 FREE (copy);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3589
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3590 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3591 "[libyahoo] yahoo_fetchaddressbook: closing server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3592 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3593 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3594 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3595 "[libyahoo] yahoo_fetchaddressbook: closed server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3596
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3597 yahoo_dbg_Print("addressbook", "[libyahoo] yahoo_fetchaddressbook: done (%d addresses retreived)\n", ctx->address_count);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3598
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3599 return ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3600 }