plugins/yay/libyahoo.c

Sun, 07 Jan 2001 20:39:03 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Sun, 07 Jan 2001 20:39:03 +0000
changeset 1392
d7e7f153bc08
parent 1375
e2f26e078f18
child 1409
a48d3f901593
permissions
-rw-r--r--

[gaim-migrate @ 1402]
erg

1135
8c84ffb4c003 [gaim-migrate @ 1145]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1099
diff changeset
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 Yahoo Pager Client Library
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 This code is based on code by Douglas Winslow. The original info from
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 his code is listed below. This code has taken his code and has been
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 altered to my naming and coding conventions and has been made more
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 usable as a library of routines.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 -- Nathan Neulinger <nneul@umr.edu>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 Yahoo Pager Client Emulator Pro - yppro.c
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 A basic reference implementation
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 Douglas Winslow <douglas@min.net>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 Tue Sep 1 02:28:21 EDT 1998
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 Version 2, Revision 2
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 Known to compile on Linux 2.0, FreeBSD 2.2, and BSDi 3.0.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 hi to aap bdc drw jfn jrc mm mcd [cejn]b #cz and rootshell
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 Finally!
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 Yahoo finally patched their server-side, and things will be getting
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 back to "normal". I will continue to maintain this code as long as
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 there is interest for it. Since Yahoo will be discontinuing YPNS1.1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 login support shortly, I've upgraded this client to do YPNS1.2. You
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27 *must* have a password to pass authentication to the pager server.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 This authentication is done by a weird HTTP cookie method.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 This code is distributed under the GNU General Public License (GPL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 #include "config.h"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 #include <stdio.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 #include <netdb.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 #include <fcntl.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 #include <errno.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 #include <sys/socket.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 #include <netinet/in.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 #if defined(WITH_GTK)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 #include <gtk/gtk.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 #include <unistd.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 #if defined(HAVE_STRINGS_H)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 #include <strings.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 #if defined(HAVE_STRING_H)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 #include <string.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 #include <ctype.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 #include "libyahoo.h"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 #ifdef HAVE_DMALLOC
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 #include "dmalloc.h"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 #else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 #include <stdlib.h>
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 #include "memtok.h"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 /* allow libyahoo to be used without gtkyahoo's debug support */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61 #ifdef ENABLE_LIBYAHOO_DEBUG
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 #include "libyahoo-debug.h"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 #else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 static void yahoo_dbg_Print(char *tmp, ...)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 #define yahoo_dbg_NullCheck(x) ((x)?(x):("[NULL]"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 /* remap functions to gtk versions */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 #if defined(WITH_GTK)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 #define malloc g_malloc
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 #define free g_free
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 #define calloc(x,y) g_malloc0((x)*(y))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 #if (!defined(TRUE) || !defined(FALSE))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 # define TRUE 1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 # define FALSE 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 /* Define a quick shortcut function to free a pointer and set it to null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 #define FREE(x) if (x) { free(x); x=NULL; }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 #if defined(WITH_SOCKS4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 void SOCKSinit(char *argv0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 /* pager server host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 #define YAHOO_PAGER_HOST "cs.yahoo.com"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 #define YAHOO_PAGER_PORT 5050
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 /* pager server host for http connections */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 #define YAHOO_PAGER_HTTP_HOST "http.pager.yahoo.com"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 #define YAHOO_PAGER_HTTP_PORT 80
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 /* authentication/login host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 #define YAHOO_AUTH_HOST "msg.edit.yahoo.com"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 #define YAHOO_AUTH_PORT 80
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 /* buddy/identity/config host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100 #define YAHOO_DATA_HOST YAHOO_AUTH_HOST
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 #define YAHOO_DATA_PORT 80
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 /* Address book host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 #define YAHOO_ADDRESS_HOST "uk.address.yahoo.com"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 #define YAHOO_ADDRESS_PORT 80
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 /* User agent to use for HTTP connections */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 /* It needs to have Mozilla/4 in it, otherwise it fails */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 #ifndef VERSION
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 #define VERSION "1.0"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 #define YAHOO_USER_AGENT "Mozilla/4.6 (libyahoo/" VERSION ")"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 #define YAHOO_PROTOCOL_HEADER "YPNS2.0"
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 * Routines and data private to this library, should not be directly
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 * accessed outside of these routines.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 /* Service code labels for debugging output */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 static struct yahoo_idlabel yahoo_service_codes[] = {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 {YAHOO_SERVICE_LOGON, "Pager Logon"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 {YAHOO_SERVICE_ISAWAY, "Is Away"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 {YAHOO_SERVICE_ISBACK, "Is Back"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 {YAHOO_SERVICE_IDLE, "Idle"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 {YAHOO_SERVICE_MESSAGE, "Message"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 {YAHOO_SERVICE_IDACT, "Activate Identity"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 {YAHOO_SERVICE_USERSTAT, "User Status"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 {YAHOO_SERVICE_NEWMAIL, "New Mail"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136 {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137 {YAHOO_SERVICE_GROUPRENAME, "Group Renamed"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 {YAHOO_SERVICE_PING, "Ping"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146 {YAHOO_SERVICE_CONFMSG, "Conference Message"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 {YAHOO_SERVICE_CHATMSG, "Chat Message"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 {YAHOO_SERVICE_GAMELOGON, "Game Logon"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 {YAHOO_SERVICE_GAMELOGOFF, "Game Logoff"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 {0, NULL}
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 };
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 /* Status codes */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 static struct yahoo_idlabel yahoo_status_codes[] = {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 {YAHOO_STATUS_AVAILABLE, "I'm Available"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 {YAHOO_STATUS_BRB, "Be Right Back"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 {YAHOO_STATUS_BUSY, "Busy"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 {YAHOO_STATUS_NOTATHOME, "Not at Home"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 {YAHOO_STATUS_NOTATDESK, "Not at my Desk"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 {YAHOO_STATUS_NOTINOFFICE, "Not in the Office"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 {YAHOO_STATUS_ONPHONE, "On the Phone"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167 {YAHOO_STATUS_ONVACATION, "On Vacation"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 {YAHOO_STATUS_OUTTOLUNCH, "Out to Lunch"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169 {YAHOO_STATUS_STEPPEDOUT, "Stepped Out"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 {YAHOO_STATUS_INVISIBLE, "Invisible"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171 {YAHOO_STATUS_IDLE, "Idle"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 {YAHOO_STATUS_CUSTOM, "Custom Message"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173 {0, NULL}
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
174 };
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 /* Status codes */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177 static struct yahoo_idlabel yahoo_status_append[] = {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178 {YAHOO_STATUS_AVAILABLE, "is now available"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 {YAHOO_STATUS_BRB, "will be right back"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 {YAHOO_STATUS_BUSY, "is now busy"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 {YAHOO_STATUS_NOTATHOME, "is not at home"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 {YAHOO_STATUS_NOTATDESK, "is not at their desk"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183 {YAHOO_STATUS_NOTINOFFICE, "is not in the office"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 {YAHOO_STATUS_ONPHONE, "is on the phone"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 {YAHOO_STATUS_ONVACATION, "is on vacation"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186 {YAHOO_STATUS_OUTTOLUNCH, "is out to lunch"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 {YAHOO_STATUS_STEPPEDOUT, "has stepped out"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 {YAHOO_STATUS_INVISIBLE, "is now invisible"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 {YAHOO_STATUS_IDLE, "is now idle"},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 {YAHOO_STATUS_CUSTOM, ""},
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 {0, NULL}
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 };
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
193
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
194 static int readall(int fd, void *buf, size_t count)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
195 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
196 int left, ret, cur = 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
197
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
198 left = count;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
199
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
200 while (left) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
201 ret = read(fd, ((unsigned char *)buf)+cur, left);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
202 if ((ret == -1) && (errno != EINTR)) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
203 return -1;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
204 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
205 if (ret == 0)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
206 return cur;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
207
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
208 if (ret != -1) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
209 cur += ret;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
210 left -= ret;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
211 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
212 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
213 return cur;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
214 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
215
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
216 static int writeall(int fd, void *buf, size_t count)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
217 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
218 int left, ret, cur = 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
219
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
220 left = count;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
221
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
222 while (left) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
223 ret = write(fd, ((unsigned char *)buf)+cur, left);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
224 if ((ret == -1) && (errno != EINTR)) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
225 return -1;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
226 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
227 if (ret == 0)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
228 return cur;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
229 if (ret != -1) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
230 cur += ret;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
231 left -= ret;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
232 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
233 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
234
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
235 return cur;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
236 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
237
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
238 /* Take a 4-byte character string in little-endian format and return
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239 a unsigned integer */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
240 unsigned int yahoo_makeint(unsigned char *data)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
242 if (data)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
243 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
244 return ((data[3] << 24) + (data[2] << 16) + (data[1] << 8) +
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245 (data[0]));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
246 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
247 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
248 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
250 /* Take an integer and store it into a 4 character little-endian string */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
251 static void yahoo_storeint(unsigned char *data, unsigned int val)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
253 unsigned int tmp = val;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
254 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
256 if (!data)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
257 return;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
258
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
259 for (i = 0; i < 4; i++)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
260 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
261 data[i] = tmp % 256;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
262 tmp >>= 8;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
263 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
264 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267 converts a comma seperated list to an array of strings
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
268 used primarily in conference code
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270 allocates a string in here -- caller needs to free it
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 char **yahoo_list2array(char *buff)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
273 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 char **tmp_array = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 char *array_elem = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276 char *tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 char *buffer = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 char *ptr_buffer = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
281 int sublen = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 int cnt = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
283 int nxtelem = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 unsigned int i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285 unsigned int len = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
286
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
287 if (0 == buff)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
288 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
289
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
290 if (!(ptr_buffer = buffer = strdup(buff))) /* play with a copy */
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
291 return NULL;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
292
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
293 /* count the number of users (commas + 1) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
294 for (i = 0; i < strlen(buffer); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
295 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
296 if (buffer[i] == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
297 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
298 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
299 if not looking at end of list
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
300 ( ignore extra pesky comma at end of list)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
301 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
302 if (i != (strlen(buffer) - 1))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
303 cnt++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
304 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
305 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
306
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
307 /* add one more name than comma .. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
308 cnt++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
309
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
310 /* allocate the array to hold the list of buddys */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
311 /* null terminated array of pointers */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
312 if (!(tmp_array = (char **) malloc(sizeof(char *) * (cnt + 1)))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
313 FREE(buffer);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
314 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
315 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
316
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
317 memset(tmp_array, 0, (sizeof(char *) * (cnt + 1)));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
318
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
319 /* Parse through the list and get all the entries */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
320 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
321 sublen++;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
322 if (!(tmp = (char *) malloc(sizeof(char) * (sublen + 1)))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
323 FREE(buffer);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
324 FREE(tmp_array);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
325 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
326 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
327
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
328 memcpy(tmp, ptr_buffer, sublen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
329 tmp[sublen] = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
330
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
331 if (ptr_buffer[sublen] != '\0')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
332 ptr_buffer = &(ptr_buffer[sublen + 1]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
333 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
334 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
335 sublen = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
336
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
337 while (tmp && (strcmp(tmp, "") != 0))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
338 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
339 len = strlen(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
340 array_elem = (char *) malloc(sizeof(char) * (len + 1));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
341
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
342 strncpy(array_elem, tmp, (len + 1));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
343 array_elem[len] = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
344
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
345 tmp_array[nxtelem++] = array_elem;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
346 array_elem = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
347
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 FREE(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
350 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 sublen++;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
352 if (!(tmp = (char *) malloc(sizeof(char) * (sublen + 1)))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
353 FREE(buffer);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
354 FREE(tmp_array);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
355 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
356 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
358 memcpy(tmp, ptr_buffer, sublen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
359 tmp[sublen] = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
360
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
361 if (ptr_buffer[sublen] != '\0')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
362 ptr_buffer = &(ptr_buffer[sublen + 1]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
363 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
364 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
365
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
366 sublen = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
367 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
368 tmp_array[nxtelem] = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
369
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
370 FREE(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
371 FREE(buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
372 return (tmp_array);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
373
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
374 } /* yahoo_list2array() */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
375
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
376 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
377 Free's the memory associated with an array generated bu yahoo_list2array
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
378 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
379 void yahoo_arraykill(char **array)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
380 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
381 int nxtelem = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
382
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
383 if (NULL == array)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
384 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386 while (array[nxtelem] != NULL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
388 FREE(array[nxtelem++]);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
391 FREE(array);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 } /* yahoo_arraykill() */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 converts an array of strings to a comma seperated list
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 used primarily in conference code
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398 allocates a string in here.. needs to be freed by caller program
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 char *yahoo_array2list(char **array)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
401 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
402 char *list = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 int nxtelem = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404 int arraylength = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 if (NULL == array)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
408
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409 while (array[nxtelem] != NULL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 arraylength += strlen(array[nxtelem++]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 arraylength++; /* comma */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
415 nxtelem = 0; /* reset array counter */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
416
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
417 /* allocate at least one - for NULL list - and to
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
418 allow my strcat to write past the end for the
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
419 last comma which gets converted to NULL */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
420 if (!(list = (char *) malloc(sizeof(char) * (arraylength + 1))))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
421 return NULL;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
422
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
423 memset(list, 0, (arraylength + 1));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
424
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425 while (array[nxtelem] != NULL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
426 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 strcat(list, array[nxtelem++]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
428 strcat(list, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431 overwrite last ',' with a NULL
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 makes the string end with two null characters, but this way
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433 handles empty lists gracefully
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 list[arraylength - 1] = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437 return (list);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438 } /* yahoo_array2list() */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
440 /* Free a buddy list */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
441 static void yahoo_free_buddies(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
442 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
445 if (!ctx->buddies)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
446 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
447 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
448 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
449
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
450 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
451 while (ctx->buddies[i])
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
453 FREE(ctx->buddies[i]->group);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
454 FREE(ctx->buddies[i]->id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
455 i++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
457
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
458 FREE(ctx->buddies);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
459 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
460
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
461 /* Free a identities list */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
462 static void yahoo_free_identities(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
464 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
466 if (!ctx->identities)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
467 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
468 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
472 while (ctx->identities[i])
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 FREE(ctx->identities[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475 i++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478 FREE(ctx->identities);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
479 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_free_identities: done\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
482 #if 0 /* not used at the moment */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 static void yahoo_hexdump(char *label, unsigned char *data, int datalen)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
484 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
485 int i, j;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
486 int val, skipped_last;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
487 char current[100];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
488 char last[100];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
489 char tmp[15];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
490 char outline[100];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
491 static int last_datalen = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
492 static unsigned char *last_data = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 if (last_data)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 if (last_datalen == datalen && !memcmp(data, last_data, datalen))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 printf("\n%s: <same as last dump>\n", label);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 FREE(last_data);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504 /* Copy the packet so we can don't duplicate it next time. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505 last_datalen = datalen;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
506 if (!(last_data = (unsigned char *) malloc(datalen))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
507 FREE(last_data);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
508 return;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
509 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 memcpy(last_data, data, datalen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
511
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 /* Handle printing the full entry out */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 printf("\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514 printf("%s:\n", label);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
515
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
516 skipped_last = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517 last[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 for (j = 0; j * 16 < datalen; j++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
519 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 current[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 /* Print out in hex */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
523 for (i = j * 16; i < (j * 16 + 16); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
524 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
525 if (i < datalen)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
527 val = data[i];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
528 sprintf(tmp, "%.2X ", val);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 sprintf(tmp, " ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 strcat(current, tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 /* Print out in ascii */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 strcat(current, " ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
539 for (i = j * 16; i < (j * 16) + 16; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
541 if (i < datalen)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 if (isprint(data[i]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
544 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 sprintf(tmp, "%c", data[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
546 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
547 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
548 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
549 sprintf(tmp, ".");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
550 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
551 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
552 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
553 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
554 sprintf(tmp, " ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
555 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 strcat(current, tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
558
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 outline[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560 if (!strcmp(current, last))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562 if (!skipped_last)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
564 strcpy(outline, " ....:\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
566 skipped_last = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
568 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
569 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
570 sprintf(outline, " %.4d: %s\n", j * 16, current);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
571 skipped_last = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
572 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
573 printf("%s", outline);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
574 strcpy(last, current);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 if (skipped_last)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
578 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
579 printf("%s", outline);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
580 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 printf("\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
584
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 static int yahoo_socket_connect(struct yahoo_context *ctx, char *host,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 int port)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
587 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
588 struct sockaddr_in serv_addr;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
589 struct hostent *server;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
590 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
591 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
593 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
594 "[libyahoo] yahoo_socket_connect - starting [%s:%d]\n", host, port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 if (!ctx || !host || !port)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 "[libyahoo] yahoo_socket_connect - nulls\n");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
600 return -1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
603 if (!(server = gethostbyname(host)))
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
605 printf("[libyahoo] failed to look up server (%s:%d): %s\n", host, port, hstrerror(h_errno));
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
606 return -1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
609 if ((servfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
610 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
611 return -1;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
612 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
613
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
614 memset(&serv_addr, 0, sizeof(serv_addr));
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 serv_addr.sin_family = AF_INET;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
616 memcpy(&serv_addr.sin_addr.s_addr, server->h_addr, server->h_length);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
617 serv_addr.sin_port = htons(port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
618
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
619 /* XXX should put timeouts on the connect()'s -mid */
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
620 res = -1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
621 if (ctx->connect_mode == YAHOO_CONNECT_SOCKS4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
622 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
623 #if defined(WITH_SOCKS4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
624 res =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
625 Rconnect(servfd, (struct sockaddr *) &serv_addr,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 sizeof(serv_addr));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
627 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
628 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629 else if (ctx->connect_mode == YAHOO_CONNECT_SOCKS5)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
631 #if defined(WITH_SOCKS5)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 else if (ctx->connect_mode == YAHOO_CONNECT_NORMAL ||
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635 ctx->connect_mode == YAHOO_CONNECT_HTTP ||
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 res =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639 connect(servfd, (struct sockaddr *) &serv_addr,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640 sizeof(serv_addr));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
642 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
643 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
644 printf("[libyahoo] unhandled connect mode (%d).\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
645 ctx->connect_mode);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
646 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
647 return -1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
648 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
649
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650 if (res < 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
652 printf("[libyahoo] failed to connect to server (%s:%d): %s\n",
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
653 host, port, strerror(errno));
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654 close(servfd);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
655 return -1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
657
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
659 "[libyahoo] yahoo_socket_connect - finished\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 return servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
661 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662
1375
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
663 /*
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
664 * yahoo_urlencode(char *)
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
665 *
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
666 *
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
667 * 29/12/2000:
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
668 *
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
669 * function modified to accept only one arg.
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
670 * added code to reuse the buffer and check allocs.
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
671 *
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
672 * -- Hrishikesh Desai <hrishi@mediaibc.com>
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
673 *
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
674 */
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
675
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
676
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
677 static char *yahoo_urlencode(char *instr)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
678 {
1375
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
679 register int ipos, bpos; //input str pos., buffer pos.
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
680 static unsigned char *str=NULL;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
681 int len=strlen(instr);
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
682 int tmp;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
683
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
684 //attempt to reuse buffer
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
685 if(NULL==str)
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
686 str = (unsigned char *) malloc(3 * len + 1);
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
687 else
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
688 str = (unsigned char *) realloc(str,3 * len + 1);
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
689
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
690 //malloc, realloc failed ?
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
691 if(errno==ENOMEM)
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
692 {
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
693 perror("libyahoo[yahoo_urlencode]");
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
694 //return ref. to empty string, so's prog. or whatever wont crash
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
695 return "";
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
696 }
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
697
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
698 ipos=bpos=0;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
699
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
700 while(ipos<len)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
701 {
1375
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
702
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
703 //using inverted logic frm original code....
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
704 if (!isdigit((int) (instr[ipos]))
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
705 && !isalpha((int) instr[ipos]) && instr[ipos] != '_')
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
706 {
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
707 tmp=instr[ipos] / 16;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
708 str[bpos++]='%';
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
709 str[bpos++]=( (tmp < 10)?(tmp+'0'):(tmp+'A'-10));
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
710 tmp=instr[ipos] % 16;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
711 str[bpos++]=( (tmp < 10)?(tmp+'0'):(tmp+'A'-10));
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
712 }
1375
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
713 else
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
714 {
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
715 str[bpos++]=instr[ipos];
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
716 }
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
717
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
718 ipos++;
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
719 }
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
720
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
721 str[bpos] = '\0';
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
722
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
723 //free extra alloc'ed mem.
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
724 tmp=strlen(str);
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
725 str = (unsigned char *) realloc(str,tmp + 1);
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
726
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
727 return ( str);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
728 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
729
1375
e2f26e078f18 [gaim-migrate @ 1385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1135
diff changeset
730
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
731 static int yahoo_addtobuffer(struct yahoo_context *ctx, char *data,
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
732 int datalen)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
733 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
734 //yahoo_hexdump("yahoo_addtobuffer", data, datalen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
735
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
736 /* Check buffer, increase size if necessary */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
737 if (!ctx->io_buf
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
738 || ((ctx->io_buf_maxlen - ctx->io_buf_curlen) < (datalen + 100)))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
740 char *new_io_buf;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
741
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
742 if (datalen < 10240)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
743 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
744 ctx->io_buf_maxlen += 10240;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
745 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
746 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 ctx->io_buf_maxlen += datalen;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
750 if (!(new_io_buf = (char *) malloc(ctx->io_buf_maxlen)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
751 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753 if (ctx->io_buf)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755 memcpy(new_io_buf, ctx->io_buf, ctx->io_buf_curlen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 FREE(ctx->io_buf);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
758
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759 ctx->io_buf = new_io_buf;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
761
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762 memcpy(ctx->io_buf + ctx->io_buf_curlen, data, datalen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
763 ctx->io_buf_curlen += datalen;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
764
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
765 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
766 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
768 static int yahoo_tcp_readline(char *ptr, int maxlen, int fd)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770 int n, rc;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
771 char c;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
772
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
773 for (n = 1; n < maxlen; n++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
775 again:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
777 if ((rc = readall(fd, &c, 1)) == 1)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 *ptr++ = c;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780 if (c == '\n')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783 else if (rc == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 if (n == 1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 return (0); /* EOF, no data */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 break; /* EOF, w/ data */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
790 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
792 if (errno == EINTR)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
793 goto again;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
794 printf
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
795 ("Yahoo: Error reading from socket in yahoo_tcp_readline: %s.\n", strerror(errno));
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
796 return -1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 *ptr = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 return (n);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
805 * Published library interfaces
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
806 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 /* Initialize interface to yahoo library, sortof like a class object
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 creation routine. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 struct yahoo_context *yahoo_init(char *user, char *password,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811 struct yahoo_options *options)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 struct yahoo_context *tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815 if (!user || !password)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
816 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
817 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
818 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820 /* Allocate a new context */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
821 if (!(tmp = (struct yahoo_context *) calloc(1, sizeof(*tmp))))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
822 return NULL;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 /* Fill in any available info */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
825 if (!(tmp->user = strdup(user))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
826 yahoo_free_context(tmp);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
827 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
828 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
829 if (!(tmp->password = strdup(password))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
830 yahoo_free_context(tmp);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
831 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
832 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
833 if (options->proxy_host)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
834 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
835 if (!(tmp->proxy_host = strdup(options->proxy_host))) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
836 yahoo_free_context(tmp);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
837 return NULL;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
838 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
839 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
840 tmp->proxy_port = options->proxy_port;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
841 tmp->connect_mode = options->connect_mode;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
842
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
843 #if defined(WITH_SOCKS4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
844 if (connect_mode == YAHOO_CONNECT_SOCKS4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
845 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
846 static int did_socks_init = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
847
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
848 if (did_socks_init == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
849 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
850 SOCKSinit("libyahoo");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
851 did_socks_init = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
852 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
853 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
854 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
855
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
856 /* Fetch the cookies */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
857 if (!yahoo_fetchcookies(tmp))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
858 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
859 yahoo_free_context(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
860 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
861 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
862
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
863 return tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
864 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
865
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
866 /* Free a yahoo context */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
867 void yahoo_free_context(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
868 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
869 FREE(ctx->user);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
870 FREE(ctx->password);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
871 FREE(ctx->proxy_host);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
872 FREE(ctx->io_buf);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
873 FREE(ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
874 FREE(ctx->login_cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
875 FREE(ctx->login_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
876
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
877 yahoo_free_buddies(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
878 yahoo_free_identities(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
879
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
880 FREE(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
881 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
882
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
883 /* Turn a status code into it's corresponding string */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
884 char *yahoo_get_status_string(int statuscode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
885 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
886 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
887
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
888 for (i = 0; yahoo_status_codes[i].label; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
889 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
890 if (yahoo_status_codes[i].id == statuscode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
891 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
892 return yahoo_status_codes[i].label;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
893 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
894 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
895 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
896 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
897
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
898 /* Turn a status code into it's corresponding string */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
899 char *yahoo_get_status_append(int statuscode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
900 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
901 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
902
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
903 for (i = 0; yahoo_status_append[i].label; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
904 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
905 if (yahoo_status_append[i].id == statuscode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
906 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
907 return yahoo_status_append[i].label;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
908 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
909 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
910 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
911 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
912
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
913 /* Turn a service code into it's corresponding string */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
914 char *yahoo_get_service_string(int servicecode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
915 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
916 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
917 char *name = "Unknown Service";
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
918 static char tmp[50];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
919
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
920 for (i = 0; yahoo_service_codes[i].label; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
921 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
922 if (yahoo_service_codes[i].id == servicecode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
923 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
924 name = yahoo_service_codes[i].label;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
925 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
926 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
928
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
929 snprintf(tmp, 50, "(%d) %s", servicecode, name);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
930 return tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
931 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
932
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
933 /* Return a malloc()'d copy of the users cookie */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
934 int yahoo_fetchcookies(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
935 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
936 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
938 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
939 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
940 char *tmpstr;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
941
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 if (!ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
946
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
947 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: starting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
948
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
949 /* Check for cached cookie */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
950 if (ctx->cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
951 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
952 FREE(ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
953 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
954 if (ctx->login_cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
955 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
956 FREE(ctx->login_cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
957 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
958
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
959 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
961 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
963 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
964 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
965 servfd = yahoo_socket_connect(ctx, YAHOO_AUTH_HOST, YAHOO_AUTH_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
966 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
967 if (servfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
968 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 printf("[libyahoo] failed to connect to pager auth server.\n");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
970 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
972
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
973 strcpy(buffer, "GET ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
975 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
976 strcat(buffer, "http://" YAHOO_AUTH_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978 strcat(buffer, "/config/ncclogin?login=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
979 if (ctx->login_id)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
981 strcat(buffer, yahoo_urlencode(ctx->login_id));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
982 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
983 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
984 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985 strcat(buffer, yahoo_urlencode(ctx->user));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
986 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
987 strcat(buffer, "&passwd=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
988 strcat(buffer, yahoo_urlencode(ctx->password));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
989 strcat(buffer, "&n=1 HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
990 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
991 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
993
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
994 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
995 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
996 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
997 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
998 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
999
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1000 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1001 "[libyahoo] yahoo_fetchcookies: writing buffer '%s'\n", buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1003 ctx->cookie = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1004 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 /* strip out any non-alphas */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007 for (i = 0; i < strlen(buffer); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009 if (!isprint((int) buffer[i]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1010 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1011 buffer[i] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1012 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1013 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1014
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1015 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1016 "[libyahoo] yahoo_fetchcookies: read buffer '%s'\n", buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1017
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1018 if (!strcasecmp(buffer, "ERROR: Invalid NCC Login"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1019 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1020 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1021 "[libyahoo] yahoo_fetchcookies: password was invalid\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1022 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1023 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1024
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1025 if (!strncasecmp(buffer, "Set-Cookie: Y=", 14))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1026 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1027 FREE(ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1028 ctx->cookie = strdup(buffer + 12);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 tmpstr = strchr(ctx->cookie, ';');
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031 if (tmpstr)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1032 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1033 *tmpstr = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1034 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1035 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1036 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038 "[libyahoo] yahoo_fetchcookies: closing server connection\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1039 close(servfd);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1040 servfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1041 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1042 "[libyahoo] yahoo_fetchcookies: closed server connection\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1044 if (ctx->cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 tmpstr = strstr(ctx->cookie, "n=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047 if (tmpstr)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1048 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 ctx->login_cookie = strdup(tmpstr + 2);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1051
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1052 tmpstr = strchr(ctx->login_cookie, '&');
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1053 if (tmpstr)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1054 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1055 *tmpstr = '\0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1056 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 if (ctx->cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1060 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1061 "[libyahoo] yahoo_fetchcookies: cookie (%s)\n", ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 if (ctx->login_cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1063 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 "[libyahoo] yahoo_fetchcookies: login cookie (%s)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1065 ctx->login_cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1066
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: done\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1068
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1069 return 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 /* Add a buddy to your buddy list */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073 int yahoo_add_buddy(struct yahoo_context *ctx, char *addid,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074 char *active_id, char *group, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1076 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1077 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 if (!ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1080 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1081 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1082 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1083
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1084 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1087 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1088 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1089 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1090 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1091 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1092 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1093 "[libyahoo] yahoo_add_buddy - connecting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1094 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1095 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1096 if (servfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1097 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1098 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1099 "[libyahoo] yahoo_add_buddy: failed to connect\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1100 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1101 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1102
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1103 strcpy(buffer, "GET ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1104 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1105 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1106 strcat(buffer, "http://" YAHOO_DATA_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1107 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1108 strcat(buffer, "/config/set_buddygrp?.bg=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1109 strcat(buffer, yahoo_urlencode(group));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1110 strcat(buffer, "&.src=bl&.cmd=a&.bdl=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1111 strcat(buffer, yahoo_urlencode(addid));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1112 strcat(buffer, "&.id=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1113 strcat(buffer, yahoo_urlencode(active_id));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1114 strcat(buffer, "&.l=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1115 strcat(buffer, yahoo_urlencode(ctx->user));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1116 strcat(buffer, "&.amsg=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1117 strcat(buffer, yahoo_urlencode(msg));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1118 strcat(buffer, " HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1119
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1120 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1121 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1122 strcat(buffer, "Cookie: ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1123 strcat(buffer, ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1124 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1125 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1126
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1127 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1128 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1129 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1130 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1131 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1132
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1133 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1134 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1135 /* just dump the output, I don't care about errors at the moment */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1136 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1137 close(servfd);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1138 servfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1139
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1140 /* indicate success for now with 0 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy: finished\n");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1142 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1143 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1144
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1145 /* Remove a buddy from your buddy list */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1146 int yahoo_remove_buddy(struct yahoo_context *ctx, char *addid,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1147 char *active_id, char *group, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1148 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1149 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1150 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1151
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1152 if (!ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1153 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1154 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1155 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1156
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1157 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1158 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1160 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy - connecting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1166 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1167 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1168 if (servfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1169 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1170 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 "[libyahoo] yahoo_add_buddy: failed to connect\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1172 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1174
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1175 strcpy(buffer, "GET ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1177 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1178 strcat(buffer, "http://" YAHOO_DATA_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1179 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1180 strcat(buffer, "/config/set_buddygrp?.bg=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1181 strcat(buffer, yahoo_urlencode(group));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1182 strcat(buffer, "&.src=bl&.cmd=d&.bdl=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 strcat(buffer, yahoo_urlencode(addid));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184 strcat(buffer, "&.id=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 strcat(buffer, yahoo_urlencode(active_id));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1186 strcat(buffer, "&.l=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 strcat(buffer, yahoo_urlencode(ctx->user));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188 strcat(buffer, "&.amsg=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1189 strcat(buffer, yahoo_urlencode(msg));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1190 strcat(buffer, " HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 strcat(buffer, "Cookie: ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1195 strcat(buffer, ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1199 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1200 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1201 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1202 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1203 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1204
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1207 /* just dump the output, I don't care about errors at the moment */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1208 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209 close(servfd);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210 servfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1211
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1212 /* indicate success for now with 1 */
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1213 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1214 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1215
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216 /* Retrieve the configuration from the server */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1217 int yahoo_get_config(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1218 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1219 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1220 int i, j;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1221 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222 int commas;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1223 int in_section;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 struct yahoo_buddy **buddylist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225 int buddycnt = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1226 int nextbuddy = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 /* Check for cached cookie */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 if (!ctx || !ctx->cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: starting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1241 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1242 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1244 if (servfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1246 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1247 "[libyahoo] yahoo_get_config: failed to connect\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1248 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1249 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1250
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251 strcpy(buffer, "GET ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 strcat(buffer, "http://" YAHOO_DATA_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1256 strcat(buffer, "/config/get_buddylist?.src=bl HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1257 strcat(buffer, "Cookie: ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1258 strcat(buffer, ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1262 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1263 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1264 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1265 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1266 }
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1267
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: sending '%s'\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1269 buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271 in_section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 /* strip out any non-alphas */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275 for (i = 0; i < strlen(buffer); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277 if (!isprint((int) buffer[i]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 for (j = i; j < strlen(buffer); j++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1280 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 buffer[j] = buffer[j + 1];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1282 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1284 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287 "[libyahoo] yahoo_get_config: read '%s'\n", buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1289 if (!strcasecmp(buffer, "BEGIN IDENTITIES"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1290 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 in_section = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 else if (!strcasecmp(buffer, "END IDENTITIES"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 in_section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 else if (!strcasecmp(buffer, "BEGIN BUDDYLIST"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299 in_section = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 else if (!strcasecmp(buffer, "END BUDDYLIST"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303 in_section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 else if (in_section == 1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 char *tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 /* count the commas */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 commas = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 for (i = 0; i < strlen(buffer); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313 if (buffer[i] == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 commas++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 /* make sure we've gotten rid of any previous identities array */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320 yahoo_free_identities(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1321
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1322 /* allocate the array to hold the list of identities */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 ctx->identities = (char **) calloc(commas + 2, sizeof(char *));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1324
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 /* Parse through the list and get all the entries */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 tmp = strtok(buffer, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 while (tmp)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 "[libyahoo] yahoo_get_config: retrieved "
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1332 "identity '%s'\n", tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1333 ctx->identities[i++] = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1334 tmp = strtok(NULL, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1336 ctx->identities[i] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338 else if (in_section == 2)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1339 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1340 char *group;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1341 char *tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1342 struct yahoo_buddy **tmp_buddylist;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1343 struct yahoo_buddy *tmpbuddy;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1344 int tmp_buddycnt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1345
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1346 /* count the buddies on this line */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1347 tmp_buddycnt = buddycnt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1348 for (i = 0; i < strlen(buffer); i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1349 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1350 if (buffer[i] == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1352 buddycnt++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1353 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1354 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1355 buddycnt++; /* always one more than comma count */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1356
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1357 /* allocate the array to hold the list of buddy */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 tmp_buddylist = (struct yahoo_buddy **)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359 malloc(sizeof(struct yahoo_buddy *) * (buddycnt + 1));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1361 /* Free and copy the old one if necessary */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1362 if (buddylist)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1363 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1364 memcpy(tmp_buddylist, buddylist,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1365
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1366 (tmp_buddycnt + 1) * sizeof(struct yahoo_buddy *));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1367
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1368 FREE(buddylist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1369 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1370 buddylist = tmp_buddylist;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1371
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1372 /* Parse through the list and get all the entries */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1373 tmp = strtok(buffer, ",:");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1374 group = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1375 while (tmp)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1376 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1377 if (tmp == buffer) /* group name */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1378 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1379 group = tmp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1380 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1381 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1382 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1383 tmpbuddy = (struct yahoo_buddy *)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1384
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1385 malloc(sizeof(struct yahoo_buddy));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1386
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1387 tmpbuddy->id = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1388 tmpbuddy->group = strdup(group);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1389 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1390 "[libyahoo] yahoo_get_config: retrieved buddy '%s:%s'\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1391 group, tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1392 buddylist[nextbuddy++] = tmpbuddy;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1393 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1394 tmp = strtok(NULL, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1395 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1396 buddylist[nextbuddy] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1397 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1398 else if (!strncasecmp(buffer, "Mail=", strlen("Mail=")))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1399 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1400 ctx->mail = atoi(buffer + strlen("Mail="));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1401 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1402 "[libyahoo] yahoo_get_config: retrieved mail flag '%d'\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 ctx->mail);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1404 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 else if (!strncasecmp(buffer, "Login=", strlen("Login=")))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1407 FREE(ctx->login_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1408 ctx->login_id = strdup(buffer + strlen("Login="));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1409 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1410 "[libyahoo] yahoo_get_config: retrieved login id '%s'\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1411 ctx->login_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1413 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1414 close(servfd);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1415 servfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1416
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1417 yahoo_free_buddies(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1418 ctx->buddies = buddylist;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1419
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1420 /* fill in a bogus login_in, just in case */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1421 if (!ctx->login_id)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1423 ctx->login_id = strdup(ctx->user);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1424 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1425
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1426 /* refetch the cookie if the login_id is different so that
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1427 it will have the correct info in it */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1428 if (strcmp(ctx->login_id, ctx->user))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1429 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1430 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1431 "[libyahoo] yahoo_get_config - refetching cookies\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1432 yahoo_fetchcookies(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1433 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1434
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1435 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config - finished\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1436
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1437 return 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1438 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1439
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1440 /* Log in, optionally activating other secondary identities */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1441 int yahoo_cmd_logon(struct yahoo_context *ctx, unsigned int initial_status)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1442 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1443 char login_string[5000]; /* need to change to malloc ASAP */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1444 char *tmpid;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1445 char **identities = ctx->identities;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1446 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1447
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448 if (!ctx || !ctx->login_cookie)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1449 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1451 "[libyahoo] yahoo_cmd_logon: logon called without "
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1452 "context and/or cookie.\n");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1453 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1455
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456 strcpy(login_string, ctx->login_cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1457 /* testing with new logon code */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1458 // strcpy(login_string, "$1$_2S43d5f$XXXXXXXXWtRKNclLWyy8C.");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1459
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460 login_string[strlen(login_string) + 1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1461 login_string[strlen(login_string)] = 1; /* control-A */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1462
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1463 strcat(login_string, ctx->user);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1464
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1465 /* Send all identities */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1466 if (identities)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1467 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1468 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1469 tmpid = identities[i];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1470 while (tmpid)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1471 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1472 if (strcasecmp(tmpid, ctx->user))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1473 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1474 strcat(login_string, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1475 strcat(login_string, tmpid);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1476 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1477 tmpid = identities[i++];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1478 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1479 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1480
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1481 if(!yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGON, ctx->user, login_string,
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1482 initial_status))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1483 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1484
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1485 /* something that the windows one sends, not sure what it is */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1486 #if 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1487 login_string[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1488 strcat(login_string, "C=0\002");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1489 strcat(login_string, "F=0,P=0,H=0,S=0,W=0,O=0\002");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1490 strcat(login_string, "M=0,P=0,C=0,S=0");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1491 yahoo_sendcmd(ctx, YAHOO_SERVICE_PASSTHROUGH2, ctx->user, login_string,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1492 0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1493 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1494
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1495 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1496 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1497
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1498 int yahoo_connect(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1499 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1500 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1501
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1502 res = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1503 ctx->sockfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1504
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1505 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - starting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1506
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1507 switch (ctx->connect_mode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1508 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1509 case YAHOO_CONNECT_SOCKS4:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1510 case YAHOO_CONNECT_SOCKS5:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1511 case YAHOO_CONNECT_NORMAL:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1512 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1513 "[libyahoo] yahoo_connect - establishing socket connection\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1514 ctx->sockfd =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1515 yahoo_socket_connect(ctx, YAHOO_PAGER_HOST, YAHOO_PAGER_PORT);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1516 if (ctx->sockfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1517 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1518 printf("[libyahoo] couldn't connect to pager host\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1519 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1520 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1521 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1522
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1523 case YAHOO_CONNECT_HTTP:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1524 case YAHOO_CONNECT_HTTPPROXY:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1525 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1526 "[libyahoo] yahoo_connect - no connect for HTTP\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1527 /* no pager connection will be established for this */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1528 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1529
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1530 default:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1531 printf("[libyahoo] unhandled connect mode (%d)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1532 ctx->connect_mode);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1533 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1534
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1535 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - finished\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1536 return (1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1537 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1538
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1539 /* Send a packet to the server via http connection method */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1540 /* at moment only handles regular http connection, once I have that
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1541 working, this code needs to also do http proxy connections as well */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1542 int yahoo_sendcmd_http(struct yahoo_context *ctx, struct yahoo_rawpacket *pkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1543 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1544 int sockfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1545 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1546 char tmpbuf[1000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1547 int size;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1548 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1549
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1550 if (!ctx || !pkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1551 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1552 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1553 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1554
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1555 size = YAHOO_PACKET_HEADER_SIZE + strlen(pkt->content) + 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1556
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1557 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1558 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1559 sockfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1560 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1561 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1562 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1563 sockfd = yahoo_socket_connect(ctx, YAHOO_PAGER_HTTP_HOST,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1564 YAHOO_PAGER_HTTP_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1565 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1566 if (sockfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1567 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1568 printf("[libyahoo] failed to connect to pager http server.\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1569 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1570 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1571
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1572 strcpy(buffer, "POST ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1573 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1574 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1575 strcat(buffer, "http://" YAHOO_PAGER_HTTP_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1576 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1577 strcat(buffer, "/notify HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1578
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1579 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1580 strcat(buffer, "Host: " YAHOO_PAGER_HTTP_HOST "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1581 snprintf(tmpbuf, 1000, "Content-Length: %d\r\n", size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1582 strcat(buffer, tmpbuf);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1583
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1584 strcat(buffer, "Pragma: No-Cache\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1585
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1586 strcat(buffer, "Cookie: ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1587 strcat(buffer, ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1588 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1589 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1590
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1591 if ((writeall(sockfd, buffer, strlen(buffer)) < strlen(buffer)) ||
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1592 (writeall(sockfd, pkt, size) < size) ||
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1593 (writeall(sockfd, "\r\n", 2) < 2))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1594 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1595 close(sockfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1596 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1597 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1598
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1599 /* now we need to read the results */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1600 /* I'm taking the cheat approach and just dumping them onto the
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1601 buffer, headers and all, the _skip_to_YHOO_ code will handle it
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1602 for now */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1603
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1604 while ((res = readall(sockfd, buffer, sizeof(buffer))) > 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1605 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1606 if (res == -1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1607 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1608 printf("[libyahoo] Error reading data from server.\n");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1609 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1610 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1611 if (!yahoo_addtobuffer(ctx, buffer, res))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1612 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1613 close(sockfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1614 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1615 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1616 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1617 close(sockfd);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1618
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1619 return (1);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1620 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1621
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1622 /* Send a packet to the server, called by all routines that want to issue
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1623 a command. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1624 int yahoo_sendcmd(struct yahoo_context *ctx, int service, char *active_nick,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1625 char *content, unsigned int msgtype)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1626 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1627 int size;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1628 struct yahoo_rawpacket *pkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1629 int maxcontentsize;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1630
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1631 /* why the )&*@#$( did they hardwire the packet size that gets sent
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1632 when the size of the packet is included in what is sent, bizarre */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1633 size = 4 * 256 + YAHOO_PACKET_HEADER_SIZE;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1634 if (!(pkt = (struct yahoo_rawpacket *) calloc(1, size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1635 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1636
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1637 /* figure out max content length, including trailing null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1638 maxcontentsize = size - sizeof(struct yahoo_rawpacket);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1639
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1640 /* Build the packet */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1641 strcpy(pkt->version, YAHOO_PROTOCOL_HEADER);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1642 yahoo_storeint(pkt->len, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1643 yahoo_storeint(pkt->service, service);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1644
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1645 /* not sure if this is valid with YPNS1.4 or if it needs 2.0 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1646 yahoo_storeint(pkt->msgtype, msgtype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1647
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1648 /* Not sure, but might as well send for regular connections as well. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1649 yahoo_storeint(pkt->magic_id, ctx->magic_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1650 strcpy(pkt->nick1, ctx->login_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1651 strcpy(pkt->nick2, active_nick);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1652 strncpy(pkt->content, content, maxcontentsize);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1653
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1654 // yahoo_hexdump("send_cmd", (char *) pkt, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1655
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1656 switch (ctx->connect_mode)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1657 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1658 case YAHOO_CONNECT_SOCKS4:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1659 case YAHOO_CONNECT_SOCKS5:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1660 case YAHOO_CONNECT_NORMAL:
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1661 if (writeall(ctx->sockfd, pkt, size) < size)
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1662 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1663 printf("sendcmd: writeall failed\n");
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1664 close(ctx->sockfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1665 FREE(pkt);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1666 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1667 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1668 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1669 case YAHOO_CONNECT_HTTP:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1670 case YAHOO_CONNECT_HTTPPROXY:
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1671 if (!yahoo_sendcmd_http(ctx, pkt))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1672 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1673 printf("sendcmd_http failed\n");
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1674 FREE(pkt);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1675 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1676 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1677 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1678 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1679
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1680 FREE(pkt);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1681 return (1);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1682 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1683
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1684 int yahoo_cmd_ping(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1685 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1686 return yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1688
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1689 int yahoo_cmd_idle(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1690 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1691 return yahoo_sendcmd(ctx, YAHOO_SERVICE_IDLE, ctx->user, "", 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1692 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1693
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1694 int yahoo_cmd_sendfile(struct yahoo_context *ctx, char *active_user,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1695 char *touser, char *msg, char *filename)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1696 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1697 yahoo_dbg_Print("libyahoo", "yahoo_cmd_sendfile not implemented yet!");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1698 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1699 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1700
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1701 int yahoo_cmd_msg(struct yahoo_context *ctx, char *active_user,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1702 char *touser, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1703 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1704 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1705
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1706 if (!(content = (char *) malloc(strlen(touser) + strlen(msg) + 5)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1707 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1708
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1709 if (strlen(touser))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1710 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1711 sprintf(content, "%s,%s", touser, msg);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1712 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1713 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1714 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1715 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1716 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1717 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1718
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1719 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1720 return (1);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1721 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1722
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1723 int yahoo_cmd_msg_offline(struct yahoo_context *ctx, char *active_user,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1724 char *touser, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1725 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1726 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1727
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1728 if (!(content = (char *) malloc(strlen(touser) + strlen(msg) + 5)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1729 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1730
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1731 if (strlen(touser))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1732 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1733 sprintf(content, "%s,%s", touser, msg);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1734 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user,
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1735 content, YAHOO_MSGTYPE_KNOWN_USER))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1736 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1737 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1738 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1739 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1740 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1741
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1742 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1743 return (1);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1745
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1746 /* appended the " " so that won't trigger yahoo bug - hack for the moment */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1747 int yahoo_cmd_set_away_mode(struct yahoo_context *ctx, int status, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1748 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1749 char statusstring[500];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1750
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1751 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1752 "[libyahoo] yahoo_cmd_set_away_mode: set status (%d), msg(%s)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1753 status, yahoo_dbg_NullCheck(msg));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1754
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1755 if (status == YAHOO_STATUS_CUSTOM)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1756 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1757 if (msg && msg[0] != 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1758 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1759 snprintf(statusstring, 500, "%d%c%s", status, 1, msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1760 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1761 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1762 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1763 snprintf(statusstring, 500, "%d%c---", status, 1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1764 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1765 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1766 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1767 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1768 snprintf(statusstring, 500, "%d", status);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1769 }
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1770 return yahoo_sendcmd(ctx, YAHOO_SERVICE_ISAWAY, ctx->user, statusstring, 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1772
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1773 int yahoo_cmd_set_back_mode(struct yahoo_context *ctx, int status, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1774 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1775 char statusstring[500];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1776
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1777 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1778 "[libyahoo] yahoo_cmd_set_back_mode: set status (%d), msg(%s)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1779 status, yahoo_dbg_NullCheck(msg));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1780
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1781 snprintf(statusstring, 500, "%d%c%s ", status, 1, msg ? msg : "");
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1782 return yahoo_sendcmd(ctx, YAHOO_SERVICE_ISBACK, ctx->user, statusstring, 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1783 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1784
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1785 int yahoo_cmd_activate_id(struct yahoo_context *ctx, char *newid)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1786 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1787 if (strlen(newid))
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1788 return yahoo_sendcmd(ctx, YAHOO_SERVICE_IDACT, newid, newid, 0);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1789 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1790 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1791
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1792 int yahoo_cmd_user_status(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1793 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1794 return yahoo_sendcmd(ctx, YAHOO_SERVICE_USERSTAT, ctx->user, "", 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1795 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1796
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1797 int yahoo_cmd_logoff(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1798 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1799 return yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGOFF, ctx->user, ctx->user, 0);
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1800 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1801
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1802 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1803
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1804 yahoo_cmd_start_conf()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1805
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1806 Starts a conference. (You create the conference)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1807
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1808 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1809 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1810 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1811 You create this id to start the conference, but pass it
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1812 along after that.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1813 char **userlist == Users to invite. Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1814 car *msg == Invitiation message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1815 int type == 0 - normal, 1 - voice (not supported yet)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1816
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1817 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1818 id^invited-users^msg^0or1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1819 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1820 int yahoo_cmd_start_conf(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1821 char **userlist, char *msg, int type)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1822 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1823 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1825 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1826 int cont_len = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1827
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1828 #ifdef ENABLE_LIBYAHOO_DEBUG
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1829 char *unraw_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1830 #endif /* def ENABLE_LIBYAHOO_DEBUG */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1831
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1832 int size = strlen(conf_id) + strlen(msg) + 8 + strlen(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1833
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1834 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1835 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1836 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1837
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1838 cont_len = snprintf(content,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1839 size - 1,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1840 "%s%c%s%c%s%c%d",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1841 conf_id, ctrlb, new_userlist, ctrlb, msg, ctrlb, type);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1842
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1843 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1844 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1845 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1846 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_start_conf: %s\n",
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1847 unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1848 FREE(unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1849 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1850 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1851 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFINVITE, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1852 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1853 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1854 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1855 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1856 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1857
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1858 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1859 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1860 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1861 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1862
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1863 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1864 yahoo_cmd_conf_logon()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1865
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1866 Reply to a conference invitation, logs you into conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1867
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1868 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1869 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1870 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1871 This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1872 char *host == The person that sent you the invitation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1873 char **userlist == Everyone else invited. This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1874 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1875
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1876 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1877 id^all-invited-users-and-host
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1878
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1879 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1880 int yahoo_cmd_conf_logon(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1881 char *host, char **userlist)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1882 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1883 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1884 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1885 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1886 int cont_len = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1887
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1888 #ifdef ENABLE_LIBYAHOO_DEBUG
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1889 char *unraw_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1890 #endif /* def ENABLE_LIBYAHOO_DEBUG */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1891
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1892 int size = strlen(conf_id) + strlen(host) + 8 + strlen(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1893
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1894 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1895 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1896 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1897
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1898 cont_len =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1899 sprintf(content, "%s%c%s,%s", conf_id, ctrlb, host, new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1900
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1901 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1902 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1903 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1904 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logon: %s\n",
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1905 unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1906 FREE(unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1907 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1908 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1909 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGON, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1910 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1911 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1912 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1913 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1914 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1915
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1916 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1917 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1918 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1919 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1920
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1921 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1922
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1923 yahoo_cmd_decline_conf()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1924
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1925 Reply to a conference invitation, decline offer.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1926
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1927 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1928 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1929 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1930 This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1931 char *host == The person that sent you the invitation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1932 char **userlist == Everyone else invited. This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1933 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1934 (Null if replying to a conference additional invite )
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1935 char *msg == Reason for declining.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1936
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1937 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1938 id^all-invited-users-and-host^msg
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1939
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1940 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1941 int yahoo_cmd_decline_conf(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1942 char *host, char **userlist, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1943 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1944 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1945 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1946 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1947
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1948 int size =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1949 strlen(conf_id) + strlen(host) + strlen(msg) + 8 +
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1950 strlen(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1951
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1952 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1953 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1954 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1955
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1956 sprintf(content, "%s%c%s,%s%c%s", conf_id, ctrlb, host, new_userlist,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1957 ctrlb, msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1958
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1959 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_decline_conf: %s\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1960 content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1961 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFDECLINE, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1962 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1963 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1964 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1965 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1966 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1967
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1968 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1969 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
1970 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1971 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1972
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1973 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1974
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1975 yahoo_cmd_conf_logoff()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1976
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1977 Logoff of a conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1978
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1979 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1980 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1981 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1982 This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1983 char **userlist == Everyone in conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1984 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1985
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1986 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1987 id^all-invited-users
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1988
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1989 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1990
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1991 int yahoo_cmd_conf_logoff(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1992 char **userlist)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1993 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1994 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1995 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1996 int cont_len = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1997
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1998 #ifdef ENABLE_LIBYAHOO_DEBUG
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1999 char *unraw_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2000 #endif /* def ENABLE_LIBYAHOO_DEBUG */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2001 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2002
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2003 int size = strlen(conf_id) + strlen(new_userlist) + 8;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2004
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2005 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2006 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2007 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2008
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2009 cont_len =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2010 snprintf(content, size, "%s%c%s", conf_id, ctrlb, new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2011 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2012 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2013 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2014 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logoff: %s\n",
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2015 unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2016 FREE(unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2017 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2018 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2019 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGOFF, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2020 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2021 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2022 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2023 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2024 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2025
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2026 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2027 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2028 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2029 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2030
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2031 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2032
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2033 yahoo_cmd_conf_invite()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2034
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2035 Invite another user to an already running conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2036
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2037 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2038 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2039 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2040 This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2041 char *invited_user == The person being invited to conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2042 char **userlist == Everyone else in conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2043 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2044 char *msg == Invitation message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2045
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2046 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2047 id^invited-user^who-else-in-conf^who-else-in-conf^msg^0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2048
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2049 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2050
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2051 int yahoo_cmd_conf_invite(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2052 char **userlist, char *invited_user, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2053 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2054 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2055 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2056 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2057
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2058 int size = strlen(conf_id) + strlen(invited_user)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2059 + (2 * strlen(new_userlist)) + strlen(msg) + 7;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2060
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2061 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2062 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2063 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2064
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2065 sprintf(content, "%s%c%s%c%s%c%s%c%s%c0", conf_id, ctrlb,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2066 invited_user, ctrlb, new_userlist, ctrlb,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2067 new_userlist, ctrlb, msg, ctrlb);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2068 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_invite: %s\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2069 content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2070 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFADDINVITE, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2071 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2072 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2073 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2074 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2075 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2076
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2077 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2078 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2079 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2080 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2081
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2082 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2083
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2084 yahoo_cmd_conf_msg()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2085
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2086 Send a message to everyone in conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2087
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2088 Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2089 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2090 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2091 This comes from the invitiation.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2092 char **userlist == Everyone in conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2093 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2094 char *msg == Message to send.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2095
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2096 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2097 id^all-invited-users^msg
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2098
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2099 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2100 int yahoo_cmd_conf_msg(struct yahoo_context *ctx, char *conf_id,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2101 char **userlist, char *msg)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2102 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2103 char ctrlb = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2104 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2105 int cont_len = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2106
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2107 #ifdef ENABLE_LIBYAHOO_DEBUG
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2108 char *unraw_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2109 #endif /* def ENABLE_LIBYAHOO_DEBUG */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2110 char *new_userlist = yahoo_array2list(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2111
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2112 int size = strlen(conf_id) + strlen(new_userlist) + strlen(msg) + 8;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2113
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2114 if (!(content = (char *) malloc(size)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2115 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2116 memset(content, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2117
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2118 cont_len =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2119 snprintf(content, size, "%s%c%s%c%s", conf_id, ctrlb, new_userlist,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2120 ctrlb, msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2121 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2122 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2123 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2124 yahoo_dbg_Print("libyahoo", "yahoo_cmd_conf_msg: %s\n", unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2125 FREE(unraw_msg);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2126 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2127 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2128 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFMSG, ctx->user, content, 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2129 {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2130 FREE(new_userlist);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2131 FREE(content);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2132 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2133 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2134
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2135 FREE(new_userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2136 FREE(content);
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2137 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2138 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2139
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2140 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2141 * Free the rawpacket structure - primarily a placeholder
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2142 * since all static elements at the moment
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2143 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2144 void yahoo_free_rawpacket(struct yahoo_rawpacket *pkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2145 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2146 FREE(pkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2148
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2149 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2150 * Free entire packet structure including string elements
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2151 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2152 void yahoo_free_packet(struct yahoo_packet *pkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2153 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2154 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2155
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2156 if (pkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2157 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2158 FREE(pkt->real_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2159 FREE(pkt->active_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2160 FREE(pkt->conf_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2161 FREE(pkt->conf_host);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2162 FREE(pkt->conf_user);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2163 FREE(pkt->conf_msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2164 FREE(pkt->cal_url);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2165 FREE(pkt->cal_timestamp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2166 FREE(pkt->cal_title);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2167 FREE(pkt->cal_description);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2168 FREE(pkt->chat_invite_content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2169 FREE(pkt->msg_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2170 FREE(pkt->msg_timestamp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2171 FREE(pkt->msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2172 FREE(pkt->file_from);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2173 FREE(pkt->file_flag);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2174 FREE(pkt->file_url);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2175 FREE(pkt->file_description);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2176 FREE(pkt->group_old);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2177 FREE(pkt->group_new);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2178 if (pkt->idstatus)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2179 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2180 for (i = 0; i < pkt->idstatus_count; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2181 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2182 yahoo_free_idstatus(pkt->idstatus[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2183 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2184 free(pkt->idstatus);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2185 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2186 free(pkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2187 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2188 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2189
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2190 void yahoo_free_idstatus(struct yahoo_idstatus *idstatus)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2191 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2192 if (!idstatus)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2193 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2194
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2195 FREE(idstatus->id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2196 FREE(idstatus->connection_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2197 FREE(idstatus->status_msg);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2198 FREE(idstatus);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2199 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2200
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2201 struct yahoo_packet *yahoo_parsepacket(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2202 struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2203 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2204 struct yahoo_packet *pkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2205
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2206 /* If no valid inpkt passed, return */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2207 if (!inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2208 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2209
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2210 /* Allocate the packet structure, zeroed out */
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2211 if (!(pkt = (struct yahoo_packet *) calloc(sizeof(*pkt), 1)))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
2212 return NULL;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2213
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2214 /* Pull out the standard data */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2215 pkt->service = yahoo_makeint(inpkt->service);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2216 pkt->connection_id = yahoo_makeint(inpkt->connection_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2217 pkt->real_id = strdup(inpkt->nick1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2218 pkt->active_id = strdup(inpkt->nick2);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2219
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2220 pkt->magic_id = yahoo_makeint(inpkt->magic_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2221 pkt->unknown1 = yahoo_makeint(inpkt->unknown1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2222 pkt->msgtype = yahoo_makeint(inpkt->msgtype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2223
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2224 /* doing this seems like a cleaner approach, but am not sure if it is
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2225 a valid one */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2226 if (pkt->magic_id != 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2227 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2228 ctx->magic_id = pkt->magic_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2229 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2230 if (pkt->connection_id != 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2231 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2232 ctx->connection_id = pkt->connection_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2233 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2234
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2235 /* Call a particular parse routine to pull out the content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2236 switch (pkt->service)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2237 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2238 case YAHOO_SERVICE_LOGON:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2239 case YAHOO_SERVICE_LOGOFF:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2240 case YAHOO_SERVICE_ISAWAY:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2241 case YAHOO_SERVICE_ISBACK:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2242 case YAHOO_SERVICE_USERSTAT:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2243 case YAHOO_SERVICE_CHATLOGON:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2244 case YAHOO_SERVICE_CHATLOGOFF:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2245 case YAHOO_SERVICE_GAMELOGON:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2246 case YAHOO_SERVICE_GAMELOGOFF:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2247 yahoo_parsepacket_status(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2248 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2249 case YAHOO_SERVICE_IDACT:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2250 case YAHOO_SERVICE_IDDEACT:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2251 /* nothing needs done, only has main fields */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2252 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2253 case YAHOO_SERVICE_MESSAGE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2254 case YAHOO_SERVICE_SYSMESSAGE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2255 case YAHOO_SERVICE_CHATMSG:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2256 yahoo_parsepacket_message(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2257 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2258 case YAHOO_SERVICE_NEWMAIL:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2259 case YAHOO_SERVICE_NEWPERSONALMAIL:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2260 yahoo_parsepacket_newmail(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2261 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2262 case YAHOO_SERVICE_CALENDAR:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2263 yahoo_parsepacket_calendar(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2264 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2265 case YAHOO_SERVICE_CHATINVITE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2266 yahoo_parsepacket_chatinvite(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2267 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2268 case YAHOO_SERVICE_NEWCONTACT:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2269 yahoo_parsepacket_newcontact(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2270 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2271 case YAHOO_SERVICE_GROUPRENAME:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2272 yahoo_parsepacket_grouprename(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2273 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2274 case YAHOO_SERVICE_CONFINVITE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2275 yahoo_parsepacket_conference_invite(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2276 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2277 case YAHOO_SERVICE_CONFLOGON:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2278 case YAHOO_SERVICE_CONFLOGOFF:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2279 yahoo_parsepacket_conference_user(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2280 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2281 case YAHOO_SERVICE_CONFDECLINE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2282 yahoo_parsepacket_conference_decline(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2283 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2284 case YAHOO_SERVICE_CONFADDINVITE:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2285 yahoo_parsepacket_conference_addinvite(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2286 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2287 case YAHOO_SERVICE_CONFMSG:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2288 yahoo_parsepacket_conference_msg(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2289 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2290 case YAHOO_SERVICE_PING:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2291 yahoo_parsepacket_ping(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2292 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2293 case YAHOO_SERVICE_FILETRANSFER:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2294 yahoo_parsepacket_filetransfer(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2295 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2296 default:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2297 yahoo_dbg_Print("libyahoo",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2298 "yahoo_parsepacket: can't parse packet type (%d)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2299 pkt->service);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2300 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2301 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2302
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2303 return pkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2304 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2305
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2306 int yahoo_parsepacket_ping(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2307 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2308 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2309 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2310
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2311 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2312 content = inpkt->content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2313
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2314 pkt->msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2315 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2316 pkt->msg = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2317
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2318 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2319 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2320
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2321 int yahoo_parsepacket_newmail(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2322 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2323 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2324 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2325 int len;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2326
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2327 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2328 content = inpkt->content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2329 len = strlen(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2330
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2331 if (pkt->service == YAHOO_SERVICE_NEWMAIL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2332 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2333 pkt->mail_status = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2334 if (len > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2335 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2336 pkt->mail_status = atoi(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2337 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2338 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2339 else if (pkt->service == YAHOO_SERVICE_NEWPERSONALMAIL)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2340 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2341 pkt->mail_status = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2342 if (len > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2343 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2344 pkt->mail_status = atoi(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2345 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2346 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2347
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2349 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2350
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2351 int yahoo_parsepacket_grouprename(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2352 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2353 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2354 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2355 char *tmp, delim[5];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2357 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2358 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2359
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2360 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2361 pkt->group_old = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2362 pkt->group_new = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2363
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2364 tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2365 delim[0] = 1; /* control-a */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2366 delim[1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2367
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2368 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 tmp = strtok(content, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2372
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2374 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2375 pkt->group_old = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2376 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2377 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2378
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 if (tmp) /* conference host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2380 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2381 pkt->group_new = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2382 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2383 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2384
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2385 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2386 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2387 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2388
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2389 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2390
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2391 yahoo_parsepacket_conference_invite()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2392
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2393 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2394 id^host^invited-users^msg^0or1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2395
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2396 Parses Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2397 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2398 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2399 char *conf_host == The person inviting you to conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2400 char **userlist == Everyone else invited to conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2401 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2402 char *msg == Invitation message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2403 int conf_type == Type of conference ( 0 = text, 1 = voice )
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2404
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2405 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2406 int yahoo_parsepacket_conference_invite(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2407 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2408 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2409 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2410 char *tmp = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2411 size_t found = 0, len = yahoo_makeint(inpkt->len);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2412
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2413 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2414 content = memdup(inpkt->content, len);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2415
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2416 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2417 pkt->conf_id = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2418 pkt->conf_host = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2419 pkt->conf_user = pkt->active_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2420 pkt->conf_userlist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2421 pkt->conf_inviter = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2422 pkt->conf_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2423
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2424 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2425 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2426 tmp = memtok(content, len, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2427 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2428
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2429 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2430 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2431 pkt->conf_id = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2432 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2433 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2434
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2435 if (tmp) /* conference host */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2436 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2437 pkt->conf_host = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2438 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2439 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2440
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2441 if (tmp) /* who else is invited */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2442 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2443 char *userlist = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2444
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2445 pkt->conf_userlist = yahoo_list2array(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2446 FREE(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2447 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2448 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2449
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2450 if (tmp) /* msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2451 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2452 pkt->conf_msg = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2453 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2454 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2455
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2456 if (tmp) /* 0 == text chat 1 == voice chat */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2457 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2458 char *conftype = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2459
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2460 if (0 != conftype)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2461 pkt->conf_type = atoi(conftype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2462 FREE(conftype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2463 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2464 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2465
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2466 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2467 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2468 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2469
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2470 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2471
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2472 yahoo_parsepacket_conference_decline()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2473
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2474 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2475 id^user-who-declined^msg
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2476
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2477 Parses Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2478 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2479 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2480 char *conf_user == User who declined.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2481 char *msg == Reason for declining.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2482
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2483 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2484 int yahoo_parsepacket_conference_decline(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2485 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2486 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2487 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2488 char *tmp, delim[2];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2489
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2490 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2491 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2492
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2493 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2494 pkt->conf_id = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2495 pkt->conf_host = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2496 pkt->conf_user = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2497 pkt->conf_userlist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2498 pkt->conf_inviter = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2499 pkt->conf_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2500
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2501 tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2502 delim[0] = 2; /* control-b */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2503 delim[1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2504
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2505 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2506 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2507 tmp = strtok(content, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2508 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2509
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2510 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2511 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2512 pkt->conf_id = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2513 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2514 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2515 if (tmp) /* got the user who declined */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2516 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2517 pkt->conf_user = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2518 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2519 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2520 if (tmp) /* msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2521 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2522 pkt->conf_msg = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2523 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2524 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2525
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2526 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2527 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2528
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2529 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2530
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2531 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2532
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2533 yahoo_parsepacket_conference_addinvite()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2534
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2535 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2536 Msgtype == 1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2537 id^inviter^who-else-invited^who-else-in-conf^msg^0or1
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2538 Msgtype == 11
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2539 id^inviter^invited-user
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2540
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2541 Parses Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2542 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2543 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2544 char *conf_inviter == The person inviting you to conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2545 char **userlist == Everyone else in conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2546 Null terminated array of strings.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2547 char *msg == Invitation message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2548 int conf_type == Type of conference ( 0 = text, 1 = voice )
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2549
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2550 char *conf_user == User invited to conference (msgtype == 11)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2551 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2552 int yahoo_parsepacket_conference_addinvite(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2553 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2554 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555 char *content = 0, *tmp = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2556 size_t found = 0, len = yahoo_makeint(inpkt->len);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2557
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2558 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2559 content = memdup(inpkt->content, len);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2560
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2561 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2562 pkt->conf_id = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 pkt->conf_host = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2564 pkt->conf_user = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2565 pkt->conf_userlist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 pkt->conf_inviter = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 pkt->conf_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2568
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2569 if (pkt->msgtype == 1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2573 tmp = memtok(content, len, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2574 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2578 pkt->conf_id = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2579 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2580 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2581 if (tmp) /* got the inviter */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2582 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2583 pkt->conf_inviter = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2586 if (tmp) /* got who-else-invited */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2587 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 /* don't use this field, its the same as the next one
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589 so I'm going to use the second field */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2590 /* pkt->conf_userlist = yahoo_list2array(tmp); */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2591 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2592 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2593 if (tmp) /* got the people in conference
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2594 not counting the inviter */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2595 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2596 char *userlist = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2597
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2598 pkt->conf_userlist = yahoo_list2array(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599 FREE(userlist);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2600 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2601 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2602 if (tmp) /* got the message */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2603 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2604 pkt->conf_msg = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2605 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2606 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2607 if (tmp) /* 0 at the end */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2608 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2609 char *conftype = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2610
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2611 if (0 != conftype)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2612 pkt->conf_type = atoi(conftype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2613 FREE(conftype);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2614 /* tmp = memtok (0, 0, "\002", 2, &found); */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2615 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2616 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2617 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2618 /* msgid == 11 (someone else is being invited) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2619 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2620 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2621 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2622 tmp = memtok(content, len, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2623 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2624
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2625 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2626 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2627 pkt->conf_id = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2628 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2629 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2631 if (tmp) /* got the inviter */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2632 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2633 pkt->conf_inviter = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2634 tmp = memtok(0, 0, "\002", 2, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2635 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2636
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2637 if (tmp) /* got the invited-user */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2638 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2639 pkt->conf_user = memdupasstr(tmp, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2640 /* tmp = memtok (0, 0, "\002", 2, &found); */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2641 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2642 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2643
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2644 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2645 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2646 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2647
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2648 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2649
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2650 yahoo_parsepacket_conference_msg()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2651
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2652 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2653 id^who-from^msg
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2654
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2655 Parses Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2656 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2657 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2658 char *conf_user == User who sent message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2659 char *msg == Message.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2660
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2661 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2662 int yahoo_parsepacket_conference_msg(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2663 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2664 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2665 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2666 char *tmp, delim[5];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2667
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2668 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2669 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2670
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2671 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2672 pkt->conf_id = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2673 pkt->conf_host = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2674 pkt->conf_user = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2675 pkt->conf_userlist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2676 pkt->conf_inviter = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2677 pkt->conf_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2678
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2679 tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2680 delim[0] = 2; /* control-b */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2681 delim[1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2682
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2683 /* parse error messages first */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2684 if (pkt->msgtype == YAHOO_MSGTYPE_ERROR)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2685 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2686 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2687 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2688 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2689
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2690 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2691 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2692 tmp = strtok(content, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2693 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2694
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2695 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2696 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2697 pkt->conf_id = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2698 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2699 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2700
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2701 if (tmp) /* conference user */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2702 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2703 pkt->conf_user = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2704 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2705 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2706
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2707 if (tmp) /* msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2708 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2709 pkt->conf_msg = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2710 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2711 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2712
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2713 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2714 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2715 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2716
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2717 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2718
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2719 yahoo_parsepacket_conference_user()
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2720 (User logged on/off to conference)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2721 Packet format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2722 id^user_who_logged_on/off
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2723
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2724 Parses Arguments:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2725 char *conf_id == The conference id -- usually of the form name-number,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2726 though it doesn't seem to matter much. ex: jaylubo-123
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 char *conf_user == User who logged on to conference.
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2728
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2729 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2730 int yahoo_parsepacket_conference_user(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2731 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2732 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2734 char *tmp, delim[5];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2735
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2736 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2737 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2738
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2739 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2740 pkt->conf_id = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2741 pkt->conf_host = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2742 pkt->conf_user = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2743 pkt->conf_userlist = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2744 pkt->conf_inviter = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2745 pkt->conf_msg = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2746
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2747 tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2748 delim[0] = 2; /* control-b */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2749 delim[1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2750
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2751 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2752 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2753 tmp = strtok(content, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2754 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2755
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2756 if (tmp) /* got the conference id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2757 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2758 pkt->conf_id = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2759 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2760 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2761
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2762 if (tmp) /* conference user */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2763 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2764 pkt->conf_user = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2765 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2766 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2767
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2768 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2769 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2770 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2771
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2772 int yahoo_parsepacket_filetransfer(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2773 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2774 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2775 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2776 char *tmp[5];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2777 int i, j, section;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2778
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2779 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2780 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2781
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2782 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2783 pkt->file_from = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2784 pkt->file_flag = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2785 pkt->file_url = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2786 pkt->file_expires = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2787 pkt->file_description = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2788
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2789 /* overkill allocation, but simple since only temporary use */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2790 tmp[0] = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2791 tmp[1] = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2792 tmp[2] = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2793 tmp[3] = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2794 tmp[4] = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2795
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2796 /* raw data format: from,flag,url,timestamp,description */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2797
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2798 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2799 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2800 section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2801 tmp[0][0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2802 tmp[1][0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2803 tmp[2][0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2804 tmp[3][0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2805 tmp[4][0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2806
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2807 while (i < strlen(content))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2808 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2809 char ch = content[i];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2810
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2811 if (ch == ',' && section < 4)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2812 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2813 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2814 section++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2815 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2816 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2817 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2818 tmp[section][j++] = ch;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2819 tmp[section][j] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2820 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2821 i++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2822 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2823
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2824 /* do stuff with extracted parts */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2825 pkt->file_from = strdup(tmp[0]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2826 pkt->file_flag = strdup(tmp[1]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2827 pkt->file_url = strdup(tmp[2]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2828 pkt->file_expires = atoi(tmp[3]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2829 pkt->file_description = strdup(tmp[4]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2830
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2831 /* free working variables */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2832 FREE(tmp[0]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2833 FREE(tmp[1]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2834 FREE(tmp[2]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2835 FREE(tmp[3]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2836 FREE(tmp[4]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2837 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2838 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2839 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2840
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2841 int yahoo_parsepacket_calendar(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2842 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2843 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2844 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2845 char *tmp, delim[5];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2846
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2847 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2848 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2849
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2850 /* init elements to all null */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2851 pkt->cal_url = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2852 pkt->cal_timestamp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2853 pkt->cal_type = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2854 pkt->cal_title = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2855 pkt->cal_description = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2856
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2857 tmp = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2858 delim[0] = 2; /* control-b */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2859 delim[1] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2860
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2861 if (content)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2862 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2863 tmp = strtok(content, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2864 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2865
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2866 if (tmp) /* got the url */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2867 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2868 pkt->cal_url = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2869 tmp = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2870
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2871 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2872 v= is not the type code
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2873 i= doesn't look like it either
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2874 tmp2 = strstr(pkt->cal_url, "v=");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2875 if ( tmp2 )
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2876 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2877 pkt->cal_type = atoi(tmp2);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2878 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2879 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2880
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2881 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2882
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2883 if (tmp) /* unknown (type code?) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2884 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2885 /* appears this isn't it either, I don't see where it is */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2886 /* pkt->cal_type = atoi(tmp); */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2887 tmp = strtok(NULL, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2888 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2889
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2890 if (tmp) /* timestamp */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2891 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2892 pkt->cal_timestamp = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2893 tmp = strtok(NULL, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2894 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2895
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2896 if (tmp) /* title */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2897 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2898 pkt->cal_title = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2899 tmp = strtok(NULL, delim); /* use delim since it won't occur again */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2900 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2901
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2902 if (tmp)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2903 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2904 pkt->cal_description = strdup(tmp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2905 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2906
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2907 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2908 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2910
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2911 int yahoo_parsepacket_chatinvite(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2912 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2913 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2914 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2915 int len;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2916
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2917 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2918 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2919 len = strlen(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2920
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2921 /* do special parsing for invite later on */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2922 pkt->chat_invite_content = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2923
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2924 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2925 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2926
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2927 int yahoo_parsepacket_newcontact(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2928 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2929 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2930 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2931 int len;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2932
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2933 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2934 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2935 len = strlen(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2936
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2937 /* cheat for now, say if first digit is number */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2938 if (len > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2939 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2940 if (isdigit((int) content[0]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2941 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2942 return yahoo_parsepacket_status(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2943 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2944 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2945 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2946 return yahoo_parsepacket_message(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2947 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2948 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2949
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2950 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2951 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2952
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2953 int yahoo_parsepacket_status(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2954 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2955 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2956 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2957 char *tmpc;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2958 char *tmp1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2959 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2960 int len;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2961 int index;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2962 int realcount;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2963
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2964 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2965 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2966 len = strlen(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2967
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2968 /* Pull off the flag from the initial part of the content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2969 /* this flag indicates the number of buddy that're online */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2970 pkt->flag = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2971 tmpc = content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2972 while (tmpc[0] && isdigit((int) tmpc[0]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2973 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2974 pkt->flag = pkt->flag * 10 + (content[0] - '0');
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2975 tmpc++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2976 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2977 if (tmpc[0] && tmpc[0] == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2978 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2979 tmpc++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2980 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2981
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2982 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2983 We're receiving either this:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2984 2,buddy1(0,728EE9FB,0,1,0,0),buddy2(0,7AC00000,0,1,0,0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2985 or this:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2986 buddy1(0,728EE9FB,0,1,0,0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2987 hence:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2988 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2989
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2990 if (pkt->flag == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2991 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2992 pkt->idstatus_count = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2993 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2994 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2995 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2996 pkt->idstatus_count = pkt->flag;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2997 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2998
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2999 /* print an error if I get the was not AWAY */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3000 if (strstr(tmpc, "was not AWAY"))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3001 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3002 pkt->idstatus_count = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3003 yahoo_dbg_Print("libyahoo", "yahoo_parsepacket_status: "
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3004 "got a 'was not AWAY' message\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3005 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3006
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3007 if (pkt->idstatus_count == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3008 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3009 /* No entries, so no array needed */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3010 pkt->idstatus = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3011 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3012 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3013 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3014 /* Allocate the array */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3015 pkt->idstatus = (struct yahoo_idstatus **)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3016 calloc(sizeof(struct yahoo_idstatus), pkt->idstatus_count);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3017
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3018 for (i = 0; i < pkt->idstatus_count; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3019 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3020 pkt->idstatus[i] = (struct yahoo_idstatus *)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3021
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3022 calloc(1, sizeof(struct yahoo_idstatus));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3023 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3024 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3025
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3026 index = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3027 tmp1 = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3028 realcount = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3029 while (tmpc && tmpc[0] && pkt->idstatus)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3030 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3031 struct yahoo_idstatus *tmpid;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3032
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3033 /* Get pointer to allocated structure to hold status data */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3034 tmpid = pkt->idstatus[index++];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3035 if (!tmpid)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3036 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3037 /* shortcut, we know there can't be any more status entries
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3038 at this point */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3039 /* yahoo_dbg_Print("status", "null tmpid"); */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3040 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3041 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3042
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3043 /* YPNS2.0 nick(status,msg,connection_id,UNK,in_pager,in_chat,in_game) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3044 /* tnneul(99,test,message^A,6AD68325,0,1,0,0) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3045 /* 0 1 2 3 4 5 6 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3046
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3047 /* YPNS1.0 nick(status,connection_id,UNK,in_pager,in_chat,in_game) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3048 /* nneul(0,7081F531,0,1,0,0) */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3049 /* 0 2 3 4 5 6 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3050
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3051 /* rewrite this whole section in a less ugly fashion */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3052 /* first pull off the id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3053
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3054 /* YUCK - YPNS2.0 has variable format status records, if type is 99,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3055 it has 7 fields, second is msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3056
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3057 #if 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3058 yahoo_dbg_Print("status", "whole string = '%s'\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3059 yahoo_dbg_NullCheck(tmpc));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3060 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3061
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3062 if (tmp1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3063 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3064 tmp1 = strtok(NULL, "(");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3065 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3066 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3067 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3068 tmp1 = strtok(tmpc, "(");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3069 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3070 if (tmp1 && tmp1[0] == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3071 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3072 tmp1++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3073 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3074
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3075 if (tmp1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3076 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3077 tmpid->id = strdup(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3078 realcount++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3079
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3080 for (i = 0; i <= 6 && tmp1; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3081 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3082 #if 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3083 yahoo_dbg_Print("status", "i==%d\n", i);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3084 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3085
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3086 if (i == 6) /* end of status area */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3087 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3088 tmp1 = strtok(NULL, "),");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3089 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3090 else if (i == 1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3091 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3092 char delim[3];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3093
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3094 if (tmpid->status == YAHOO_STATUS_CUSTOM)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3095 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3096 delim[0] = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3097 delim[1] = ',';
1135
8c84ffb4c003 [gaim-migrate @ 1145]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1099
diff changeset
3098 delim[2] = 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3099 tmp1 = strtok(NULL, delim);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3100 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3101 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3102 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3103 i = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3104 tmp1 = strtok(NULL, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3105 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3106 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3107 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3108 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3109
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3110 tmp1 = strtok(NULL, ",");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3111 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3112
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3113 /* then pull off the particular element of the list */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3114 if (tmp1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3115 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3116 switch (i)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3117 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3118 case 0: /* status */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3119 tmpid->status = atoi(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3120 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3121 case 1: /* msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3122 if (tmpid->status == YAHOO_STATUS_CUSTOM)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3123 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3124 tmpid->status_msg = strdup(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3125 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3126 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3127 case 2: /* session id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3128 tmpid->connection_id = strdup(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3129 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3130 case 3: /* dunno what this is */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3131 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3132 case 4:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3133 tmpid->in_pager = atoi(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3134 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3135 case 5:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3136 tmpid->in_chat = atoi(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3137 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3138 case 6:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3139 tmpid->in_game = atoi(tmp1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3140 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3141 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3142 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3143 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3144 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3145 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3146
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3147 for (i = realcount; i <= pkt->idstatus_count; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3148 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3149 if (pkt->idstatus && pkt->idstatus[i])
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3150 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3151 FREE(pkt->idstatus[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3152 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3153 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3154 pkt->idstatus_count = realcount;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3155
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3156 /* Free working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3157 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3158
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3159 /* Return ok for success */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3160 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3161 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3162
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3163 int yahoo_parsepacket_message(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3164 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3165 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3166 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3167 char *tmp_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3168 int i, j, section;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3169
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3170 if (pkt->msgtype == YAHOO_MSGTYPE_OFFLINE)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3171 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3172 return yahoo_parsepacket_message_offline(ctx, pkt, inpkt);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3173 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3174
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3175 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3176 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3177 tmp_id = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3178
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3179 /* initialize */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3180 pkt->msg_status = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3181
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3182 /* possible message content formats: */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3183 /* userid(#) *//* msgtype == YAHOO_MSGTYPE_STATUS */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3184 /* userid,,msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3185
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3186 /* this needed butchered */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3187 /* YAHOO_MSGTYPE_OFFLINE */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3188 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3189
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3190 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3191 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3192 section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3193 tmp_id[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3194 while (i < strlen(content))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3195 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3196 char ch = content[i];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3197
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3198 if (section == 0) /* parsing userid */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3199 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3200 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3201 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3202 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3203 section = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3204 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3205 else if (ch == '(')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3206 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3207 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3208 section = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3209 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3210 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3211 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3212 tmp_id[j++] = ch;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3213 tmp_id[j] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3214 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3215 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3216 else if (section == 1) /* parsing flag */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3217 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3218 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3219 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3220 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3221 section = 3;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3222 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3223 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3224 else if (section == 2) /* parsing status */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3225 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3226 if (ch == ')')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3227 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3228 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3229 section = 3;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3230 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3231 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3232 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3233 if (isdigit((int) ch))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3234 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3235 pkt->msg_status *= 10;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3236 pkt->msg_status += ch - '0';
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3237 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3238 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3239 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3240 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3241 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3242 pkt->msg = strdup(&content[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3243 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3244 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3245
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3246 i++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3247 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3248
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3249 /* do stuff with extracted parts */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3250 pkt->msg_id = strdup(tmp_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3251
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3252 /* handle empty message case */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3253 /* don't pass a message if it's just a status update */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3254 if (!pkt->msg && pkt->msgtype != YAHOO_MSGTYPE_STATUS)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3255 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3256 pkt->msg = strdup("");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3257 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3258
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3259 /* free working variables */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3260 FREE(tmp_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3261 FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3262
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3263 /* Return ok for success */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3264 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3265 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3266
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3267 /* This parses a special format offline message, and is only currently
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3268 called from yahoo_parsepacket_message. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3269 int yahoo_parsepacket_message_offline(struct yahoo_context *ctx,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3270 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3271 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3272 char *content;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3273 char *to_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3274 char *from_id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3275 char *timestamp;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3276 int i, j, section;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3277
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3278 /* Make working copy of content */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3279 content = strdup(inpkt->content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3280 to_id = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3281 from_id = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3282 timestamp = strdup(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3283
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3284 /* initialize */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3285 pkt->msg_status = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3286
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3287 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3288 /* sec0,sec1,sec2=to,sec3=from,sec4=tstamp,sec5=msg */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3289
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3290 i = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3291 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3292 section = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3293 to_id[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3294 from_id[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3295 timestamp[0] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3296
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3297 while (i < strlen(content))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3298 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3299 char ch = content[i];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3300
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3301 if (section == 0) /* parsing first unknown number */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3302 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3303 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3304 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3305 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3306 section = 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3307 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3308 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3309 else if (section == 1) /* parsing second unknown number */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3310 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3311 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3312 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3313 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3314 section = 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3315 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3316 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3317 else if (section == 2) /* parsing to-id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3318 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3319 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3320 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3321 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3322 section = 3;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3323 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3324 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3325 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3326 to_id[j++] = ch;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3327 to_id[j] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3328 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3329 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3330 else if (section == 3) /* parsing from-id */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3331 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3332 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3333 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3334 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3335 section = 4;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3336 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3337 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3338 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3339 from_id[j++] = ch;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3340 from_id[j] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3341 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3342 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3343 else if (section == 4) /* parsing timestamp */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3344 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3345 if (ch == ',')
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3346 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3347 j = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3348 section = 5;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3349 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3350 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3351 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3352 timestamp[j++] = ch;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3353 timestamp[j] = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3354 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3355 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3356 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3357 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3358 pkt->msg = strdup(&content[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3359 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3360 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3361
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3362 i++;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3363 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3364
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3365 /* do stuff with extracted parts */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3366 pkt->msg_id = strdup(from_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3367 pkt->msg_timestamp = strdup(timestamp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3368 if (pkt->active_id)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3369 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3370 FREE(pkt->active_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3371 pkt->active_id = strdup(to_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3372 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3373
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3374 /* free working variables */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3375 FREE(timestamp);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3376 FREE(from_id);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3377 FREE(to_id) FREE(content);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3378
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3379 /* Return ok for success */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3380 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3381 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3382
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3383 int yahoo_getdata(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3384 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3385 char buf[1000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3386 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3387
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3388 /* This is a http mode connection, so just send a ping to get any
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3389 new data from the server. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3390 if (ctx->connect_mode == YAHOO_CONNECT_HTTP ||
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3391 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3392 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3393 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3394 return 0;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3395 return (1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3396 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3397
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3398 /* Read as much data as is available. */
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3399 /* XXX: doesnt the protocol contain header information with lengths? */
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3400 do {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3401 res = read(ctx->sockfd, buf, sizeof(buf));
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3402 if ((res == -1) && (errno == EINTR))
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3403 continue;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3404 break;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3405 } while (1);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3406
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3407 if (res == -1)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3408 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3409 printf("yahoo_getdata: error reading data from server: %s\n",
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3410 strerror(errno));
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3411 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3412 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3413 else if (res == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3414 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3415 yahoo_dbg_Print("io",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3416 "[libyahoo] yahoo_getdata: got zero length read\n", res);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3417 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3418 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3419
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3420 yahoo_addtobuffer(ctx, buf, res);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3421 yahoo_dbg_Print("io", "[libyahoo] yahoo_getdata: read (%d) bytes\n", res);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3422
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3423 return 1;
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3424 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3425
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3426 struct yahoo_rawpacket *yahoo_getpacket(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3427 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3428 struct yahoo_rawpacket *pkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3429 struct yahoo_rawpacket *retpkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3430 int *buflen = &ctx->io_buf_curlen;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3431 char *buffer = ctx->io_buf;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3432 unsigned int contentlen;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3433
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3434 /* If buffer doesn't start with YHOO, skip bytes until it
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3435 does. This is to protect against possible packet alignment
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3436 errors if I size something wrong at any time. */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3437
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3438 while ((*buflen >= 4) && (memcmp(buffer, "YHOO", 4)))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3439 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3440 /* making quiet for now so I don't have to work too hard on the HTTP support */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3441 #if 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3442 printf("\nskipped buffer byte (%d)\n", buffer[0]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3443 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3444 memmove(buffer, buffer + 1, *buflen - 1);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3445 *buflen = *buflen - 1;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3446 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3447
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3448 /* Don't do anything if the buffer doesn't have at least a full
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3449 header */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3450 if (*buflen < YAHOO_PACKET_HEADER_SIZE)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3451 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3452 // printf("returning null cause buffer is too small\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3453 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3454 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3455
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3456 /* print out the beginning of the buffer */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3457 #if 0
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3458 printf("Buffer (buflen = %d):\n", *buflen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3459 for (i = 0; i < *buflen; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3460 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3461 if ((i) % 10 == 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3462 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3463 printf("\n%.4d: ", i);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3464 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3465 if (isprint(buffer[i]))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3466 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3467 printf("%-3d %c ", buffer[i], buffer[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3468 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3469 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3470 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3471 printf("%-3d ", buffer[i]);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3472 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3473 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3474 printf("\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3475 #endif
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3476 /* Make pkt point to buffer for ease of use */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3477 pkt = (struct yahoo_rawpacket *) buffer;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3478
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3479 /* Determine the content size specified by the header */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3480 contentlen = yahoo_makeint(pkt->len) - YAHOO_PACKET_HEADER_SIZE;
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3481 #if 0
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3482 printf("contentlen = %d\n", contentlen);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3483 #endif
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3484
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3485 /* Don't continue if buffer doesn't have full content in it */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3486 if (*buflen < (YAHOO_PACKET_HEADER_SIZE + contentlen))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3487 {
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3488 printf("buffer not big enough for contentlen\n");
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3489 return NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3490 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3491
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3492 /* Copy this packet */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3493 retpkt =
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3494 (struct yahoo_rawpacket *) malloc(YAHOO_PACKET_HEADER_SIZE +
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3495 contentlen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3496 memcpy(retpkt, buffer, YAHOO_PACKET_HEADER_SIZE + contentlen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3497
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3498 /* Shift the buffer */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3499 memmove(buffer, buffer + YAHOO_PACKET_HEADER_SIZE + contentlen,
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3500 *buflen - YAHOO_PACKET_HEADER_SIZE - contentlen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3501
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3502 /* Adjust the buffer length */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3503 *buflen -= (YAHOO_PACKET_HEADER_SIZE + contentlen);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3504
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3505 /* Return the packet */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3506 return retpkt;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3507 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3508
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3509 int yahoo_isbuddy(struct yahoo_context *ctx, const char *id)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3510 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3511 int i;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3512 char *buddy = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3513
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3514 if (!id || !ctx || !ctx->buddies)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3515 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3516 return FALSE;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3517 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3518
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3519 for (i = 0; ctx->buddies[i]; i++)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3520 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3521 buddy = (ctx->buddies[i])->id;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3522 if (!strcasecmp(id, buddy))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3523 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3524 return TRUE;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3525 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3526 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3527
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3528 return FALSE;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3529 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3530
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3531 static void yahoo_free_address (struct yahoo_address *add)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3532 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3533 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3534 "[libyahoo] yahoo_free_address: record at address 0x%08p for user %s (%s %s) being free'd\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3535 add, add->id, add->firstname, add->lastname);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3536
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3537 FREE (add->firstname);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3538 FREE (add->lastname);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3539 FREE (add->emailnickname);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3540 FREE (add->email);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3541 FREE (add->workphone);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3542 FREE (add->homephone);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3543 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3544
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3545 void yahoo_freeaddressbook(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3546 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3547 unsigned int count = ctx->address_count;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3548 struct yahoo_address *add_p = ctx->addresses;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3549
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3550 if (NULL == ctx || NULL == ctx->addresses)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3551 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3552
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3553 while (count-- > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3554 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3555 yahoo_free_address (add_p++);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3556 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3557
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3558 ctx->address_count = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3559 FREE (ctx->addresses);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3560 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3561
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3562 static void yahoo_data_to_addressbook (char *block, struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3563 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3564 char *token = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3565 int record = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3566 struct yahoo_address *add = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3567
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3568 if (NULL == block || NULL == ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3569 return;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3570
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3571 yahoo_freeaddressbook (ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3572
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3573 add = ctx->addresses = calloc (ctx->address_count, sizeof (struct yahoo_address));
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3574
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3575 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3576 Okay!
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3577 At this point we have a char * (block) that has \012 delimited records
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3578 Each record (as a string when retreived with strtok) follows the format:
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3579 <ID>:<FIRSTNAME>\011<LASTNAME>\011<EMAILNICKNAME>\011<EMAIL>\011<HOMEPHONE>\011<WORKPHONE>\011[01]\011<ENTRYID>\000
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3580 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3581
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3582 token = strtok (block, "\012");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3583 while (NULL != token)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3584 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3585 /*
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3586 Here we must use memtok because we'll get some repeated tokens!!!!!
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3587 */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3588 char *field = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3589 size_t token_len = 0, found = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3590
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3591 ++record;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3592 token_len = strlen (token);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3593
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3594 field = memtok(token, token_len, ":", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3595
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3596 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3597 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3598 add->id = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3599 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3600 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3601
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3602 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3603 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3604 add->firstname = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3605 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3606 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3607
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3608 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3609 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3610 add->lastname = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3611 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3612 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3613
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3614 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3615 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3616 add->emailnickname = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3617 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3618 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3619
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3620 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3621 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3622 add->email = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3623 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3624 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3625
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3626 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3627 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3628 add->homephone = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3629 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3630 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3631
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3632 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3633 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3634 add->workphone = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3635 field = memtok(0, 0, "\011", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3636 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3637
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3638 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3639 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3640 add->primary_phone = (*field == '0' ? home : work);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3641 field = memtok(0, 0, "", 1, &found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3642 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3643
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3644 if (NULL != field)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3645 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3646 char *entryid = memdupasstr(field, found);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3647 if (NULL != entryid)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3648 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3649 add->entryid = atoi (entryid);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3650 FREE (entryid);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3651 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3652 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3653
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3654 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3655 "[libyahoo] yahoo_fetchaddressbook: record #%d is for user %s (%s %s)\n",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3656 record, add->id, add->firstname, add->lastname);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3657
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3658 ++add;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3659
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3660 token = strtok (NULL, "\012");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3661 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3662 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3663
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3664 /* retreive the details of the friends in your address book that have a Yahoo! id listed */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3665 int yahoo_fetchaddressbook(struct yahoo_context *ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3666 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3667 char buffer[5000];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3668 int servfd;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3669 int res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3670 int copied = 0, size = 5000;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3671 char *address = NULL, *copy = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3672
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3673 if (!ctx)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3674 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3675 return 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3676 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3677
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3678 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3679 "[libyahoo] yahoo_fetchaddressbook: starting\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3680
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3681 /* Check for cached addresses */
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3682 if (ctx->addresses)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3683 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3684 yahoo_freeaddressbook(ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3685 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3686
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3687 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3688 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3689 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3690 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3691 else
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3692 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3693 servfd = yahoo_socket_connect(ctx, YAHOO_ADDRESS_HOST, YAHOO_ADDRESS_PORT);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3694 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3695
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3696 if (servfd < 0)
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3697 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3698 printf("[libyahoo] failed to connect to address book server.\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3699 return (0);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3700 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3701
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3702 strcpy(buffer, "GET ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3703 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3704 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3705 strcat(buffer, YAHOO_ADDRESS_HOST);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3706 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3707 strcat(buffer, "/yab/uk/yab?v=PG&A=s");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3708 strcat(buffer, " HTTP/1.0\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3709 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3710 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3711 strcat(buffer, "Cookie: ");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3712 strcat(buffer, ctx->cookie);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3713 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3714 strcat(buffer, "\r\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3715
1099
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3716 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer)) {
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3717 close(servfd);
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3718 return 0;
dff99d95f8a0 [gaim-migrate @ 1109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1054
diff changeset
3719 }
1054
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3720
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3721 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3722 "[libyahoo] yahoo_fetchaddressbook: writing buffer '%s'\n", buffer);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3723
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3724 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3725 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3726 if ('\012' == buffer[0])
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3727 continue;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3728
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3729 if (0 == strncmp (buffer, "1\011", 2))
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3730 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3731 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3732 "[libyahoo] yahoo_fetchaddressbook: found first line\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3733 if (3 == res)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3734 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3735 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3736 "[libyahoo] yahoo_fetchaddressbook: however there's been a problem\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3737 break;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3738 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3739
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3740 address = &buffer[2];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3741 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3742 else if (NULL != address)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3743 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3744 address = &buffer[0];
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3745 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3746
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3747 if (NULL != address)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3748 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3749 if (NULL == copy)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3750 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3751 copy = malloc (size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3752 memset (copy, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3753 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3754
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3755 if ((copied + res) > size)
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3756 {
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3757 char *newcopy = NULL;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3758
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3759 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3760 "[libyahoo] yahoo_fetchaddressbook: resizing buffer from %d bytes to %d bytes\n", size, size * 2);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3761 size *= 2;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3762 newcopy = malloc (size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3763 memset (newcopy, 0, size);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3764 memcpy (newcopy, copy, copied);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3765 free (copy);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3766 copy = newcopy;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3767 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3768
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3769 copied += res;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3770 strcat (copy, address);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3771 ++ctx->address_count;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3772 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3773 }
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3774
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3775 yahoo_data_to_addressbook (copy, ctx);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3776 FREE (copy);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3777
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3778 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3779 "[libyahoo] yahoo_fetchaddressbook: closing server connection\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3780 close(servfd);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3781 servfd = 0;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3782 yahoo_dbg_Print("addressbook",
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3783 "[libyahoo] yahoo_fetchaddressbook: closed server connection\n");
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3784
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3785 yahoo_dbg_Print("addressbook", "[libyahoo] yahoo_fetchaddressbook: done (%d addresses retreived)\n", ctx->address_count);
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3786
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3787 return ctx->address_count;
dc1fb3647374 [gaim-migrate @ 1064]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3788 }

mercurial