annotate plugins/yay/libyahoo.c @ 1362:3cea00ca7a34

[gaim-migrate @ 1372] yay. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 22 Dec 2000 10:48:19 +0000
parents 903a6d0938c7
children b167222b5c93
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1135
903a6d0938c7 [gaim-migrate @ 1145]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1099
diff changeset
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 Yahoo Pager Client Library
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 This code is based on code by Douglas Winslow. The original info from
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 his code is listed below. This code has taken his code and has been
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7 altered to my naming and coding conventions and has been made more
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8 usable as a library of routines.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 -- Nathan Neulinger <nneul@umr.edu>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 Yahoo Pager Client Emulator Pro - yppro.c
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 A basic reference implementation
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 Douglas Winslow <douglas@min.net>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 Tue Sep 1 02:28:21 EDT 1998
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 Version 2, Revision 2
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 Known to compile on Linux 2.0, FreeBSD 2.2, and BSDi 3.0.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 hi to aap bdc drw jfn jrc mm mcd [cejn]b #cz and rootshell
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 Finally!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 Yahoo finally patched their server-side, and things will be getting
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 back to "normal". I will continue to maintain this code as long as
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 there is interest for it. Since Yahoo will be discontinuing YPNS1.1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 login support shortly, I've upgraded this client to do YPNS1.2. You
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 *must* have a password to pass authentication to the pager server.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28 This authentication is done by a weird HTTP cookie method.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 This code is distributed under the GNU General Public License (GPL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 #include "config.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 #include <stdio.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
35 #include <netdb.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 #include <fcntl.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 #include <errno.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38 #include <sys/socket.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39 #include <netinet/in.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #if defined(WITH_GTK)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41 #include <gtk/gtk.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 #include <unistd.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44 #if defined(HAVE_STRINGS_H)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 #include <strings.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47 #if defined(HAVE_STRING_H)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 #include <string.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
50 #include <ctype.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
51 #include "libyahoo.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52 #ifdef HAVE_DMALLOC
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
53 #include "dmalloc.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
54 #else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
55 #include <stdlib.h>
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58 #include "memtok.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 /* allow libyahoo to be used without gtkyahoo's debug support */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
62 #include "libyahoo-debug.h"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
63 #else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64 static void yahoo_dbg_Print(char *tmp, ...)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
65 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
66 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
67
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
68 #define yahoo_dbg_NullCheck(x) ((x)?(x):("[NULL]"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
69 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
71 /* remap functions to gtk versions */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72 #if defined(WITH_GTK)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73 #define malloc g_malloc
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 #define free g_free
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
75 #define calloc(x,y) g_malloc0((x)*(y))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78 #if (!defined(TRUE) || !defined(FALSE))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 # define TRUE 1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 # define FALSE 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 /* Define a quick shortcut function to free a pointer and set it to null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84 #define FREE(x) if (x) { free(x); x=NULL; }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87 void SOCKSinit(char *argv0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 /* pager server host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91 #define YAHOO_PAGER_HOST "cs.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 #define YAHOO_PAGER_PORT 5050
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 /* pager server host for http connections */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94 #define YAHOO_PAGER_HTTP_HOST "http.pager.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
95 #define YAHOO_PAGER_HTTP_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 /* authentication/login host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 #define YAHOO_AUTH_HOST "msg.edit.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 #define YAHOO_AUTH_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 /* buddy/identity/config host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100 #define YAHOO_DATA_HOST YAHOO_AUTH_HOST
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 #define YAHOO_DATA_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 /* Address book host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103 #define YAHOO_ADDRESS_HOST "uk.address.yahoo.com"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
104 #define YAHOO_ADDRESS_PORT 80
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
105
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 /* User agent to use for HTTP connections */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 /* It needs to have Mozilla/4 in it, otherwise it fails */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
108 #ifndef VERSION
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109 #define VERSION "1.0"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
110 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
111 #define YAHOO_USER_AGENT "Mozilla/4.6 (libyahoo/" VERSION ")"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
112
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113 #define YAHOO_PROTOCOL_HEADER "YPNS2.0"
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
115 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
116 * Routines and data private to this library, should not be directly
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
117 * accessed outside of these routines.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
118 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
119
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
120 /* Service code labels for debugging output */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
121 static struct yahoo_idlabel yahoo_service_codes[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 {YAHOO_SERVICE_LOGON, "Pager Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
123 {YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 {YAHOO_SERVICE_ISAWAY, "Is Away"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 {YAHOO_SERVICE_ISBACK, "Is Back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126 {YAHOO_SERVICE_IDLE, "Idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 {YAHOO_SERVICE_MESSAGE, "Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 {YAHOO_SERVICE_IDACT, "Activate Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
129 {YAHOO_SERVICE_IDDEACT, "Deactivate Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
130 {YAHOO_SERVICE_MAILSTAT, "Mail Status"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 {YAHOO_SERVICE_USERSTAT, "User Status"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132 {YAHOO_SERVICE_NEWMAIL, "New Mail"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 {YAHOO_SERVICE_CHATINVITE, "Chat Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
134 {YAHOO_SERVICE_CALENDAR, "Calendar Reminder"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
135 {YAHOO_SERVICE_NEWPERSONALMAIL, "New Personals Mail"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
136 {YAHOO_SERVICE_NEWCONTACT, "New Friend"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 {YAHOO_SERVICE_GROUPRENAME, "Group Renamed"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 {YAHOO_SERVICE_ADDIDENT, "Add Identity"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
139 {YAHOO_SERVICE_ADDIGNORE, "Add Ignore"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
140 {YAHOO_SERVICE_PING, "Ping"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 {YAHOO_SERVICE_SYSMESSAGE, "System Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142 {YAHOO_SERVICE_CONFINVITE, "Conference Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 {YAHOO_SERVICE_CONFLOGON, "Conference Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 {YAHOO_SERVICE_CONFDECLINE, "Conference Decline"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 {YAHOO_SERVICE_CONFLOGOFF, "Conference Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
146 {YAHOO_SERVICE_CONFMSG, "Conference Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 {YAHOO_SERVICE_CONFADDINVITE, "Conference Additional Invitation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 {YAHOO_SERVICE_CHATLOGON, "Chat Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149 {YAHOO_SERVICE_CHATLOGOFF, "Chat Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
150 {YAHOO_SERVICE_CHATMSG, "Chat Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151 {YAHOO_SERVICE_GAMELOGON, "Game Logon"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
152 {YAHOO_SERVICE_GAMELOGOFF, "Game Logoff"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
153 {YAHOO_SERVICE_FILETRANSFER, "File Transfer"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 {YAHOO_SERVICE_PASSTHROUGH2, "Passthrough 2"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
158 /* Status codes */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
159 static struct yahoo_idlabel yahoo_status_codes[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
160 {YAHOO_STATUS_AVAILABLE, "I'm Available"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
161 {YAHOO_STATUS_BRB, "Be Right Back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 {YAHOO_STATUS_BUSY, "Busy"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163 {YAHOO_STATUS_NOTATHOME, "Not at Home"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
164 {YAHOO_STATUS_NOTATDESK, "Not at my Desk"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
165 {YAHOO_STATUS_NOTINOFFICE, "Not in the Office"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
166 {YAHOO_STATUS_ONPHONE, "On the Phone"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
167 {YAHOO_STATUS_ONVACATION, "On Vacation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
168 {YAHOO_STATUS_OUTTOLUNCH, "Out to Lunch"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 {YAHOO_STATUS_STEPPEDOUT, "Stepped Out"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170 {YAHOO_STATUS_INVISIBLE, "Invisible"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
171 {YAHOO_STATUS_IDLE, "Idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
172 {YAHOO_STATUS_CUSTOM, "Custom Message"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
173 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
174 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
175
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
176 /* Status codes */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
177 static struct yahoo_idlabel yahoo_status_append[] = {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
178 {YAHOO_STATUS_AVAILABLE, "is now available"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
179 {YAHOO_STATUS_BRB, "will be right back"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
180 {YAHOO_STATUS_BUSY, "is now busy"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
181 {YAHOO_STATUS_NOTATHOME, "is not at home"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
182 {YAHOO_STATUS_NOTATDESK, "is not at their desk"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
183 {YAHOO_STATUS_NOTINOFFICE, "is not in the office"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
184 {YAHOO_STATUS_ONPHONE, "is on the phone"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
185 {YAHOO_STATUS_ONVACATION, "is on vacation"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
186 {YAHOO_STATUS_OUTTOLUNCH, "is out to lunch"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
187 {YAHOO_STATUS_STEPPEDOUT, "has stepped out"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
188 {YAHOO_STATUS_INVISIBLE, "is now invisible"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
189 {YAHOO_STATUS_IDLE, "is now idle"},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
190 {YAHOO_STATUS_CUSTOM, ""},
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
191 {0, NULL}
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
192 };
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
193
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
194 static int readall(int fd, void *buf, size_t count)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
195 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
196 int left, ret, cur = 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
197
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
198 left = count;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
199
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
200 while (left) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
201 ret = read(fd, ((unsigned char *)buf)+cur, left);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
202 if ((ret == -1) && (errno != EINTR)) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
203 return -1;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
204 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
205 if (ret == 0)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
206 return cur;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
207
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
208 if (ret != -1) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
209 cur += ret;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
210 left -= ret;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
211 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
212 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
213 return cur;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
214 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
215
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
216 static int writeall(int fd, void *buf, size_t count)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
217 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
218 int left, ret, cur = 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
219
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
220 left = count;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
221
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
222 while (left) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
223 ret = write(fd, ((unsigned char *)buf)+cur, left);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
224 if ((ret == -1) && (errno != EINTR)) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
225 return -1;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
226 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
227 if (ret == 0)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
228 return cur;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
229 if (ret != -1) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
230 cur += ret;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
231 left -= ret;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
232 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
233 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
234
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
235 return cur;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
236 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
237
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 /* Take a 4-byte character string in little-endian format and return
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
239 a unsigned integer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
240 unsigned int yahoo_makeint(unsigned char *data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 if (data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
244 return ((data[3] << 24) + (data[2] << 16) + (data[1] << 8) +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
245 (data[0]));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
246 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
247 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
248 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
249
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
250 /* Take an integer and store it into a 4 character little-endian string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251 static void yahoo_storeint(unsigned char *data, unsigned int val)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
253 unsigned int tmp = val;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
254 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
256 if (!data)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
257 return;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
258
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
259 for (i = 0; i < 4; i++)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
260 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
261 data[i] = tmp % 256;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
262 tmp >>= 8;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
263 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
264 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
265
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
266 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
267 converts a comma seperated list to an array of strings
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268 used primarily in conference code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
269
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270 allocates a string in here -- caller needs to free it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
271 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272 char **yahoo_list2array(char *buff)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
273 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
274 char **tmp_array = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275 char *array_elem = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 char *tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
277
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
278 char *buffer = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
279 char *ptr_buffer = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
280
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
281 int sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
282 int cnt = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
283 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284 unsigned int i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
285 unsigned int len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
286
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
287 if (0 == buff)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
288 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
289
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
290 if (!(ptr_buffer = buffer = strdup(buff))) /* play with a copy */
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
291 return NULL;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
293 /* count the number of users (commas + 1) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
295 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
296 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
297 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
298 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
299 if not looking at end of list
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
300 ( ignore extra pesky comma at end of list)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
301 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 if (i != (strlen(buffer) - 1))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
303 cnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
304 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
305 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
306
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
307 /* add one more name than comma .. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
308 cnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
309
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
310 /* allocate the array to hold the list of buddys */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
311 /* null terminated array of pointers */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
312 if (!(tmp_array = (char **) malloc(sizeof(char *) * (cnt + 1)))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
313 FREE(buffer);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
314 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
315 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
316
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317 memset(tmp_array, 0, (sizeof(char *) * (cnt + 1)));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
318
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
319 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
321 sublen++;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
322 if (!(tmp = (char *) malloc(sizeof(char) * (sublen + 1)))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
323 FREE(buffer);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
324 FREE(tmp_array);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
325 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
326 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
327
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
328 memcpy(tmp, ptr_buffer, sublen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
329 tmp[sublen] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
330
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
331 if (ptr_buffer[sublen] != '\0')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
332 ptr_buffer = &(ptr_buffer[sublen + 1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
333 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
334 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
335 sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
336
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337 while (tmp && (strcmp(tmp, "") != 0))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
338 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
339 len = strlen(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
340 array_elem = (char *) malloc(sizeof(char) * (len + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
341
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
342 strncpy(array_elem, tmp, (len + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
343 array_elem[len] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
344
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
345 tmp_array[nxtelem++] = array_elem;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
346 array_elem = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
347
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
348 FREE(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
349
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
350 while ((ptr_buffer[sublen] != ',') && (ptr_buffer[sublen] != '\0'))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
351 sublen++;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
352 if (!(tmp = (char *) malloc(sizeof(char) * (sublen + 1)))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
353 FREE(buffer);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
354 FREE(tmp_array);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
355 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
356 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
357
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
358 memcpy(tmp, ptr_buffer, sublen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
359 tmp[sublen] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
360
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
361 if (ptr_buffer[sublen] != '\0')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
362 ptr_buffer = &(ptr_buffer[sublen + 1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
363 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
364 ptr_buffer = &(ptr_buffer[sublen]); /* stay at the null char */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
365
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
366 sublen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
367 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
368 tmp_array[nxtelem] = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
369
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
370 FREE(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
371 FREE(buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
372 return (tmp_array);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
373
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
374 } /* yahoo_list2array() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
375
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
376 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
377 Free's the memory associated with an array generated bu yahoo_list2array
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
378 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
379 void yahoo_arraykill(char **array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
380 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
381 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
382
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
383 if (NULL == array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
384 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
385
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
386 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
387 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
388 FREE(array[nxtelem++]);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
389 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
390
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
391 FREE(array);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
392 } /* yahoo_arraykill() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
393
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
394 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
395 converts an array of strings to a comma seperated list
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
396 used primarily in conference code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
397
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
398 allocates a string in here.. needs to be freed by caller program
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
399 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
400 char *yahoo_array2list(char **array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
401 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
402 char *list = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
403 int nxtelem = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
404 int arraylength = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
405
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
406 if (NULL == array)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
407 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
408
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
409 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
410 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411 arraylength += strlen(array[nxtelem++]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
412 arraylength++; /* comma */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
413 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
415 nxtelem = 0; /* reset array counter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
417 /* allocate at least one - for NULL list - and to
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
418 allow my strcat to write past the end for the
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
419 last comma which gets converted to NULL */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
420 if (!(list = (char *) malloc(sizeof(char) * (arraylength + 1))))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
421 return NULL;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 memset(list, 0, (arraylength + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 while (array[nxtelem] != NULL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
426 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427 strcat(list, array[nxtelem++]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428 strcat(list, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
430 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 overwrite last ',' with a NULL
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
432 makes the string end with two null characters, but this way
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 handles empty lists gracefully
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435 list[arraylength - 1] = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
436
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
437 return (list);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
438 } /* yahoo_array2list() */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440 /* Free a buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
441 static void yahoo_free_buddies(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
442 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
443 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
444
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
445 if (!ctx->buddies)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
446 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
447 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
448 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
449
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
450 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
451 while (ctx->buddies[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
452 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
453 FREE(ctx->buddies[i]->group);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
454 FREE(ctx->buddies[i]->id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
455 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
456 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
457
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
458 FREE(ctx->buddies);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
459 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
460
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
461 /* Free a identities list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462 static void yahoo_free_identities(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
463 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
464 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
465
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466 if (!ctx->identities)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
467 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
468 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
469 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
470
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
471 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472 while (ctx->identities[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
474 FREE(ctx->identities[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
475 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
476 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
477
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
478 FREE(ctx->identities);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
479 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_free_identities: done\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
480 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
481
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
482 #if 0 /* not used at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
483 static void yahoo_hexdump(char *label, unsigned char *data, int datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
484 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
485 int i, j;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
486 int val, skipped_last;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
487 char current[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
488 char last[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
489 char tmp[15];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
490 char outline[100];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
491 static int last_datalen = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
492 static unsigned char *last_data = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
493
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
494 if (last_data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
495 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 if (last_datalen == datalen && !memcmp(data, last_data, datalen))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
497 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
498 printf("\n%s: <same as last dump>\n", label);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
500 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501 FREE(last_data);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
502 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
503
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504 /* Copy the packet so we can don't duplicate it next time. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
505 last_datalen = datalen;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
506 if (!(last_data = (unsigned char *) malloc(datalen))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
507 FREE(last_data);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
508 return;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
509 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
510 memcpy(last_data, data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
511
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 /* Handle printing the full entry out */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
514 printf("%s:\n", label);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
515
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
516 skipped_last = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
517 last[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
518 for (j = 0; j * 16 < datalen; j++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
519 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
520 current[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
521
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
522 /* Print out in hex */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
523 for (i = j * 16; i < (j * 16 + 16); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
524 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
525 if (i < datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
526 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
527 val = data[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
528 sprintf(tmp, "%.2X ", val);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
529 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
530 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
531 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
532 sprintf(tmp, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
533 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
534 strcat(current, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
535 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
536
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
537 /* Print out in ascii */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
538 strcat(current, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
539 for (i = j * 16; i < (j * 16) + 16; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
540 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
541 if (i < datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
542 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
543 if (isprint(data[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
544 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
545 sprintf(tmp, "%c", data[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
546 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
547 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
548 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
549 sprintf(tmp, ".");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
550 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
551 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
552 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
553 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
554 sprintf(tmp, " ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
555 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
556 strcat(current, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
557 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
558
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
559 outline[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
560 if (!strcmp(current, last))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
561 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
562 if (!skipped_last)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
563 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
564 strcpy(outline, " ....:\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
565 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
566 skipped_last = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
567 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
568 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
569 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
570 sprintf(outline, " %.4d: %s\n", j * 16, current);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
571 skipped_last = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
572 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
573 printf("%s", outline);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
574 strcpy(last, current);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
575 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
576
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
577 if (skipped_last)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
578 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
579 printf("%s", outline);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
580 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
581 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
582 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
583 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
584
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
585 static int yahoo_socket_connect(struct yahoo_context *ctx, char *host,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
586 int port)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
587 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
588 struct sockaddr_in serv_addr;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
589 struct hostent *server;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
590 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
591 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
592
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
593 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
594 "[libyahoo] yahoo_socket_connect - starting [%s:%d]\n", host, port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
595
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
596 if (!ctx || !host || !port)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
597 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
598 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
599 "[libyahoo] yahoo_socket_connect - nulls\n");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
600 return -1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
601 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
602
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
603 if (!(server = gethostbyname(host)))
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
604 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
605 printf("[libyahoo] failed to look up server (%s:%d): %s\n", host, port, hstrerror(h_errno));
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
606 return -1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
607 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
608
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
609 if ((servfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
610 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
611 return -1;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
612 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
613
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
614 memset(&serv_addr, 0, sizeof(serv_addr));
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
615 serv_addr.sin_family = AF_INET;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
616 memcpy(&serv_addr.sin_addr.s_addr, server->h_addr, server->h_length);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 serv_addr.sin_port = htons(port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
618
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
619 /* XXX should put timeouts on the connect()'s -mid */
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
620 res = -1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
621 if (ctx->connect_mode == YAHOO_CONNECT_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
622 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
623 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
624 res =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
625 Rconnect(servfd, (struct sockaddr *) &serv_addr,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
626 sizeof(serv_addr));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
627 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
628 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
629 else if (ctx->connect_mode == YAHOO_CONNECT_SOCKS5)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
631 #if defined(WITH_SOCKS5)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
632 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
633 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
634 else if (ctx->connect_mode == YAHOO_CONNECT_NORMAL ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
635 ctx->connect_mode == YAHOO_CONNECT_HTTP ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
637 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 res =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
639 connect(servfd, (struct sockaddr *) &serv_addr,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
640 sizeof(serv_addr));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
641 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
642 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
643 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
644 printf("[libyahoo] unhandled connect mode (%d).\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645 ctx->connect_mode);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
646 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
647 return -1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
648 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
649
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
650 if (res < 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
651 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
652 printf("[libyahoo] failed to connect to server (%s:%d): %s\n",
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
653 host, port, strerror(errno));
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
654 close(servfd);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
655 return -1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
656 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
657
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
658 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
659 "[libyahoo] yahoo_socket_connect - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
660 return servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
661 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
662
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
663 /* really ugly brute force approach - someone find a GPL'd/free
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
664 equivalent and replace this p.o.s. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
665 static char *yahoo_urlencode(char *data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
666 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
667 static char *tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
668 char buf[4];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
669 int i, len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
670
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
671 len = 3 * strlen(data) + 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
672
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
673 if (tmp)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
674 FREE(tmp);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
675
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
676 if (!data)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
677 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
678
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
679 /* change this at some point to re-use the buffer, no sense
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
680 allocating repeatedly */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
681 if (!(tmp = (char *) malloc(len)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
682 return NULL;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
683 tmp[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
684
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
685 for (i = 0; i < strlen(data); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
686 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
687 if (isdigit((int) (data[i])) ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
688 isalpha((int) data[i]) || data[i] == '_')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
689 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
690 buf[0] = data[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
691 buf[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
692 strcat(tmp, buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
693 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
694 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
695 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
696 sprintf(buf, "%%%.2X", data[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
697 strcat(tmp, buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
698 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
699 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
700
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
701 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
702 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
703
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
704 static int yahoo_addtobuffer(struct yahoo_context *ctx, char *data,
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
705 int datalen)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
706 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
707 //yahoo_hexdump("yahoo_addtobuffer", data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
708
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
709 /* Check buffer, increase size if necessary */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
710 if (!ctx->io_buf
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
711 || ((ctx->io_buf_maxlen - ctx->io_buf_curlen) < (datalen + 100)))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
712 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
713 char *new_io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
714
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
715 if (datalen < 10240)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
716 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
717 ctx->io_buf_maxlen += 10240;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
718 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
719 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
720 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
721 ctx->io_buf_maxlen += datalen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
722 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
723 if (!(new_io_buf = (char *) malloc(ctx->io_buf_maxlen)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
724 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
725
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
726 if (ctx->io_buf)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
727 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
728 memcpy(new_io_buf, ctx->io_buf, ctx->io_buf_curlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
729 FREE(ctx->io_buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
730 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
731
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
732 ctx->io_buf = new_io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
733 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
734
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
735 memcpy(ctx->io_buf + ctx->io_buf_curlen, data, datalen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
736 ctx->io_buf_curlen += datalen;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
737
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
738 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
739 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
740
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
741 static int yahoo_tcp_readline(char *ptr, int maxlen, int fd)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
742 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
743 int n, rc;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
744 char c;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
745
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
746 for (n = 1; n < maxlen; n++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
747 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
748 again:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
749
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
750 if ((rc = readall(fd, &c, 1)) == 1)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
751 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
752 *ptr++ = c;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
753 if (c == '\n')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
754 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
755 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
756 else if (rc == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
757 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
758 if (n == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
759 return (0); /* EOF, no data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
760 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
761 break; /* EOF, w/ data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
762 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
763 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
764 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
765 if (errno == EINTR)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
766 goto again;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
767 printf
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
768 ("Yahoo: Error reading from socket in yahoo_tcp_readline: %s.\n", strerror(errno));
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
769 return -1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
770 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
771 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
772
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
773 *ptr = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
774 return (n);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
775 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
776
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
777 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
778 * Published library interfaces
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
779 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
780
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
781 /* Initialize interface to yahoo library, sortof like a class object
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
782 creation routine. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
783 struct yahoo_context *yahoo_init(char *user, char *password,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
784 struct yahoo_options *options)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
785 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
786 struct yahoo_context *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
787
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
788 if (!user || !password)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
789 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
790 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
791 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
792
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
793 /* Allocate a new context */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
794 if (!(tmp = (struct yahoo_context *) calloc(1, sizeof(*tmp))))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
795 return NULL;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
796
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
797 /* Fill in any available info */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
798 if (!(tmp->user = strdup(user))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
799 yahoo_free_context(tmp);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
800 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
801 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
802 if (!(tmp->password = strdup(password))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
803 yahoo_free_context(tmp);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
804 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
805 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
806 if (options->proxy_host)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
807 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
808 if (!(tmp->proxy_host = strdup(options->proxy_host))) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
809 yahoo_free_context(tmp);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
810 return NULL;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
811 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
812 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
813 tmp->proxy_port = options->proxy_port;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
814 tmp->connect_mode = options->connect_mode;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
815
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
816 #if defined(WITH_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
817 if (connect_mode == YAHOO_CONNECT_SOCKS4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
818 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
819 static int did_socks_init = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
820
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
821 if (did_socks_init == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
822 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
823 SOCKSinit("libyahoo");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
824 did_socks_init = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
825 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
826 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
827 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
828
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
829 /* Fetch the cookies */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
830 if (!yahoo_fetchcookies(tmp))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
831 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
832 yahoo_free_context(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
833 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
834 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
835
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
836 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
837 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
838
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
839 /* Free a yahoo context */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
840 void yahoo_free_context(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
841 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
842 FREE(ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
843 FREE(ctx->password);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
844 FREE(ctx->proxy_host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
845 FREE(ctx->io_buf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
846 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
847 FREE(ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
848 FREE(ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
849
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
850 yahoo_free_buddies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
851 yahoo_free_identities(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
852
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
853 FREE(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
854 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
855
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
856 /* Turn a status code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
857 char *yahoo_get_status_string(int statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
858 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
859 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
860
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
861 for (i = 0; yahoo_status_codes[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
862 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
863 if (yahoo_status_codes[i].id == statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
864 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
865 return yahoo_status_codes[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
866 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
867 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
868 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
869 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
870
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
871 /* Turn a status code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
872 char *yahoo_get_status_append(int statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
873 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
874 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
875
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
876 for (i = 0; yahoo_status_append[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
877 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
878 if (yahoo_status_append[i].id == statuscode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
879 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
880 return yahoo_status_append[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
881 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
882 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
883 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
884 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
885
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
886 /* Turn a service code into it's corresponding string */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
887 char *yahoo_get_service_string(int servicecode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
888 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
889 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
890 char *name = "Unknown Service";
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
891 static char tmp[50];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
892
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
893 for (i = 0; yahoo_service_codes[i].label; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
894 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
895 if (yahoo_service_codes[i].id == servicecode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
896 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
897 name = yahoo_service_codes[i].label;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
898 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
899 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
900 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
901
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
902 snprintf(tmp, 50, "(%d) %s", servicecode, name);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
903 return tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
904 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
905
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
906 /* Return a malloc()'d copy of the users cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
907 int yahoo_fetchcookies(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
908 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
909 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
910 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
911 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
912 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
913 char *tmpstr;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
914
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
915 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
916 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
917 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
918 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
919
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
920 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
921
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
922 /* Check for cached cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
923 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
924 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
925 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
926 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
927 if (ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
928 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
929 FREE(ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
930 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
931
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
932 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
933 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
934 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
935 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
936 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
937 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
938 servfd = yahoo_socket_connect(ctx, YAHOO_AUTH_HOST, YAHOO_AUTH_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
939 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
940 if (servfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
941 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
942 printf("[libyahoo] failed to connect to pager auth server.\n");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
943 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
944 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
945
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
946 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
947 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
948 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
949 strcat(buffer, "http://" YAHOO_AUTH_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
950 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
951 strcat(buffer, "/config/ncclogin?login=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
952 if (ctx->login_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
953 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
954 strcat(buffer, yahoo_urlencode(ctx->login_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
955 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
956 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
957 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
958 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
959 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
960 strcat(buffer, "&passwd=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
961 strcat(buffer, yahoo_urlencode(ctx->password));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
962 strcat(buffer, "&n=1 HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
963 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
964 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
965 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
966
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
967 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
968 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
969 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
970 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
971 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
972
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
973 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
974 "[libyahoo] yahoo_fetchcookies: writing buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
975
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
976 ctx->cookie = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
977 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
978 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
979 /* strip out any non-alphas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
980 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
981 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
982 if (!isprint((int) buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
983 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
984 buffer[i] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
985 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
986 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
987
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
988 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
989 "[libyahoo] yahoo_fetchcookies: read buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
990
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
991 if (!strcasecmp(buffer, "ERROR: Invalid NCC Login"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
992 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
993 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
994 "[libyahoo] yahoo_fetchcookies: password was invalid\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
995 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
996 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
997
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
998 if (!strncasecmp(buffer, "Set-Cookie: Y=", 14))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
999 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1000 FREE(ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1001 ctx->cookie = strdup(buffer + 12);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1002
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1003 tmpstr = strchr(ctx->cookie, ';');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1004 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1005 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1006 *tmpstr = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1007 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1008 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1009 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1010 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1011 "[libyahoo] yahoo_fetchcookies: closing server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1012 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1013 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1014 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1015 "[libyahoo] yahoo_fetchcookies: closed server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1016
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1017 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1018 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1019 tmpstr = strstr(ctx->cookie, "n=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1020 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1021 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1022 ctx->login_cookie = strdup(tmpstr + 2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1023 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1024
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1025 tmpstr = strchr(ctx->login_cookie, '&');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1026 if (tmpstr)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1027 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1028 *tmpstr = '\0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1029 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1030 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1031
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1032 if (ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1033 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1034 "[libyahoo] yahoo_fetchcookies: cookie (%s)\n", ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1035 if (ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1036 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1037 "[libyahoo] yahoo_fetchcookies: login cookie (%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1038 ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1039
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1040 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_fetchcookies: done\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1041
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1042 return 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1043 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1044
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1045 /* Add a buddy to your buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1046 int yahoo_add_buddy(struct yahoo_context *ctx, char *addid,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1047 char *active_id, char *group, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1048 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1049 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1050 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1051
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1052 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1053 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1054 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1055 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1056
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1057 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1058 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1059 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1060 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1061 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1062 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1063 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1064 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1065 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1066 "[libyahoo] yahoo_add_buddy - connecting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1067 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1068 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1069 if (servfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1070 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1071 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1072 "[libyahoo] yahoo_add_buddy: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1073 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1074 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1075
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1076 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1077 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1078 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1079 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1080 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1081 strcat(buffer, "/config/set_buddygrp?.bg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1082 strcat(buffer, yahoo_urlencode(group));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1083 strcat(buffer, "&.src=bl&.cmd=a&.bdl=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1084 strcat(buffer, yahoo_urlencode(addid));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1085 strcat(buffer, "&.id=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1086 strcat(buffer, yahoo_urlencode(active_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1087 strcat(buffer, "&.l=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1088 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1089 strcat(buffer, "&.amsg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1090 strcat(buffer, yahoo_urlencode(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1091 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1092
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1093 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1094 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1095 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1096 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1097 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1098 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1099
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1100 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1101 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1102 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1103 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1104 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1105
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1106 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1107 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1108 /* just dump the output, I don't care about errors at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1109 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1110 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1111 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1112
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1113 /* indicate success for now with 0 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1114 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy: finished\n");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1115 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1116 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1117
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1118 /* Remove a buddy from your buddy list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1119 int yahoo_remove_buddy(struct yahoo_context *ctx, char *addid,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1120 char *active_id, char *group, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1121 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1122 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1123 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1124
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1125 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1126 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1127 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1128 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1129
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1130 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1131 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1132 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1133 "[libyahoo] yahoo_add_buddy - connecting via proxy\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1134 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1135 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1136 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1137 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1138 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_add_buddy - connecting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1139 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1140 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1141 if (servfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1142 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1143 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1144 "[libyahoo] yahoo_add_buddy: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1145 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1146 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1147
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1148 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1149 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1150 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1151 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1152 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1153 strcat(buffer, "/config/set_buddygrp?.bg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1154 strcat(buffer, yahoo_urlencode(group));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1155 strcat(buffer, "&.src=bl&.cmd=d&.bdl=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1156 strcat(buffer, yahoo_urlencode(addid));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1157 strcat(buffer, "&.id=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1158 strcat(buffer, yahoo_urlencode(active_id));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1159 strcat(buffer, "&.l=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1160 strcat(buffer, yahoo_urlencode(ctx->user));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1161 strcat(buffer, "&.amsg=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1162 strcat(buffer, yahoo_urlencode(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1163 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1164
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1165 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1166 strcat(buffer, "Host: " YAHOO_DATA_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1167 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1168 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1169 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1170 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1171
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1172 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1173 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1174 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1175 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1176 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1177
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1178 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1179 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1180 /* just dump the output, I don't care about errors at the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1181 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1182 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1183 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1184
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1185 /* indicate success for now with 1 */
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1186 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1187 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1188
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1189 /* Retrieve the configuration from the server */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1190 int yahoo_get_config(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1191 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1192 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1193 int i, j;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1194 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1195 int commas;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1196 int in_section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1197 struct yahoo_buddy **buddylist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1198 int buddycnt = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1199 int nextbuddy = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1200
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1201 /* Check for cached cookie */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1202 if (!ctx || !ctx->cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1203 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1204 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1205 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1206
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1207 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1208
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1209 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1210 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1211 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1212 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1213 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1214 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1215 servfd = yahoo_socket_connect(ctx, YAHOO_DATA_HOST, YAHOO_DATA_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1216 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1217 if (servfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1218 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1219 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1220 "[libyahoo] yahoo_get_config: failed to connect\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1221 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1222 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1223
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1224 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1225 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1226 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1227 strcat(buffer, "http://" YAHOO_DATA_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1228 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1229 strcat(buffer, "/config/get_buddylist?.src=bl HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1230 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1231 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1232 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1233 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1234
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1235 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1236 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1237 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1238 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1239 }
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1240
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1241 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config: sending '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1242 buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1243
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1244 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1245 while (yahoo_tcp_readline(buffer, 5000, servfd) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1246 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1247 /* strip out any non-alphas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1248 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1249 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1250 if (!isprint((int) buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1251 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1252 for (j = i; j < strlen(buffer); j++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1253 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1254 buffer[j] = buffer[j + 1];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1255 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1256 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1257 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1258
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1259 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1260 "[libyahoo] yahoo_get_config: read '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1261
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1262 if (!strcasecmp(buffer, "BEGIN IDENTITIES"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1263 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1264 in_section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1265 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1266 else if (!strcasecmp(buffer, "END IDENTITIES"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1267 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1268 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1269 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1270 else if (!strcasecmp(buffer, "BEGIN BUDDYLIST"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1271 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1272 in_section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1273 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1274 else if (!strcasecmp(buffer, "END BUDDYLIST"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1275 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1276 in_section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1277 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1278 else if (in_section == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1279 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1280 char *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1281
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1282 /* count the commas */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1283 commas = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1284 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1285 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1286 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1287 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1288 commas++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1289 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1290 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1291
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1292 /* make sure we've gotten rid of any previous identities array */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1293 yahoo_free_identities(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1294
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1295 /* allocate the array to hold the list of identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1296 ctx->identities = (char **) calloc(commas + 2, sizeof(char *));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1297
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1298 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1299 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1300 tmp = strtok(buffer, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1301 while (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1302 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1303 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1304 "[libyahoo] yahoo_get_config: retrieved "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1305 "identity '%s'\n", tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1306 ctx->identities[i++] = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1307 tmp = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1308 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1309 ctx->identities[i] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1310 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1311 else if (in_section == 2)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1312 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1313 char *group;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1314 char *tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1315 struct yahoo_buddy **tmp_buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1316 struct yahoo_buddy *tmpbuddy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1317 int tmp_buddycnt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1319 /* count the buddies on this line */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1320 tmp_buddycnt = buddycnt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1321 for (i = 0; i < strlen(buffer); i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1322 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1323 if (buffer[i] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1324 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1325 buddycnt++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1326 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1327 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1328 buddycnt++; /* always one more than comma count */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1329
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1330 /* allocate the array to hold the list of buddy */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1331 tmp_buddylist = (struct yahoo_buddy **)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1332 malloc(sizeof(struct yahoo_buddy *) * (buddycnt + 1));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1333
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1334 /* Free and copy the old one if necessary */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1335 if (buddylist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1336 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1337 memcpy(tmp_buddylist, buddylist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1338
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1339 (tmp_buddycnt + 1) * sizeof(struct yahoo_buddy *));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1340
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1341 FREE(buddylist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1342 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1343 buddylist = tmp_buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1344
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1345 /* Parse through the list and get all the entries */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1346 tmp = strtok(buffer, ",:");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1347 group = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1348 while (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1349 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1350 if (tmp == buffer) /* group name */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1351 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1352 group = tmp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1353 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1354 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1355 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1356 tmpbuddy = (struct yahoo_buddy *)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1357
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1358 malloc(sizeof(struct yahoo_buddy));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1359
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1360 tmpbuddy->id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1361 tmpbuddy->group = strdup(group);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1362 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1363 "[libyahoo] yahoo_get_config: retrieved buddy '%s:%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1364 group, tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1365 buddylist[nextbuddy++] = tmpbuddy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1366 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1367 tmp = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1368 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1369 buddylist[nextbuddy] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1370 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1371 else if (!strncasecmp(buffer, "Mail=", strlen("Mail=")))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1372 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1373 ctx->mail = atoi(buffer + strlen("Mail="));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1374 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1375 "[libyahoo] yahoo_get_config: retrieved mail flag '%d'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1376 ctx->mail);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1377 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1378 else if (!strncasecmp(buffer, "Login=", strlen("Login=")))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1379 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1380 FREE(ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1381 ctx->login_id = strdup(buffer + strlen("Login="));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1382 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1383 "[libyahoo] yahoo_get_config: retrieved login id '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1384 ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1385 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1386 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1387 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1388 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1389
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1390 yahoo_free_buddies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1391 ctx->buddies = buddylist;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1392
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1393 /* fill in a bogus login_in, just in case */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1394 if (!ctx->login_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1395 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1396 ctx->login_id = strdup(ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1397 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1398
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1399 /* refetch the cookie if the login_id is different so that
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1400 it will have the correct info in it */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1401 if (strcmp(ctx->login_id, ctx->user))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1402 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1403 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1404 "[libyahoo] yahoo_get_config - refetching cookies\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1405 yahoo_fetchcookies(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1406 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1407
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1408 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_get_config - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1409
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1410 return 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1411 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1412
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1413 /* Log in, optionally activating other secondary identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1414 int yahoo_cmd_logon(struct yahoo_context *ctx, unsigned int initial_status)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1415 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1416 char login_string[5000]; /* need to change to malloc ASAP */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1417 char *tmpid;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1418 char **identities = ctx->identities;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1419 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1420
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1421 if (!ctx || !ctx->login_cookie)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1422 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1423 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1424 "[libyahoo] yahoo_cmd_logon: logon called without "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1425 "context and/or cookie.\n");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1426 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1427 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1428
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1429 strcpy(login_string, ctx->login_cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1430 /* testing with new logon code */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1431 // strcpy(login_string, "$1$_2S43d5f$XXXXXXXXWtRKNclLWyy8C.");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1432
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1433 login_string[strlen(login_string) + 1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1434 login_string[strlen(login_string)] = 1; /* control-A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1435
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1436 strcat(login_string, ctx->user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1437
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1438 /* Send all identities */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1439 if (identities)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1440 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1441 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1442 tmpid = identities[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1443 while (tmpid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1444 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445 if (strcasecmp(tmpid, ctx->user))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1446 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1447 strcat(login_string, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1448 strcat(login_string, tmpid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1449 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1450 tmpid = identities[i++];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1451 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1452 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1453
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1454 if(!yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGON, ctx->user, login_string,
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1455 initial_status))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1456 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1457
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1458 /* something that the windows one sends, not sure what it is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1459 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1460 login_string[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1461 strcat(login_string, "C=0\002");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1462 strcat(login_string, "F=0,P=0,H=0,S=0,W=0,O=0\002");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1463 strcat(login_string, "M=0,P=0,C=0,S=0");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1464 yahoo_sendcmd(ctx, YAHOO_SERVICE_PASSTHROUGH2, ctx->user, login_string,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1465 0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1466 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1467
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1468 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1469 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1470
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1471 int yahoo_connect(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1472 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1473 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1474
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1475 res = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1476 ctx->sockfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1477
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1478 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1479
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1480 switch (ctx->connect_mode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1481 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1482 case YAHOO_CONNECT_SOCKS4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1483 case YAHOO_CONNECT_SOCKS5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1484 case YAHOO_CONNECT_NORMAL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1485 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1486 "[libyahoo] yahoo_connect - establishing socket connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1487 ctx->sockfd =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1488 yahoo_socket_connect(ctx, YAHOO_PAGER_HOST, YAHOO_PAGER_PORT);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1489 if (ctx->sockfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1490 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1491 printf("[libyahoo] couldn't connect to pager host\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1492 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1493 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1494 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1495
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1496 case YAHOO_CONNECT_HTTP:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1497 case YAHOO_CONNECT_HTTPPROXY:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1498 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1499 "[libyahoo] yahoo_connect - no connect for HTTP\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1500 /* no pager connection will be established for this */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1501 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1502
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1503 default:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1504 printf("[libyahoo] unhandled connect mode (%d)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1505 ctx->connect_mode);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1506 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1507
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1508 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_connect - finished\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1509 return (1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1510 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1511
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1512 /* Send a packet to the server via http connection method */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1513 /* at moment only handles regular http connection, once I have that
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1514 working, this code needs to also do http proxy connections as well */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1515 int yahoo_sendcmd_http(struct yahoo_context *ctx, struct yahoo_rawpacket *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1516 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1517 int sockfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1518 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1519 char tmpbuf[1000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1520 int size;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1521 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1522
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1523 if (!ctx || !pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1524 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1525 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1526 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1527
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1528 size = YAHOO_PACKET_HEADER_SIZE + strlen(pkt->content) + 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1529
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1530 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1531 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1532 sockfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1533 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1534 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1535 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1536 sockfd = yahoo_socket_connect(ctx, YAHOO_PAGER_HTTP_HOST,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1537 YAHOO_PAGER_HTTP_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1538 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1539 if (sockfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1540 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1541 printf("[libyahoo] failed to connect to pager http server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1542 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1543 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1544
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1545 strcpy(buffer, "POST ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1546 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1547 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1548 strcat(buffer, "http://" YAHOO_PAGER_HTTP_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1549 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1550 strcat(buffer, "/notify HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1551
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1552 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1553 strcat(buffer, "Host: " YAHOO_PAGER_HTTP_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1554 snprintf(tmpbuf, 1000, "Content-Length: %d\r\n", size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1555 strcat(buffer, tmpbuf);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1556
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1557 strcat(buffer, "Pragma: No-Cache\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1558
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1559 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1560 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1561 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1562 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1563
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1564 if ((writeall(sockfd, buffer, strlen(buffer)) < strlen(buffer)) ||
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1565 (writeall(sockfd, pkt, size) < size) ||
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1566 (writeall(sockfd, "\r\n", 2) < 2))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1567 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1568 close(sockfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1569 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1570 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1571
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1572 /* now we need to read the results */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1573 /* I'm taking the cheat approach and just dumping them onto the
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1574 buffer, headers and all, the _skip_to_YHOO_ code will handle it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1575 for now */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1576
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1577 while ((res = readall(sockfd, buffer, sizeof(buffer))) > 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1578 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1579 if (res == -1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1580 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1581 printf("[libyahoo] Error reading data from server.\n");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1582 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1583 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1584 if (!yahoo_addtobuffer(ctx, buffer, res))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1585 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1586 close(sockfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1587 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1588 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1589 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1590 close(sockfd);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1591
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1592 return (1);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1593 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1594
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1595 /* Send a packet to the server, called by all routines that want to issue
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1596 a command. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1597 int yahoo_sendcmd(struct yahoo_context *ctx, int service, char *active_nick,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1598 char *content, unsigned int msgtype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1599 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1600 int size;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1601 struct yahoo_rawpacket *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1602 int maxcontentsize;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1603
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1604 /* why the )&*@#$( did they hardwire the packet size that gets sent
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1605 when the size of the packet is included in what is sent, bizarre */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1606 size = 4 * 256 + YAHOO_PACKET_HEADER_SIZE;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1607 if (!(pkt = (struct yahoo_rawpacket *) calloc(1, size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1608 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1609
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1610 /* figure out max content length, including trailing null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1611 maxcontentsize = size - sizeof(struct yahoo_rawpacket);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1612
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1613 /* Build the packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1614 strcpy(pkt->version, YAHOO_PROTOCOL_HEADER);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1615 yahoo_storeint(pkt->len, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1616 yahoo_storeint(pkt->service, service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1617
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1618 /* not sure if this is valid with YPNS1.4 or if it needs 2.0 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1619 yahoo_storeint(pkt->msgtype, msgtype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1620
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1621 /* Not sure, but might as well send for regular connections as well. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1622 yahoo_storeint(pkt->magic_id, ctx->magic_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1623 strcpy(pkt->nick1, ctx->login_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1624 strcpy(pkt->nick2, active_nick);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1625 strncpy(pkt->content, content, maxcontentsize);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1626
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1627 // yahoo_hexdump("send_cmd", (char *) pkt, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1628
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1629 switch (ctx->connect_mode)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1630 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1631 case YAHOO_CONNECT_SOCKS4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1632 case YAHOO_CONNECT_SOCKS5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1633 case YAHOO_CONNECT_NORMAL:
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1634 if (writeall(ctx->sockfd, pkt, size) < size)
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1635 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1636 printf("sendcmd: writeall failed\n");
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1637 close(ctx->sockfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1638 FREE(pkt);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1639 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1640 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1641 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1642 case YAHOO_CONNECT_HTTP:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1643 case YAHOO_CONNECT_HTTPPROXY:
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1644 if (!yahoo_sendcmd_http(ctx, pkt))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1645 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1646 printf("sendcmd_http failed\n");
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1647 FREE(pkt);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1648 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1649 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1650 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1651 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1652
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1653 FREE(pkt);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1654 return (1);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1655 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1656
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1657 int yahoo_cmd_ping(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1658 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1659 return yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1660 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1661
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1662 int yahoo_cmd_idle(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1663 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1664 return yahoo_sendcmd(ctx, YAHOO_SERVICE_IDLE, ctx->user, "", 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1665 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1666
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1667 int yahoo_cmd_sendfile(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1668 char *touser, char *msg, char *filename)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1669 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1670 yahoo_dbg_Print("libyahoo", "yahoo_cmd_sendfile not implemented yet!");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1671 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1672 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1673
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1674 int yahoo_cmd_msg(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1675 char *touser, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1676 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1677 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1678
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1679 if (!(content = (char *) malloc(strlen(touser) + strlen(msg) + 5)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1680 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1681
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1682 if (strlen(touser))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1683 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1684 sprintf(content, "%s,%s", touser, msg);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1685 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1686 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1687 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1688 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1689 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1690 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1691
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1692 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1693 return (1);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1694 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1695
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1696 int yahoo_cmd_msg_offline(struct yahoo_context *ctx, char *active_user,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1697 char *touser, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1698 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1699 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1700
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1701 if (!(content = (char *) malloc(strlen(touser) + strlen(msg) + 5)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1702 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1703
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1704 if (strlen(touser))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1705 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1706 sprintf(content, "%s,%s", touser, msg);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1707 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_MESSAGE, active_user,
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1708 content, YAHOO_MSGTYPE_KNOWN_USER))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1709 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1710 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1711 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1712 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1713 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1714
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1715 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1716 return (1);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1717 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1718
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1719 /* appended the " " so that won't trigger yahoo bug - hack for the moment */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1720 int yahoo_cmd_set_away_mode(struct yahoo_context *ctx, int status, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1721 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1722 char statusstring[500];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1723
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1724 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1725 "[libyahoo] yahoo_cmd_set_away_mode: set status (%d), msg(%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1726 status, yahoo_dbg_NullCheck(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1727
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1728 if (status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1729 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1730 if (msg && msg[0] != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1731 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1732 snprintf(statusstring, 500, "%d%c%s", status, 1, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1733 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1734 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1735 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1736 snprintf(statusstring, 500, "%d%c---", status, 1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1737 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1738 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1739 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1740 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1741 snprintf(statusstring, 500, "%d", status);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1742 }
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1743 return yahoo_sendcmd(ctx, YAHOO_SERVICE_ISAWAY, ctx->user, statusstring, 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1744 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1745
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1746 int yahoo_cmd_set_back_mode(struct yahoo_context *ctx, int status, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1747 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1748 char statusstring[500];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1749
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1750 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1751 "[libyahoo] yahoo_cmd_set_back_mode: set status (%d), msg(%s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1752 status, yahoo_dbg_NullCheck(msg));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1753
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1754 snprintf(statusstring, 500, "%d%c%s ", status, 1, msg ? msg : "");
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1755 return yahoo_sendcmd(ctx, YAHOO_SERVICE_ISBACK, ctx->user, statusstring, 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1756 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1757
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1758 int yahoo_cmd_activate_id(struct yahoo_context *ctx, char *newid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1759 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1760 if (strlen(newid))
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1761 return yahoo_sendcmd(ctx, YAHOO_SERVICE_IDACT, newid, newid, 0);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1762 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1763 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1764
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1765 int yahoo_cmd_user_status(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1766 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1767 return yahoo_sendcmd(ctx, YAHOO_SERVICE_USERSTAT, ctx->user, "", 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1768 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1769
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1770 int yahoo_cmd_logoff(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1771 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1772 return yahoo_sendcmd(ctx, YAHOO_SERVICE_LOGOFF, ctx->user, ctx->user, 0);
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1773 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1774
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1775 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1776
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1777 yahoo_cmd_start_conf()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1778
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1779 Starts a conference. (You create the conference)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1780
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1781 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1782 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1783 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1784 You create this id to start the conference, but pass it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1785 along after that.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1786 char **userlist == Users to invite. Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1787 car *msg == Invitiation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1788 int type == 0 - normal, 1 - voice (not supported yet)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1789
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1790 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1791 id^invited-users^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1792 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1793 int yahoo_cmd_start_conf(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1794 char **userlist, char *msg, int type)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1795 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1796 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1797 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1798 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1799 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1800
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1801 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1802 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1803 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1804
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1805 int size = strlen(conf_id) + strlen(msg) + 8 + strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1806
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1807 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1808 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1809 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1810
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1811 cont_len = snprintf(content,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1812 size - 1,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1813 "%s%c%s%c%s%c%d",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1814 conf_id, ctrlb, new_userlist, ctrlb, msg, ctrlb, type);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1815
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1816 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1817 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1818 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1819 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_start_conf: %s\n",
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1820 unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1821 FREE(unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1822 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1823 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1824 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFINVITE, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1825 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1826 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1827 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1828 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1829 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1830
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1831 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1832 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1833 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1834 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1835
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1836 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1837 yahoo_cmd_conf_logon()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1838
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1839 Reply to a conference invitation, logs you into conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1840
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1841 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1842 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1843 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1844 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1845 char *host == The person that sent you the invitation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1846 char **userlist == Everyone else invited. This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1847 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1848
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1849 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1850 id^all-invited-users-and-host
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1851
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1852 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1853 int yahoo_cmd_conf_logon(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1854 char *host, char **userlist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1855 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1856 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1857 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1858 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1859 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1860
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1861 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1862 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1863 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1864
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1865 int size = strlen(conf_id) + strlen(host) + 8 + strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1866
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1867 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1868 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1869 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1870
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1871 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1872 sprintf(content, "%s%c%s,%s", conf_id, ctrlb, host, new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1873
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1874 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1875 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1876 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1877 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logon: %s\n",
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1878 unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1879 FREE(unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1880 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1881 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1882 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGON, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1883 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1884 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1885 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1886 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1887 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1888
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1889 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1890 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1891 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1892 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1893
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1894 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1895
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1896 yahoo_cmd_decline_conf()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1897
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1898 Reply to a conference invitation, decline offer.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1899
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1900 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1901 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1902 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1903 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1904 char *host == The person that sent you the invitation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1905 char **userlist == Everyone else invited. This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1906 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1907 (Null if replying to a conference additional invite )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1908 char *msg == Reason for declining.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1909
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1910 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1911 id^all-invited-users-and-host^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1912
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1913 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1914 int yahoo_cmd_decline_conf(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1915 char *host, char **userlist, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1916 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1917 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1918 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1919 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1920
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1921 int size =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1922 strlen(conf_id) + strlen(host) + strlen(msg) + 8 +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1923 strlen(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1924
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1925 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1926 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1927 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1928
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1929 sprintf(content, "%s%c%s,%s%c%s", conf_id, ctrlb, host, new_userlist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1930 ctrlb, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1931
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1932 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_decline_conf: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1933 content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1934 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFDECLINE, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1935 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1936 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1937 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1938 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1939 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1940
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1941 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1942 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1943 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1944 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1945
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1946 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1947
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1948 yahoo_cmd_conf_logoff()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1949
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1950 Logoff of a conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1951
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1952 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1953 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1954 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1955 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1956 char **userlist == Everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1957 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1958
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1959 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1960 id^all-invited-users
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1961
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1962 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1963
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1964 int yahoo_cmd_conf_logoff(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1965 char **userlist)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1966 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1967 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1968 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1969 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1970
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1971 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1972 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1973 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1974 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1975
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1976 int size = strlen(conf_id) + strlen(new_userlist) + 8;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1977
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1978 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1979 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1980 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1981
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1982 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1983 snprintf(content, size, "%s%c%s", conf_id, ctrlb, new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1984 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1985 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1986 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1987 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_logoff: %s\n",
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1988 unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1989 FREE(unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1990 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1991 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1992 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFLOGOFF, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1993 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1994 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1995 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1996 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
1997 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1998
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1999 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2000 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2001 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2002 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2003
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2004 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2005
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2006 yahoo_cmd_conf_invite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2007
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2008 Invite another user to an already running conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2009
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2010 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2011 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2012 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2013 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2014 char *invited_user == The person being invited to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2015 char **userlist == Everyone else in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2016 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2017 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2018
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2019 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2020 id^invited-user^who-else-in-conf^who-else-in-conf^msg^0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2021
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2022 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2023
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2024 int yahoo_cmd_conf_invite(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2025 char **userlist, char *invited_user, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2026 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2027 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2028 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2029 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2030
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2031 int size = strlen(conf_id) + strlen(invited_user)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2032 + (2 * strlen(new_userlist)) + strlen(msg) + 7;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2033
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2034 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2035 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2036 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2037
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2038 sprintf(content, "%s%c%s%c%s%c%s%c%s%c0", conf_id, ctrlb,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2039 invited_user, ctrlb, new_userlist, ctrlb,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2040 new_userlist, ctrlb, msg, ctrlb);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2041 yahoo_dbg_Print("libyahoo", "[libyahoo] yahoo_cmd_conf_invite: %s\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2042 content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2043 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFADDINVITE, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2044 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2045 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2046 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2047 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2048 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2049
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2050 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2051 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2052 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2053 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2055 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2056
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2057 yahoo_cmd_conf_msg()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2058
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2059 Send a message to everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2060
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2061 Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2062 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2063 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2064 This comes from the invitiation.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2065 char **userlist == Everyone in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2066 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2067 char *msg == Message to send.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2068
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2069 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2070 id^all-invited-users^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2071
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2072 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2073 int yahoo_cmd_conf_msg(struct yahoo_context *ctx, char *conf_id,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2074 char **userlist, char *msg)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2075 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2076 char ctrlb = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2077 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2078 int cont_len = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2079
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2080 #ifdef ENABLE_LIBYAHOO_DEBUG
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2081 char *unraw_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2082 #endif /* def ENABLE_LIBYAHOO_DEBUG */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2083 char *new_userlist = yahoo_array2list(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2084
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2085 int size = strlen(conf_id) + strlen(new_userlist) + strlen(msg) + 8;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2086
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2087 if (!(content = (char *) malloc(size)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2088 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2089 memset(content, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2090
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2091 cont_len =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2092 snprintf(content, size, "%s%c%s%c%s", conf_id, ctrlb, new_userlist,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2093 ctrlb, msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2094 #ifdef ENABLE_LIBYAHOO_DEBUG
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2095 if ((unraw_msg = yahoo_unraw_buffer(content, cont_len)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2096 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2097 yahoo_dbg_Print("libyahoo", "yahoo_cmd_conf_msg: %s\n", unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2098 FREE(unraw_msg);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2099 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2100 #endif /* def ENABLE_LIBYAHOO_DEBUG */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2101 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_CONFMSG, ctx->user, content, 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2102 {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2103 FREE(new_userlist);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2104 FREE(content);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2105 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2106 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2107
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2108 FREE(new_userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2109 FREE(content);
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2110 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2111 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2112
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2113 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2114 * Free the rawpacket structure - primarily a placeholder
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2115 * since all static elements at the moment
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2116 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2117 void yahoo_free_rawpacket(struct yahoo_rawpacket *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2118 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2119 FREE(pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2120 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2121
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2122 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2123 * Free entire packet structure including string elements
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2124 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2125 void yahoo_free_packet(struct yahoo_packet *pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2126 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2127 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2128
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2129 if (pkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2130 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2131 FREE(pkt->real_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2132 FREE(pkt->active_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2133 FREE(pkt->conf_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2134 FREE(pkt->conf_host);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2135 FREE(pkt->conf_user);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2136 FREE(pkt->conf_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2137 FREE(pkt->cal_url);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2138 FREE(pkt->cal_timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2139 FREE(pkt->cal_title);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2140 FREE(pkt->cal_description);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2141 FREE(pkt->chat_invite_content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2142 FREE(pkt->msg_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2143 FREE(pkt->msg_timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2144 FREE(pkt->msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2145 FREE(pkt->file_from);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2146 FREE(pkt->file_flag);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2147 FREE(pkt->file_url);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2148 FREE(pkt->file_description);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2149 FREE(pkt->group_old);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2150 FREE(pkt->group_new);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2151 if (pkt->idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2152 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2153 for (i = 0; i < pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2154 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2155 yahoo_free_idstatus(pkt->idstatus[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2156 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2157 free(pkt->idstatus);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2158 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2159 free(pkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2160 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2161 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2162
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2163 void yahoo_free_idstatus(struct yahoo_idstatus *idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2164 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2165 if (!idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2166 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2167
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2168 FREE(idstatus->id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2169 FREE(idstatus->connection_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2170 FREE(idstatus->status_msg);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2171 FREE(idstatus);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2172 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2173
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2174 struct yahoo_packet *yahoo_parsepacket(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2175 struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2176 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2177 struct yahoo_packet *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2178
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2179 /* If no valid inpkt passed, return */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2180 if (!inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2181 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2182
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2183 /* Allocate the packet structure, zeroed out */
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2184 if (!(pkt = (struct yahoo_packet *) calloc(sizeof(*pkt), 1)))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
2185 return NULL;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2186
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2187 /* Pull out the standard data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2188 pkt->service = yahoo_makeint(inpkt->service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2189 pkt->connection_id = yahoo_makeint(inpkt->connection_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2190 pkt->real_id = strdup(inpkt->nick1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2191 pkt->active_id = strdup(inpkt->nick2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2192
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2193 pkt->magic_id = yahoo_makeint(inpkt->magic_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2194 pkt->unknown1 = yahoo_makeint(inpkt->unknown1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2195 pkt->msgtype = yahoo_makeint(inpkt->msgtype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2196
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2197 /* doing this seems like a cleaner approach, but am not sure if it is
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2198 a valid one */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2199 if (pkt->magic_id != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2200 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2201 ctx->magic_id = pkt->magic_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2202 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2203 if (pkt->connection_id != 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2204 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2205 ctx->connection_id = pkt->connection_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2206 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2207
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2208 /* Call a particular parse routine to pull out the content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2209 switch (pkt->service)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2210 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2211 case YAHOO_SERVICE_LOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2212 case YAHOO_SERVICE_LOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2213 case YAHOO_SERVICE_ISAWAY:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2214 case YAHOO_SERVICE_ISBACK:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2215 case YAHOO_SERVICE_USERSTAT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2216 case YAHOO_SERVICE_CHATLOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2217 case YAHOO_SERVICE_CHATLOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2218 case YAHOO_SERVICE_GAMELOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2219 case YAHOO_SERVICE_GAMELOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2220 yahoo_parsepacket_status(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2221 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2222 case YAHOO_SERVICE_IDACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2223 case YAHOO_SERVICE_IDDEACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2224 /* nothing needs done, only has main fields */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2225 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2226 case YAHOO_SERVICE_MESSAGE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2227 case YAHOO_SERVICE_SYSMESSAGE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2228 case YAHOO_SERVICE_CHATMSG:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2229 yahoo_parsepacket_message(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2230 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2231 case YAHOO_SERVICE_NEWMAIL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2232 case YAHOO_SERVICE_NEWPERSONALMAIL:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2233 yahoo_parsepacket_newmail(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2234 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2235 case YAHOO_SERVICE_CALENDAR:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2236 yahoo_parsepacket_calendar(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2237 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2238 case YAHOO_SERVICE_CHATINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2239 yahoo_parsepacket_chatinvite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2240 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2241 case YAHOO_SERVICE_NEWCONTACT:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2242 yahoo_parsepacket_newcontact(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2243 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2244 case YAHOO_SERVICE_GROUPRENAME:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2245 yahoo_parsepacket_grouprename(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2246 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2247 case YAHOO_SERVICE_CONFINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2248 yahoo_parsepacket_conference_invite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2249 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2250 case YAHOO_SERVICE_CONFLOGON:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2251 case YAHOO_SERVICE_CONFLOGOFF:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2252 yahoo_parsepacket_conference_user(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2253 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2254 case YAHOO_SERVICE_CONFDECLINE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2255 yahoo_parsepacket_conference_decline(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2256 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2257 case YAHOO_SERVICE_CONFADDINVITE:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2258 yahoo_parsepacket_conference_addinvite(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2259 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2260 case YAHOO_SERVICE_CONFMSG:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2261 yahoo_parsepacket_conference_msg(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2262 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2263 case YAHOO_SERVICE_PING:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2264 yahoo_parsepacket_ping(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2265 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2266 case YAHOO_SERVICE_FILETRANSFER:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2267 yahoo_parsepacket_filetransfer(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2268 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2269 default:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2270 yahoo_dbg_Print("libyahoo",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2271 "yahoo_parsepacket: can't parse packet type (%d)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2272 pkt->service);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2273 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2274 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2275
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2276 return pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2277 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2278
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2279 int yahoo_parsepacket_ping(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2280 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2281 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2282 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2283
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2284 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2285 content = inpkt->content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2286
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2287 pkt->msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2288 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2289 pkt->msg = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2290
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2291 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2292 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2293
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2294 int yahoo_parsepacket_newmail(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2295 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2296 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2297 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2298 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2299
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2300 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2301 content = inpkt->content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2302 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2303
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2304 if (pkt->service == YAHOO_SERVICE_NEWMAIL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2305 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2306 pkt->mail_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2307 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2308 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2309 pkt->mail_status = atoi(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2310 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2311 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2312 else if (pkt->service == YAHOO_SERVICE_NEWPERSONALMAIL)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2313 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2314 pkt->mail_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2315 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2316 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2317 pkt->mail_status = atoi(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2318 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2319 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2320
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2321 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2322 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2323
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2324 int yahoo_parsepacket_grouprename(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2325 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2326 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2327 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2328 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2329
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2330 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2331 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2332
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2333 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2334 pkt->group_old = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2335 pkt->group_new = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2336
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2337 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2338 delim[0] = 1; /* control-a */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2339 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2340
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2341 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2342 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2343 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2344 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2345
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2346 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2347 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2348 pkt->group_old = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2349 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2350 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2351
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2352 if (tmp) /* conference host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2353 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2354 pkt->group_new = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2355 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2356 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2357
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2358 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2359 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2360 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2361
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2362 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2363
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2364 yahoo_parsepacket_conference_invite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2365
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2366 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2367 id^host^invited-users^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2368
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2369 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2370 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2371 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2372 char *conf_host == The person inviting you to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2373 char **userlist == Everyone else invited to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2374 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2375 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2376 int conf_type == Type of conference ( 0 = text, 1 = voice )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2377
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2378 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2379 int yahoo_parsepacket_conference_invite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2380 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2381 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2382 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2383 char *tmp = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2384 size_t found = 0, len = yahoo_makeint(inpkt->len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2385
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2386 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2387 content = memdup(inpkt->content, len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2388
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2389 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2390 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2391 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2392 pkt->conf_user = pkt->active_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2393 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2394 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2395 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2396
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2397 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2398 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2399 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2400 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2401
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2402 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2403 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2404 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2405 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2406 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2407
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2408 if (tmp) /* conference host */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2409 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2410 pkt->conf_host = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2411 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2412 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2413
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2414 if (tmp) /* who else is invited */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2415 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2416 char *userlist = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2417
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2418 pkt->conf_userlist = yahoo_list2array(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2419 FREE(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2420 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2421 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2422
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2423 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2424 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2425 pkt->conf_msg = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2426 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2427 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2428
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2429 if (tmp) /* 0 == text chat 1 == voice chat */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2430 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2431 char *conftype = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2432
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2433 if (0 != conftype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2434 pkt->conf_type = atoi(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2435 FREE(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2436 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2437 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2438
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2439 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2440 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2441 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2442
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2443 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2444
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2445 yahoo_parsepacket_conference_decline()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2446
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2447 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2448 id^user-who-declined^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2449
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2450 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2451 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2452 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2453 char *conf_user == User who declined.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2454 char *msg == Reason for declining.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2455
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2456 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2457 int yahoo_parsepacket_conference_decline(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2458 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2459 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2460 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2461 char *tmp, delim[2];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2462
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2463 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2464 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2465
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2466 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2467 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2468 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2469 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2470 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2471 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2472 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2473
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2474 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2475 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2476 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2477
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2478 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2479 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2480 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2481 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2482
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2483 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2484 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2485 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2486 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2487 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2488 if (tmp) /* got the user who declined */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2489 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2490 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2491 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2492 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2493 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2494 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2495 pkt->conf_msg = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2496 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2497 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2498
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2499 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2500 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2501
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2502 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2503
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2504 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2505
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2506 yahoo_parsepacket_conference_addinvite()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2507
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2508 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2509 Msgtype == 1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2510 id^inviter^who-else-invited^who-else-in-conf^msg^0or1
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2511 Msgtype == 11
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2512 id^inviter^invited-user
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2513
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2514 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2515 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2516 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2517 char *conf_inviter == The person inviting you to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2518 char **userlist == Everyone else in conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2519 Null terminated array of strings.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2520 char *msg == Invitation message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2521 int conf_type == Type of conference ( 0 = text, 1 = voice )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2522
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2523 char *conf_user == User invited to conference (msgtype == 11)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2524 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2525 int yahoo_parsepacket_conference_addinvite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2526 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2527 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2528 char *content = 0, *tmp = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2529 size_t found = 0, len = yahoo_makeint(inpkt->len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2530
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2531 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2532 content = memdup(inpkt->content, len);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2533
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2534 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2535 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2536 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2537 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2538 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2539 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2540 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2541
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2542 if (pkt->msgtype == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2543 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2544 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2545 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2546 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2547 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2548
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2549 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2550 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2551 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2552 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2553 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2554 if (tmp) /* got the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2555 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2556 pkt->conf_inviter = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2557 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2558 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2559 if (tmp) /* got who-else-invited */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2560 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2561 /* don't use this field, its the same as the next one
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2562 so I'm going to use the second field */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2563 /* pkt->conf_userlist = yahoo_list2array(tmp); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2564 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2565 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2566 if (tmp) /* got the people in conference
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2567 not counting the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2568 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2569 char *userlist = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2570
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2571 pkt->conf_userlist = yahoo_list2array(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2572 FREE(userlist);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2573 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2574 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2575 if (tmp) /* got the message */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2576 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2577 pkt->conf_msg = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2578 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2579 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2580 if (tmp) /* 0 at the end */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2581 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2582 char *conftype = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2583
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2584 if (0 != conftype)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2585 pkt->conf_type = atoi(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2586 FREE(conftype);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2587 /* tmp = memtok (0, 0, "\002", 2, &found); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2588 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2589 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2590 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2591 /* msgid == 11 (someone else is being invited) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2592 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2593 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2594 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2595 tmp = memtok(content, len, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2596 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2597
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2598 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2599 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2600 pkt->conf_id = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2601 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2602 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2603
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2604 if (tmp) /* got the inviter */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2605 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2606 pkt->conf_inviter = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2607 tmp = memtok(0, 0, "\002", 2, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2608 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2609
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2610 if (tmp) /* got the invited-user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2611 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2612 pkt->conf_user = memdupasstr(tmp, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2613 /* tmp = memtok (0, 0, "\002", 2, &found); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2614 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2615 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2616
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2617 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2618 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2619 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2620
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2621 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2622
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2623 yahoo_parsepacket_conference_msg()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2624
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2625 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2626 id^who-from^msg
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2627
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2628 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2629 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2630 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2631 char *conf_user == User who sent message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2632 char *msg == Message.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2633
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2634 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2635 int yahoo_parsepacket_conference_msg(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2636 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2637 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2638 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2639 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2640
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2641 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2642 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2643
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2644 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2645 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2646 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2647 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2648 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2649 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2650 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2651
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2652 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2653 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2654 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2655
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2656 /* parse error messages first */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2657 if (pkt->msgtype == YAHOO_MSGTYPE_ERROR)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2658 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2659 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2660 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2661 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2662
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2663 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2664 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2665 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2666 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2667
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2668 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2669 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2670 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2671 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2672 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2673
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2674 if (tmp) /* conference user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2675 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2676 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2677 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2678 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2679
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2680 if (tmp) /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2681 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2682 pkt->conf_msg = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2683 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2684 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2685
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2686 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2687 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2688 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2689
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2690 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2691
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2692 yahoo_parsepacket_conference_user()
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2693 (User logged on/off to conference)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2694 Packet format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2695 id^user_who_logged_on/off
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2696
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2697 Parses Arguments:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2698 char *conf_id == The conference id -- usually of the form name-number,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2699 though it doesn't seem to matter much. ex: jaylubo-123
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2700 char *conf_user == User who logged on to conference.
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2701
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2702 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2703 int yahoo_parsepacket_conference_user(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2704 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2705 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2706 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2707 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2708
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2709 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2710 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2711
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2712 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2713 pkt->conf_id = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2714 pkt->conf_host = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2715 pkt->conf_user = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2716 pkt->conf_userlist = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2717 pkt->conf_inviter = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2718 pkt->conf_msg = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2719
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2720 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2721 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2722 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2723
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2724 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2725 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2726 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2727 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2728
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2729 if (tmp) /* got the conference id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2730 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2731 pkt->conf_id = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2732 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2733 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2734
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2735 if (tmp) /* conference user */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2736 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2737 pkt->conf_user = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2738 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2739 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2740
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2741 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2742 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2743 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2744
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2745 int yahoo_parsepacket_filetransfer(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2746 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2747 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2748 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2749 char *tmp[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2750 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2751
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2752 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2753 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2754
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2755 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2756 pkt->file_from = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2757 pkt->file_flag = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2758 pkt->file_url = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2759 pkt->file_expires = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2760 pkt->file_description = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2761
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2762 /* overkill allocation, but simple since only temporary use */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2763 tmp[0] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2764 tmp[1] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2765 tmp[2] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2766 tmp[3] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2767 tmp[4] = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2768
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2769 /* raw data format: from,flag,url,timestamp,description */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2770
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2771 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2772 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2773 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2774 tmp[0][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2775 tmp[1][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2776 tmp[2][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2777 tmp[3][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2778 tmp[4][0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2779
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2780 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2781 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2782 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2783
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2784 if (ch == ',' && section < 4)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2785 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2786 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2787 section++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2788 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2789 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2790 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2791 tmp[section][j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2792 tmp[section][j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2793 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2794 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2795 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2796
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2797 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2798 pkt->file_from = strdup(tmp[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2799 pkt->file_flag = strdup(tmp[1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2800 pkt->file_url = strdup(tmp[2]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2801 pkt->file_expires = atoi(tmp[3]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2802 pkt->file_description = strdup(tmp[4]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2803
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2804 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2805 FREE(tmp[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2806 FREE(tmp[1]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2807 FREE(tmp[2]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2808 FREE(tmp[3]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2809 FREE(tmp[4]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2810 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2811 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2812 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2813
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2814 int yahoo_parsepacket_calendar(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2815 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2816 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2817 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2818 char *tmp, delim[5];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2819
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2820 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2821 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2822
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2823 /* init elements to all null */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2824 pkt->cal_url = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2825 pkt->cal_timestamp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2826 pkt->cal_type = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2827 pkt->cal_title = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2828 pkt->cal_description = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2829
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2830 tmp = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2831 delim[0] = 2; /* control-b */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2832 delim[1] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2833
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2834 if (content)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2835 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2836 tmp = strtok(content, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2837 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2838
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2839 if (tmp) /* got the url */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2840 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2841 pkt->cal_url = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2842 tmp = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2843
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2844 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2845 v= is not the type code
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2846 i= doesn't look like it either
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2847 tmp2 = strstr(pkt->cal_url, "v=");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2848 if ( tmp2 )
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2849 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2850 pkt->cal_type = atoi(tmp2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2851 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2852 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2853
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2854 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2855
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2856 if (tmp) /* unknown (type code?) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2857 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2858 /* appears this isn't it either, I don't see where it is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2859 /* pkt->cal_type = atoi(tmp); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2860 tmp = strtok(NULL, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2861 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2862
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2863 if (tmp) /* timestamp */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2864 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2865 pkt->cal_timestamp = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2866 tmp = strtok(NULL, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2867 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2868
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2869 if (tmp) /* title */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2870 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2871 pkt->cal_title = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2872 tmp = strtok(NULL, delim); /* use delim since it won't occur again */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2873 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2874
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2875 if (tmp)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2876 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2877 pkt->cal_description = strdup(tmp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2878 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2879
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2880 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2881 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2882 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2883
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2884 int yahoo_parsepacket_chatinvite(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2885 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2886 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2887 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2888 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2889
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2890 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2891 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2892 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2893
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2894 /* do special parsing for invite later on */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2895 pkt->chat_invite_content = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2896
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2897 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2898 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2899
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2900 int yahoo_parsepacket_newcontact(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2901 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2902 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2903 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2904 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2905
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2906 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2907 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2908 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2909
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2910 /* cheat for now, say if first digit is number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2911 if (len > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2912 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2913 if (isdigit((int) content[0]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2914 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2915 return yahoo_parsepacket_status(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2916 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2917 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2918 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2919 return yahoo_parsepacket_message(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2920 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2921 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2922
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2923 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2924 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2925
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2926 int yahoo_parsepacket_status(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2927 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2928 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2929 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2930 char *tmpc;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2931 char *tmp1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2932 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2933 int len;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2934 int index;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2935 int realcount;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2936
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2937 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2938 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2939 len = strlen(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2940
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2941 /* Pull off the flag from the initial part of the content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2942 /* this flag indicates the number of buddy that're online */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2943 pkt->flag = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2944 tmpc = content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2945 while (tmpc[0] && isdigit((int) tmpc[0]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2946 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2947 pkt->flag = pkt->flag * 10 + (content[0] - '0');
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2948 tmpc++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2949 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2950 if (tmpc[0] && tmpc[0] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2951 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2952 tmpc++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2953 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2954
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2955 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2956 We're receiving either this:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2957 2,buddy1(0,728EE9FB,0,1,0,0),buddy2(0,7AC00000,0,1,0,0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2958 or this:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2959 buddy1(0,728EE9FB,0,1,0,0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2960 hence:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2961 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2962
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2963 if (pkt->flag == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2964 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2965 pkt->idstatus_count = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2966 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2967 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2968 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2969 pkt->idstatus_count = pkt->flag;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2970 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2971
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2972 /* print an error if I get the was not AWAY */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2973 if (strstr(tmpc, "was not AWAY"))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2974 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2975 pkt->idstatus_count = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2976 yahoo_dbg_Print("libyahoo", "yahoo_parsepacket_status: "
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2977 "got a 'was not AWAY' message\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2978 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2979
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2980 if (pkt->idstatus_count == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2981 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2982 /* No entries, so no array needed */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2983 pkt->idstatus = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2984 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2985 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2986 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2987 /* Allocate the array */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2988 pkt->idstatus = (struct yahoo_idstatus **)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2989 calloc(sizeof(struct yahoo_idstatus), pkt->idstatus_count);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2990
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2991 for (i = 0; i < pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2992 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2993 pkt->idstatus[i] = (struct yahoo_idstatus *)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2994
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2995 calloc(1, sizeof(struct yahoo_idstatus));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2996 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2997 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2998
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2999 index = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3000 tmp1 = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3001 realcount = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3002 while (tmpc && tmpc[0] && pkt->idstatus)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3003 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3004 struct yahoo_idstatus *tmpid;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3005
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3006 /* Get pointer to allocated structure to hold status data */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3007 tmpid = pkt->idstatus[index++];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3008 if (!tmpid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3009 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3010 /* shortcut, we know there can't be any more status entries
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3011 at this point */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3012 /* yahoo_dbg_Print("status", "null tmpid"); */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3013 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3014 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3015
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3016 /* YPNS2.0 nick(status,msg,connection_id,UNK,in_pager,in_chat,in_game) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3017 /* tnneul(99,test,message^A,6AD68325,0,1,0,0) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3018 /* 0 1 2 3 4 5 6 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3019
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3020 /* YPNS1.0 nick(status,connection_id,UNK,in_pager,in_chat,in_game) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3021 /* nneul(0,7081F531,0,1,0,0) */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3022 /* 0 2 3 4 5 6 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3023
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3024 /* rewrite this whole section in a less ugly fashion */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3025 /* first pull off the id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3026
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3027 /* YUCK - YPNS2.0 has variable format status records, if type is 99,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3028 it has 7 fields, second is msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3029
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3030 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3031 yahoo_dbg_Print("status", "whole string = '%s'\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3032 yahoo_dbg_NullCheck(tmpc));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3033 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3034
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3035 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3036 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3037 tmp1 = strtok(NULL, "(");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3038 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3039 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3040 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3041 tmp1 = strtok(tmpc, "(");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3042 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3043 if (tmp1 && tmp1[0] == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3044 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3045 tmp1++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3046 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3047
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3048 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3049 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3050 tmpid->id = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3051 realcount++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3052
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3053 for (i = 0; i <= 6 && tmp1; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3054 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3055 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3056 yahoo_dbg_Print("status", "i==%d\n", i);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3057 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3058
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3059 if (i == 6) /* end of status area */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3060 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3061 tmp1 = strtok(NULL, "),");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3062 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3063 else if (i == 1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3064 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3065 char delim[3];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3066
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3067 if (tmpid->status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3068 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3069 delim[0] = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3070 delim[1] = ',';
1135
903a6d0938c7 [gaim-migrate @ 1145]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1099
diff changeset
3071 delim[2] = 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3072 tmp1 = strtok(NULL, delim);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3073 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3074 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3075 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3076 i = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3077 tmp1 = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3078 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3079 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3080 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3081 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3082
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3083 tmp1 = strtok(NULL, ",");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3084 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3085
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3086 /* then pull off the particular element of the list */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3087 if (tmp1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3088 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3089 switch (i)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3090 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3091 case 0: /* status */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3092 tmpid->status = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3093 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3094 case 1: /* msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3095 if (tmpid->status == YAHOO_STATUS_CUSTOM)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3096 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3097 tmpid->status_msg = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3098 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3099 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3100 case 2: /* session id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3101 tmpid->connection_id = strdup(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3102 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3103 case 3: /* dunno what this is */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3104 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3105 case 4:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3106 tmpid->in_pager = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3107 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3108 case 5:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3109 tmpid->in_chat = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3110 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3111 case 6:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3112 tmpid->in_game = atoi(tmp1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3113 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3114 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3115 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3116 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3117 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3118 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3119
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3120 for (i = realcount; i <= pkt->idstatus_count; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3121 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3122 if (pkt->idstatus && pkt->idstatus[i])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3123 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3124 FREE(pkt->idstatus[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3125 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3126 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3127 pkt->idstatus_count = realcount;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3128
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3129 /* Free working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3130 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3131
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3132 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3133 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3134 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3135
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3136 int yahoo_parsepacket_message(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3137 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3138 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3139 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3140 char *tmp_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3141 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3142
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3143 if (pkt->msgtype == YAHOO_MSGTYPE_OFFLINE)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3144 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3145 return yahoo_parsepacket_message_offline(ctx, pkt, inpkt);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3146 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3147
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3148 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3149 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3150 tmp_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3151
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3152 /* initialize */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3153 pkt->msg_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3154
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3155 /* possible message content formats: */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3156 /* userid(#) *//* msgtype == YAHOO_MSGTYPE_STATUS */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3157 /* userid,,msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3158
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3159 /* this needed butchered */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3160 /* YAHOO_MSGTYPE_OFFLINE */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3161 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3162
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3163 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3164 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3165 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3166 tmp_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3167 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3168 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3169 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3170
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3171 if (section == 0) /* parsing userid */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3172 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3173 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3174 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3175 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3176 section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3177 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3178 else if (ch == '(')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3179 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3180 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3181 section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3182 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3183 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3184 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3185 tmp_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3186 tmp_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3187 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3188 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3189 else if (section == 1) /* parsing flag */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3190 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3191 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3192 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3193 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3194 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3195 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3196 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3197 else if (section == 2) /* parsing status */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3198 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3199 if (ch == ')')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3200 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3201 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3202 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3203 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3204 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3205 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3206 if (isdigit((int) ch))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3207 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3208 pkt->msg_status *= 10;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3209 pkt->msg_status += ch - '0';
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3210 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3211 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3212 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3213 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3214 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3215 pkt->msg = strdup(&content[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3216 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3217 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3218
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3219 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3220 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3221
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3222 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3223 pkt->msg_id = strdup(tmp_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3224
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3225 /* handle empty message case */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3226 /* don't pass a message if it's just a status update */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3227 if (!pkt->msg && pkt->msgtype != YAHOO_MSGTYPE_STATUS)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3228 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3229 pkt->msg = strdup("");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3230 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3231
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3232 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3233 FREE(tmp_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3234 FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3235
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3236 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3237 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3238 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3239
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3240 /* This parses a special format offline message, and is only currently
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3241 called from yahoo_parsepacket_message. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3242 int yahoo_parsepacket_message_offline(struct yahoo_context *ctx,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3243 struct yahoo_packet *pkt, struct yahoo_rawpacket *inpkt)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3244 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3245 char *content;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3246 char *to_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3247 char *from_id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3248 char *timestamp;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3249 int i, j, section;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3250
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3251 /* Make working copy of content */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3252 content = strdup(inpkt->content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3253 to_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3254 from_id = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3255 timestamp = strdup(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3256
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3257 /* initialize */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3258 pkt->msg_status = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3259
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3260 /* 6,6,tnneul,nneul,Tue Mar 7 12:14:50 2000,test offline msg^A */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3261 /* sec0,sec1,sec2=to,sec3=from,sec4=tstamp,sec5=msg */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3262
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3263 i = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3264 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3265 section = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3266 to_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3267 from_id[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3268 timestamp[0] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3269
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3270 while (i < strlen(content))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3271 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3272 char ch = content[i];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3273
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3274 if (section == 0) /* parsing first unknown number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3275 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3276 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3277 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3278 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3279 section = 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3280 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3281 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3282 else if (section == 1) /* parsing second unknown number */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3283 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3284 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3285 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3286 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3287 section = 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3288 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3289 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3290 else if (section == 2) /* parsing to-id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3291 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3292 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3293 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3294 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3295 section = 3;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3296 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3297 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3298 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3299 to_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3300 to_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3301 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3302 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3303 else if (section == 3) /* parsing from-id */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3304 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3305 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3306 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3307 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3308 section = 4;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3309 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3310 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3311 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3312 from_id[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3313 from_id[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3314 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3315 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3316 else if (section == 4) /* parsing timestamp */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3317 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3318 if (ch == ',')
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3319 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3320 j = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3321 section = 5;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3322 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3323 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3324 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3325 timestamp[j++] = ch;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3326 timestamp[j] = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3327 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3328 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3329 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3330 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3331 pkt->msg = strdup(&content[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3332 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3333 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3334
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3335 i++;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3336 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3337
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3338 /* do stuff with extracted parts */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3339 pkt->msg_id = strdup(from_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3340 pkt->msg_timestamp = strdup(timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3341 if (pkt->active_id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3342 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3343 FREE(pkt->active_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3344 pkt->active_id = strdup(to_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3345 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3346
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3347 /* free working variables */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3348 FREE(timestamp);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3349 FREE(from_id);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3350 FREE(to_id) FREE(content);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3351
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3352 /* Return ok for success */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3353 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3354 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3355
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3356 int yahoo_getdata(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3357 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3358 char buf[1000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3359 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3360
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3361 /* This is a http mode connection, so just send a ping to get any
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3362 new data from the server. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3363 if (ctx->connect_mode == YAHOO_CONNECT_HTTP ||
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3364 ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3365 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3366 if (!yahoo_sendcmd(ctx, YAHOO_SERVICE_PING, ctx->user, "", 0))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3367 return 0;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3368 return (1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3369 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3370
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3371 /* Read as much data as is available. */
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3372 /* XXX: doesnt the protocol contain header information with lengths? */
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3373 do {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3374 res = read(ctx->sockfd, buf, sizeof(buf));
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3375 if ((res == -1) && (errno == EINTR))
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3376 continue;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3377 break;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3378 } while (1);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3379
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3380 if (res == -1)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3381 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3382 printf("yahoo_getdata: error reading data from server: %s\n",
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3383 strerror(errno));
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3384 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3385 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3386 else if (res == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3387 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3388 yahoo_dbg_Print("io",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3389 "[libyahoo] yahoo_getdata: got zero length read\n", res);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3390 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3391 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3392
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3393 yahoo_addtobuffer(ctx, buf, res);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3394 yahoo_dbg_Print("io", "[libyahoo] yahoo_getdata: read (%d) bytes\n", res);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3395
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3396 return 1;
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3397 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3398
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3399 struct yahoo_rawpacket *yahoo_getpacket(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3400 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3401 struct yahoo_rawpacket *pkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3402 struct yahoo_rawpacket *retpkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3403 int *buflen = &ctx->io_buf_curlen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3404 char *buffer = ctx->io_buf;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3405 unsigned int contentlen;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3406
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3407 /* If buffer doesn't start with YHOO, skip bytes until it
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3408 does. This is to protect against possible packet alignment
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3409 errors if I size something wrong at any time. */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3410
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3411 while ((*buflen >= 4) && (memcmp(buffer, "YHOO", 4)))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3412 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3413 /* making quiet for now so I don't have to work too hard on the HTTP support */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3414 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3415 printf("\nskipped buffer byte (%d)\n", buffer[0]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3416 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3417 memmove(buffer, buffer + 1, *buflen - 1);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3418 *buflen = *buflen - 1;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3419 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3420
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3421 /* Don't do anything if the buffer doesn't have at least a full
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3422 header */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3423 if (*buflen < YAHOO_PACKET_HEADER_SIZE)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3424 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3425 // printf("returning null cause buffer is too small\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3426 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3427 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3428
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3429 /* print out the beginning of the buffer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3430 #if 0
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3431 printf("Buffer (buflen = %d):\n", *buflen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3432 for (i = 0; i < *buflen; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3433 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3434 if ((i) % 10 == 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3435 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3436 printf("\n%.4d: ", i);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3437 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3438 if (isprint(buffer[i]))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3439 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3440 printf("%-3d %c ", buffer[i], buffer[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3441 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3442 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3443 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3444 printf("%-3d ", buffer[i]);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3445 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3446 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3447 printf("\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3448 #endif
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3449 /* Make pkt point to buffer for ease of use */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3450 pkt = (struct yahoo_rawpacket *) buffer;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3451
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3452 /* Determine the content size specified by the header */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3453 contentlen = yahoo_makeint(pkt->len) - YAHOO_PACKET_HEADER_SIZE;
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3454 #if 0
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3455 printf("contentlen = %d\n", contentlen);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3456 #endif
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3457
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3458 /* Don't continue if buffer doesn't have full content in it */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3459 if (*buflen < (YAHOO_PACKET_HEADER_SIZE + contentlen))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3460 {
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3461 printf("buffer not big enough for contentlen\n");
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3462 return NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3463 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3464
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3465 /* Copy this packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3466 retpkt =
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3467 (struct yahoo_rawpacket *) malloc(YAHOO_PACKET_HEADER_SIZE +
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3468 contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3469 memcpy(retpkt, buffer, YAHOO_PACKET_HEADER_SIZE + contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3470
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3471 /* Shift the buffer */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3472 memmove(buffer, buffer + YAHOO_PACKET_HEADER_SIZE + contentlen,
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3473 *buflen - YAHOO_PACKET_HEADER_SIZE - contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3474
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3475 /* Adjust the buffer length */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3476 *buflen -= (YAHOO_PACKET_HEADER_SIZE + contentlen);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3477
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3478 /* Return the packet */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3479 return retpkt;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3480 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3481
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3482 int yahoo_isbuddy(struct yahoo_context *ctx, const char *id)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3483 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3484 int i;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3485 char *buddy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3486
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3487 if (!id || !ctx || !ctx->buddies)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3488 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3489 return FALSE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3490 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3491
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3492 for (i = 0; ctx->buddies[i]; i++)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3493 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3494 buddy = (ctx->buddies[i])->id;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3495 if (!strcasecmp(id, buddy))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3496 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3497 return TRUE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3498 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3499 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3500
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3501 return FALSE;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3502 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3503
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3504 static void yahoo_free_address (struct yahoo_address *add)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3505 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3506 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3507 "[libyahoo] yahoo_free_address: record at address 0x%08p for user %s (%s %s) being free'd\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3508 add, add->id, add->firstname, add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3509
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3510 FREE (add->firstname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3511 FREE (add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3512 FREE (add->emailnickname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3513 FREE (add->email);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3514 FREE (add->workphone);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3515 FREE (add->homephone);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3516 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3517
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3518 void yahoo_freeaddressbook(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3519 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3520 unsigned int count = ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3521 struct yahoo_address *add_p = ctx->addresses;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3522
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3523 if (NULL == ctx || NULL == ctx->addresses)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3524 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3525
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3526 while (count-- > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3527 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3528 yahoo_free_address (add_p++);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3529 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3530
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3531 ctx->address_count = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3532 FREE (ctx->addresses);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3533 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3534
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3535 static void yahoo_data_to_addressbook (char *block, struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3536 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3537 char *token = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3538 int record = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3539 struct yahoo_address *add = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3540
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3541 if (NULL == block || NULL == ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3542 return;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3543
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3544 yahoo_freeaddressbook (ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3545
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3546 add = ctx->addresses = calloc (ctx->address_count, sizeof (struct yahoo_address));
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3547
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3548 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3549 Okay!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3550 At this point we have a char * (block) that has \012 delimited records
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3551 Each record (as a string when retreived with strtok) follows the format:
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3552 <ID>:<FIRSTNAME>\011<LASTNAME>\011<EMAILNICKNAME>\011<EMAIL>\011<HOMEPHONE>\011<WORKPHONE>\011[01]\011<ENTRYID>\000
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3553 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3554
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3555 token = strtok (block, "\012");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3556 while (NULL != token)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3557 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3558 /*
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3559 Here we must use memtok because we'll get some repeated tokens!!!!!
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3560 */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3561 char *field = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3562 size_t token_len = 0, found = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3563
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3564 ++record;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3565 token_len = strlen (token);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3566
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3567 field = memtok(token, token_len, ":", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3568
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3569 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3570 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3571 add->id = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3572 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3573 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3574
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3575 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3576 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3577 add->firstname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3578 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3579 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3580
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3581 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3582 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3583 add->lastname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3584 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3585 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3586
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3587 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3588 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3589 add->emailnickname = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3590 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3591 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3592
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3593 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3594 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3595 add->email = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3596 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3597 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3598
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3599 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3600 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3601 add->homephone = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3602 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3603 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3604
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3605 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3606 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3607 add->workphone = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3608 field = memtok(0, 0, "\011", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3609 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3610
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3611 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3612 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3613 add->primary_phone = (*field == '0' ? home : work);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3614 field = memtok(0, 0, "", 1, &found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3615 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3616
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3617 if (NULL != field)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3618 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3619 char *entryid = memdupasstr(field, found);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3620 if (NULL != entryid)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3621 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3622 add->entryid = atoi (entryid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3623 FREE (entryid);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3624 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3625 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3626
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3627 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3628 "[libyahoo] yahoo_fetchaddressbook: record #%d is for user %s (%s %s)\n",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3629 record, add->id, add->firstname, add->lastname);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3630
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3631 ++add;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3632
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3633 token = strtok (NULL, "\012");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3634 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3635 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3636
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3637 /* retreive the details of the friends in your address book that have a Yahoo! id listed */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3638 int yahoo_fetchaddressbook(struct yahoo_context *ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3639 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3640 char buffer[5000];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3641 int servfd;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3642 int res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3643 int copied = 0, size = 5000;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3644 char *address = NULL, *copy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3645
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3646 if (!ctx)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3647 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3648 return 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3649 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3650
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3651 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3652 "[libyahoo] yahoo_fetchaddressbook: starting\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3653
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3654 /* Check for cached addresses */
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3655 if (ctx->addresses)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3656 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3657 yahoo_freeaddressbook(ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3658 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3659
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3660 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3661 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3662 servfd = yahoo_socket_connect(ctx, ctx->proxy_host, ctx->proxy_port);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3663 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3664 else
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3665 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3666 servfd = yahoo_socket_connect(ctx, YAHOO_ADDRESS_HOST, YAHOO_ADDRESS_PORT);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3667 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3668
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3669 if (servfd < 0)
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3670 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3671 printf("[libyahoo] failed to connect to address book server.\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3672 return (0);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3673 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3674
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3675 strcpy(buffer, "GET ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3676 if (ctx->connect_mode == YAHOO_CONNECT_HTTPPROXY)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3677 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3678 strcat(buffer, YAHOO_ADDRESS_HOST);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3679 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3680 strcat(buffer, "/yab/uk/yab?v=PG&A=s");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3681 strcat(buffer, " HTTP/1.0\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3682 strcat(buffer, "User-Agent: " YAHOO_USER_AGENT "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3683 strcat(buffer, "Host: " YAHOO_AUTH_HOST "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3684 strcat(buffer, "Cookie: ");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3685 strcat(buffer, ctx->cookie);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3686 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3687 strcat(buffer, "\r\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3688
1099
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3689 if (writeall(servfd, buffer, strlen(buffer)) < strlen(buffer)) {
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3690 close(servfd);
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3691 return 0;
4416ead31db7 [gaim-migrate @ 1109]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1054
diff changeset
3692 }
1054
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3693
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3694 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3695 "[libyahoo] yahoo_fetchaddressbook: writing buffer '%s'\n", buffer);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3696
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3697 while ((res = yahoo_tcp_readline(buffer, 5000, servfd)) > 0)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3698 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3699 if ('\012' == buffer[0])
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3700 continue;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3701
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3702 if (0 == strncmp (buffer, "1\011", 2))
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3703 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3704 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3705 "[libyahoo] yahoo_fetchaddressbook: found first line\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3706 if (3 == res)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3707 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3708 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3709 "[libyahoo] yahoo_fetchaddressbook: however there's been a problem\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3710 break;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3711 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3712
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3713 address = &buffer[2];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3714 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3715 else if (NULL != address)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3716 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3717 address = &buffer[0];
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3718 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3719
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3720 if (NULL != address)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3721 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3722 if (NULL == copy)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3723 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3724 copy = malloc (size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3725 memset (copy, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3726 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3727
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3728 if ((copied + res) > size)
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3729 {
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3730 char *newcopy = NULL;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3731
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3732 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3733 "[libyahoo] yahoo_fetchaddressbook: resizing buffer from %d bytes to %d bytes\n", size, size * 2);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3734 size *= 2;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3735 newcopy = malloc (size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3736 memset (newcopy, 0, size);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3737 memcpy (newcopy, copy, copied);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3738 free (copy);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3739 copy = newcopy;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3740 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3741
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3742 copied += res;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3743 strcat (copy, address);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3744 ++ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3745 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3746 }
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3747
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3748 yahoo_data_to_addressbook (copy, ctx);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3749 FREE (copy);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3750
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3751 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3752 "[libyahoo] yahoo_fetchaddressbook: closing server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3753 close(servfd);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3754 servfd = 0;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3755 yahoo_dbg_Print("addressbook",
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3756 "[libyahoo] yahoo_fetchaddressbook: closed server connection\n");
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3757
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3758 yahoo_dbg_Print("addressbook", "[libyahoo] yahoo_fetchaddressbook: done (%d addresses retreived)\n", ctx->address_count);
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3759
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3760 return ctx->address_count;
0b0b4cb53c17 [gaim-migrate @ 1064]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3761 }