Mercurial > pidgin
annotate src/toc.c @ 780:c714def9cebb
[gaim-migrate @ 790]
You may be a geek if...
You've ever used a computer on Friday, Saturday and Sunday of the
same weekend.
You find yourself interrupting computer store salesman to correct
something he said.
The first thing you notice when walking in a business is their
computer system. ...and offer advice on how you would change it.
You've ever mounted a magnetic tape reel.
You own any shareware.
You know more IP addresses than phone numbers.
You've ever accidentally dialed an IP address.
Your friends use you as tech support.
You've ever named a computer.
You have your local computer store on speed dial.
You can't carry on a conversation without talking about computers.
Co-workers have to E-mail you about the fire alarm to get you out of
the building.
You've ever found "stray" diskettes when doing laundry.
Your computer has it's own phone line - but your teenager doesn't.
You check the national weather service web page for current weather
conditions (rather than look out the window).
You know more URLs than street addresses.
Your pet has a web page.
You get really excited when Yahoo adds your link.
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 29 Aug 2000 03:59:01 +0000 |
| parents | b61607d6c2af |
| children | 57cc66fbfa8e |
| rev | line source |
|---|---|
| 1 | 1 /* |
| 2 * gaim | |
| 3 * | |
| 4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 * | |
| 6 * This program is free software; you can redistribute it and/or modify | |
| 7 * it under the terms of the GNU General Public License as published by | |
| 8 * the Free Software Foundation; either version 2 of the License, or | |
| 9 * (at your option) any later version. | |
| 10 * | |
| 11 * This program is distributed in the hope that it will be useful, | |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 * GNU General Public License for more details. | |
| 15 * | |
| 16 * You should have received a copy of the GNU General Public License | |
| 17 * along with this program; if not, write to the Free Software | |
| 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 * | |
| 20 */ | |
| 21 | |
| 22 | |
| 23 | |
|
349
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
333
diff
changeset
|
24 #ifdef HAVE_CONFIG_H |
|
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
333
diff
changeset
|
25 #include "../config.h" |
|
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
333
diff
changeset
|
26 #endif |
| 1 | 27 #include <netdb.h> |
| 28 #include <gtk/gtk.h> | |
| 29 #include <unistd.h> | |
| 30 #include <errno.h> | |
| 31 #include <netinet/in.h> | |
| 32 #include <arpa/inet.h> | |
| 33 #include <string.h> | |
| 34 #include <stdlib.h> | |
| 35 #include <stdio.h> | |
| 36 #include <time.h> | |
| 37 #include <sys/socket.h> | |
| 38 #include "gaim.h" | |
| 39 #include "gnome_applet_mgr.h" | |
| 40 | |
| 41 | |
| 42 | |
| 43 /* descriptor for talking to TOC */ | |
| 44 static int toc_fd; | |
| 45 static int seqno; | |
| 46 static unsigned int peer_ver=0; | |
| 47 static int state; | |
| 48 static int inpa=-1; | |
| 49 #ifdef _WIN32 | |
| 50 static int win32_r; | |
| 51 #endif | |
| 52 | |
| 53 int toc_signon(char *username, char *password); | |
| 54 | |
| 55 | |
| 56 | |
| 57 int toc_login(char *username, char *password) | |
| 58 { | |
| 59 char *config; | |
| 60 struct in_addr *sin; | |
| 61 struct aim_user *u; | |
| 62 char buf[80]; | |
| 63 char buf2[2048]; | |
| 64 | |
| 65 g_snprintf(buf, sizeof(buf), "Looking up %s", aim_host); | |
| 66 set_login_progress(1, buf); | |
| 67 | |
| 68 sin = (struct in_addr *)get_address(aim_host); | |
| 69 if (!sin) { | |
| 70 | |
| 71 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
72 set_user_state(offline); |
| 1 | 73 #endif /* USE_APPLET */ |
| 74 set_state(STATE_OFFLINE); | |
| 75 g_snprintf(buf, sizeof(buf), "Unable to lookup %s", aim_host); | |
| 76 hide_login_progress(buf); | |
| 77 return -1; | |
| 78 } | |
| 79 | |
| 80 g_snprintf(toc_addy, sizeof(toc_addy), "%s", inet_ntoa(*sin)); | |
| 81 g_snprintf(buf, sizeof(buf), "Connecting to %s", inet_ntoa(*sin)); | |
| 82 | |
| 83 set_login_progress(2, buf); | |
| 84 | |
| 85 | |
| 86 | |
| 87 toc_fd = connect_address(sin->s_addr, aim_port); | |
| 88 | |
| 89 if (toc_fd < 0) { | |
| 90 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
91 set_user_state(offline); |
| 1 | 92 #endif /* USE_APPLET */ |
| 93 set_state(STATE_OFFLINE); | |
| 94 g_snprintf(buf, sizeof(buf), "Connect to %s failed", | |
| 95 inet_ntoa(*sin)); | |
| 96 hide_login_progress(buf); | |
| 97 return -1; | |
| 98 } | |
| 99 | |
| 100 g_free(sin); | |
| 101 | |
| 102 g_snprintf(buf, sizeof(buf), "Signon: %s",username); | |
| 103 | |
| 104 set_login_progress(3, buf); | |
| 105 | |
| 106 if (toc_signon(username, password) < 0) { | |
| 107 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
108 set_user_state(offline); |
| 1 | 109 #endif /* USE_APPLET */ |
| 110 set_state(STATE_OFFLINE); | |
| 111 hide_login_progress("Disconnected."); | |
| 112 return -1; | |
| 113 } | |
| 114 | |
| 115 g_snprintf(buf, sizeof(buf), "Waiting for reply..."); | |
| 116 set_login_progress(4, buf); | |
| 117 if (toc_wait_signon() < 0) { | |
| 118 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
119 set_user_state(offline); |
| 1 | 120 #endif /* USE_APPLET */ |
| 121 set_state(STATE_OFFLINE); | |
| 122 hide_login_progress("Authentication Failed"); | |
| 123 return -1; | |
| 124 } | |
| 125 | |
| 126 u = find_user(username); | |
| 127 | |
| 128 if (!u) { | |
| 129 u = g_new0(struct aim_user, 1); | |
| 130 g_snprintf(u->user_info, sizeof(u->user_info), DEFAULT_INFO); | |
| 131 aim_users = g_list_append(aim_users, u); | |
| 132 } | |
| 133 | |
| 134 current_user = u; | |
| 135 | |
| 136 g_snprintf(current_user->username, sizeof(current_user->username), "%s", username); | |
| 137 g_snprintf(current_user->password, sizeof(current_user->password), "%s", password); | |
| 138 | |
| 139 save_prefs(); | |
| 140 | |
| 141 g_snprintf(buf, sizeof(buf), "Retrieving config..."); | |
| 142 set_login_progress(5, buf); | |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
143 config = toc_wait_config(); |
|
301
f905caee43ca
[gaim-migrate @ 311]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
300
diff
changeset
|
144 state = STATE_ONLINE; |
| 1 | 145 |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
146 gtk_widget_hide(mainwindow); |
|
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
147 show_buddy_list(); |
| 1 | 148 #ifdef USE_APPLET |
| 10 | 149 if (general_options & OPT_GEN_APP_BUDDY_SHOW) { |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
150 refresh_buddy_window(); |
| 50 | 151 createOnlinePopup(); |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
152 applet_buddy_show = TRUE; |
| 1 | 153 } else { |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
154 gtk_widget_hide(blist); |
|
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
155 applet_buddy_show = FALSE; |
| 1 | 156 } |
| 157 | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
158 set_user_state(online); |
| 1 | 159 #else |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
160 refresh_buddy_window(); |
|
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
161 #endif |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
162 if (config != NULL) |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
163 parse_toc_buddy_list(config, 0); |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
164 else |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
165 do_import(0, 0); |
| 1 | 166 |
|
774
b61607d6c2af
[gaim-migrate @ 784]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
762
diff
changeset
|
167 setup_buddy_chats(); |
|
b61607d6c2af
[gaim-migrate @ 784]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
762
diff
changeset
|
168 |
| 1 | 169 g_snprintf(buf2, sizeof(buf2), "toc_init_done"); |
| 170 sflap_send(buf2, -1, TYPE_DATA); | |
| 171 | |
|
211
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
172 g_snprintf(buf2, sizeof(buf2), "toc_set_caps %s %s %s %s %s", |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
173 FILE_SEND_UID, FILE_GET_UID, B_ICON_UID, IMAGE_UID, |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
174 VOICE_UID); |
| 1 | 175 sflap_send(buf2, -1, TYPE_DATA); |
| 149 | 176 |
| 1 | 177 serv_finish_login(); |
| 178 return 0; | |
| 179 } | |
| 180 | |
| 181 void toc_close() | |
| 182 { | |
| 183 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
184 set_user_state(offline); |
| 1 | 185 #endif /* USE_APPLET */ |
| 186 seqno = 0; | |
| 187 state = STATE_OFFLINE; | |
| 188 if (inpa > 0) | |
| 189 gdk_input_remove(inpa); | |
| 190 close(toc_fd); | |
| 191 toc_fd=-1; | |
| 192 inpa=-1; | |
| 193 } | |
| 194 | |
| 195 unsigned char *roast_password(char *pass) | |
| 196 { | |
| 197 /* Trivial "encryption" */ | |
| 198 static char rp[256]; | |
| 199 static char *roast = ROAST; | |
| 200 int pos=2; | |
| 201 int x; | |
| 202 strcpy(rp, "0x"); | |
| 203 for (x=0;(x<150) && pass[x]; x++) | |
| 204 pos+=sprintf(&rp[pos],"%02x", pass[x] ^ roast[x % strlen(roast)]); | |
| 205 rp[pos]='\0'; | |
| 206 return rp; | |
| 207 } | |
| 208 | |
| 209 | |
| 210 char *print_header(void *hdr_v) | |
| 211 { | |
| 212 static char s[80]; | |
| 213 struct sflap_hdr *hdr = (struct sflap_hdr *)hdr_v; | |
| 214 g_snprintf(s,sizeof(s), "[ ast: %c, type: %d, seqno: %d, len: %d ]", | |
| 215 hdr->ast, hdr->type, ntohs(hdr->seqno), ntohs(hdr->len)); | |
| 216 return s; | |
| 217 } | |
| 218 | |
| 219 void print_buffer(char *buf, int len) | |
| 220 { | |
| 221 #if 0 | |
| 222 int x; | |
| 223 printf("[ "); | |
| 224 for (x=0;x<len;x++) | |
| 225 printf("%d ", buf[x]); | |
| 226 printf("]\n"); | |
| 227 printf("[ "); | |
| 228 for (x=0;x<len;x++) | |
| 229 printf("%c ", buf[x]); | |
| 230 printf("]\n"); | |
| 231 #endif | |
| 232 } | |
| 233 | |
| 234 int sflap_send(char *buf, int olen, int type) | |
| 235 { | |
| 236 int len; | |
| 237 int slen=0; | |
| 238 struct sflap_hdr hdr; | |
| 239 char obuf[MSG_LEN]; | |
| 240 | |
| 241 /* One _last_ 2048 check here! This shouldn't ever | |
| 242 * get hit though, hopefully. If it gets hit on an IM | |
| 243 * It'll lose the last " and the message won't go through, | |
| 244 * but this'll stop a segfault. */ | |
| 245 if (strlen(buf) > (MSG_LEN - sizeof(hdr))) { | |
| 246 buf[MSG_LEN - sizeof(hdr) - 3] = '"'; | |
| 247 buf[MSG_LEN - sizeof(hdr) - 2] = '\0'; | |
| 248 } | |
| 249 | |
| 250 sprintf(debug_buff,"%s [Len %d]\n", buf, strlen(buf)); | |
| 251 debug_print(debug_buff); | |
| 252 | |
| 253 | |
| 254 | |
| 255 if (olen < 0) | |
| 256 len = escape_message(buf); | |
| 257 else | |
| 258 len = olen; | |
| 259 hdr.ast = '*'; | |
| 260 hdr.type = type; | |
| 261 hdr.seqno = htons(seqno++ & 0xffff); | |
| 262 hdr.len = htons(len + (type == TYPE_SIGNON ? 0 : 1)); | |
| 263 | |
| 264 sprintf(debug_buff,"Escaped message is '%s'\n",buf); | |
| 265 debug_print(debug_buff); | |
| 266 | |
| 267 memcpy(obuf, &hdr, sizeof(hdr)); | |
| 268 slen += sizeof(hdr); | |
| 269 memcpy(&obuf[slen], buf, len); | |
| 270 slen += len; | |
| 271 if (type != TYPE_SIGNON) { | |
| 272 obuf[slen]='\0'; | |
| 273 slen += 1; | |
| 274 } | |
| 275 print_buffer(obuf, slen); | |
| 276 | |
| 277 return write(toc_fd, obuf, slen); | |
| 278 } | |
| 279 | |
| 280 | |
| 79 | 281 int wait_reply(char *buffer, size_t buflen) |
| 1 | 282 { |
| 79 | 283 size_t res=-1; |
| 284 int read_rv = -1; | |
| 1 | 285 struct sflap_hdr *hdr=(struct sflap_hdr *)buffer; |
| 286 char *c; | |
| 287 | |
| 79 | 288 if(buflen < sizeof(struct sflap_hdr)) { |
| 289 do_error_dialog("Buffer too small", "Gaim - Error (internal)"); | |
| 290 return -1; | |
| 291 } | |
| 292 | |
| 293 while((read_rv = read(toc_fd, buffer, 1))) { | |
| 294 if (read_rv < 0 || read_rv > 1) | |
| 295 return -1; | |
| 1 | 296 if (buffer[0] == '*') |
| 297 break; | |
| 298 | |
| 299 } | |
| 300 | |
| 79 | 301 read_rv = read(toc_fd, buffer+1, sizeof(struct sflap_hdr) - 1); |
| 1 | 302 |
| 79 | 303 if (read_rv < 0) |
| 304 return read_rv; | |
| 1 | 305 |
| 79 | 306 res = read_rv + 1; |
| 1 | 307 |
| 308 | |
| 309 sprintf(debug_buff, "Rcv: %s %s\n",print_header(buffer), ""); | |
| 310 debug_print(debug_buff); | |
| 311 | |
| 312 | |
| 79 | 313 if(buflen < sizeof(struct sflap_hdr) + ntohs(hdr->len) + 1) { |
| 314 do_error_dialog("Buffer too small", "Gaim - Error (internal)"); | |
| 315 return -1; | |
| 316 } | |
| 1 | 317 |
| 318 while (res < (sizeof(struct sflap_hdr) + ntohs(hdr->len))) { | |
| 79 | 319 read_rv = read(toc_fd, buffer + res, (ntohs(hdr->len) + sizeof(struct sflap_hdr)) - res); |
| 320 if(read_rv < 0) return read_rv; | |
| 321 res += read_rv; | |
| 1 | 322 while(gtk_events_pending()) |
| 323 gtk_main_iteration(); | |
| 324 } | |
| 325 | |
| 326 if (res >= sizeof(struct sflap_hdr)) | |
| 327 buffer[res]='\0'; | |
| 328 else | |
| 329 return res - sizeof(struct sflap_hdr); | |
| 330 | |
| 331 switch(hdr->type) { | |
| 332 case TYPE_SIGNON: | |
| 333 memcpy(&peer_ver, buffer + sizeof(struct sflap_hdr), 4); | |
| 334 peer_ver = ntohl(peer_ver); | |
| 335 seqno = ntohs(hdr->seqno); | |
| 336 state = STATE_SIGNON_REQUEST; | |
| 337 break; | |
| 338 case TYPE_DATA: | |
| 339 if (!strncasecmp(buffer + sizeof(struct sflap_hdr), "SIGN_ON:", strlen("SIGN_ON:"))) | |
| 340 state = STATE_SIGNON_ACK; | |
| 341 else if (!strncasecmp(buffer + sizeof(struct sflap_hdr), "CONFIG:", strlen("CONFIG:"))) { | |
| 342 state = STATE_CONFIG; | |
|
301
f905caee43ca
[gaim-migrate @ 311]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
300
diff
changeset
|
343 } else if (!strncasecmp(buffer + sizeof(struct sflap_hdr), "ERROR:", strlen("ERROR:"))) { |
| 1 | 344 c = strtok(buffer + sizeof(struct sflap_hdr) + strlen("ERROR:"), ":"); |
| 345 show_error_dialog(c); | |
| 346 } | |
| 347 | |
| 348 sprintf(debug_buff, "Data: %s\n",buffer + sizeof(struct sflap_hdr)); | |
| 349 debug_print(debug_buff); | |
| 350 | |
| 351 break; | |
| 352 default: | |
| 353 sprintf(debug_buff, "Unknown/unimplemented packet type %d\n",hdr->type); | |
| 354 debug_print(debug_buff); | |
| 355 } | |
| 356 return res; | |
| 357 } | |
| 358 | |
| 359 | |
| 360 | |
| 361 void toc_callback( gpointer data, | |
| 362 gint source, | |
| 363 GdkInputCondition condition ) | |
| 364 { | |
| 365 char *buf; | |
| 366 char *c; | |
| 367 char *l; | |
| 368 | |
| 369 buf = g_malloc(BUF_LONG); | |
| 370 if (wait_reply(buf, BUF_LONG) < 0) { | |
| 371 signoff(); | |
| 372 hide_login_progress("Connection Closed"); | |
| 373 g_free(buf); | |
| 374 return; | |
| 375 } | |
| 376 | |
| 377 | |
| 378 c=strtok(buf+sizeof(struct sflap_hdr),":"); /* Ditch the first part */ | |
| 379 if (!strcasecmp(c,"UPDATE_BUDDY")) { | |
| 380 char *uc; | |
| 381 int logged, evil, idle, type = 0; | |
| 382 time_t signon; | |
| 383 time_t time_idle; | |
| 384 | |
| 385 c = strtok(NULL,":"); /* c is name */ | |
| 386 | |
| 387 l = strtok(NULL,":"); /* l is T/F logged status */ | |
| 388 | |
| 389 sscanf(strtok(NULL, ":"), "%d", &evil); | |
| 390 | |
| 391 sscanf(strtok(NULL, ":"), "%ld", &signon); | |
| 392 | |
| 393 sscanf(strtok(NULL, ":"), "%d", &idle); | |
| 394 | |
| 395 uc = strtok(NULL, ":"); | |
| 396 | |
| 397 | |
| 398 if (!strncasecmp(l,"T",1)) | |
| 399 logged = 1; | |
| 400 else | |
| 401 logged = 0; | |
| 402 | |
| 403 | |
| 404 if (uc[0] == 'A') | |
| 405 type |= UC_AOL; | |
| 406 | |
| 407 switch(uc[1]) { | |
| 408 case 'A': | |
| 409 type |= UC_ADMIN; | |
| 410 break; | |
| 411 case 'U': | |
| 412 type |= UC_UNCONFIRMED; | |
| 413 break; | |
| 414 case 'O': | |
| 415 type |= UC_NORMAL; | |
| 416 break; | |
| 417 default: | |
| 418 break; | |
| 419 } | |
| 420 | |
| 421 switch(uc[2]) { | |
| 422 case 'U': | |
| 423 type |= UC_UNAVAILABLE; | |
| 424 break; | |
| 425 default: | |
| 426 break; | |
| 427 } | |
| 428 | |
| 429 if (idle) { | |
| 430 time(&time_idle); | |
| 431 time_idle -= idle*60; | |
| 432 } else | |
| 433 time_idle = 0; | |
| 434 | |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
507
diff
changeset
|
435 serv_got_update(c, logged, evil, signon, time_idle, type, 0); |
| 1 | 436 |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
437 } else if (!strcasecmp(c, "CONFIG")) { |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
438 /* do we want to load the buddy list again here? */ |
|
318
35796808896a
[gaim-migrate @ 328]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
301
diff
changeset
|
439 c = strtok(NULL,":"); |
|
35796808896a
[gaim-migrate @ 328]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
301
diff
changeset
|
440 parse_toc_buddy_list(c, 0); |
| 1 | 441 } else if (!strcasecmp(c, "ERROR")) { |
|
301
f905caee43ca
[gaim-migrate @ 311]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
300
diff
changeset
|
442 /* This should be handled by wait_reply |
| 1 | 443 c = strtok(NULL,":"); |
| 444 show_error_dialog(c); | |
|
301
f905caee43ca
[gaim-migrate @ 311]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
300
diff
changeset
|
445 */ |
| 1 | 446 } else if (!strcasecmp(c, "NICK")) { |
| 447 c = strtok(NULL,":"); | |
| 448 g_snprintf(current_user->username, sizeof(current_user->username), "%s", c); | |
| 449 } else if (!strcasecmp(c, "IM_IN")) { | |
| 450 char *away, *message; | |
| 451 int a = 0; | |
| 452 | |
| 453 c = strtok(NULL,":"); | |
| 454 away = strtok(NULL,":"); | |
| 455 | |
| 456 message = away; | |
| 457 | |
| 458 while(*message && (*message != ':')) | |
| 459 message++; | |
| 460 | |
| 461 message++; | |
| 462 | |
| 463 if (!strncasecmp(away, "T", 1)) | |
| 464 a = 1; | |
| 465 serv_got_im(c, message, a); | |
| 466 | |
| 467 } else if (!strcasecmp(c, "GOTO_URL")) { | |
| 468 char *name; | |
| 469 char *url; | |
| 470 | |
| 471 char tmp[256]; | |
| 472 | |
| 473 name = strtok(NULL, ":"); | |
| 474 url = strtok(NULL, ":"); | |
| 475 | |
| 476 | |
| 477 g_snprintf(tmp, sizeof(tmp), "http://%s:%d/%s", toc_addy, aim_port, url); | |
| 478 /* fprintf(stdout, "Name: %s\n%s\n", name, url); | |
| 479 printf("%s", grab_url(tmp));*/ | |
| 480 g_show_info(tmp); | |
| 481 } else if (!strcasecmp(c, "EVILED")) { | |
| 482 int lev; | |
| 483 char *name = NULL; | |
| 484 | |
| 485 sscanf(strtok(NULL, ":"), "%d", &lev); | |
| 486 name = strtok(NULL, ":"); | |
| 487 | |
| 488 sprintf(debug_buff,"%s | %d\n", name, lev); | |
| 489 debug_print(debug_buff); | |
| 490 | |
| 491 serv_got_eviled(name, lev); | |
| 492 | |
| 493 } else if (!strcasecmp(c, "CHAT_JOIN")) { | |
| 494 char *name; | |
| 495 int id; | |
| 496 | |
| 497 | |
| 498 sscanf(strtok(NULL, ":"), "%d", &id); | |
| 499 name = strtok(NULL, ":"); | |
| 500 serv_got_joined_chat(id, name); | |
| 501 | |
| 502 } else if (!strcasecmp(c, "DIR_STATUS")) { | |
| 149 | 503 } else if (!strcasecmp(c, "ADMIN_PASSWD_STATUS")) { |
| 504 do_error_dialog("Password Change Successeful", "Gaim - Password Change"); | |
| 1 | 505 } else if (!strcasecmp(c, "CHAT_UPDATE_BUDDY")) { |
| 506 int id; | |
| 507 char *in; | |
| 508 char *buddy; | |
| 509 GList *bcs = buddy_chats; | |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
447
diff
changeset
|
510 struct conversation *b = NULL; |
| 1 | 511 |
| 512 sscanf(strtok(NULL, ":"), "%d", &id); | |
| 513 | |
| 514 in = strtok(NULL, ":"); | |
| 515 | |
| 516 while(bcs) { | |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
447
diff
changeset
|
517 b = (struct conversation *)bcs->data; |
| 1 | 518 if (id == b->id) |
| 519 break; | |
| 520 bcs = bcs->next; | |
| 521 b = NULL; | |
| 522 } | |
| 523 | |
| 44 | 524 if (!b) { |
| 45 | 525 g_free(buf); |
| 1 | 526 return; |
| 44 | 527 } |
| 1 | 528 |
| 529 | |
| 530 if (!strcasecmp(in, "T")) { | |
| 531 while((buddy = strtok(NULL, ":")) != NULL) { | |
| 532 add_chat_buddy(b, buddy); | |
| 533 } | |
| 534 } else { | |
| 535 while((buddy = strtok(NULL, ":")) != NULL) { | |
| 536 remove_chat_buddy(b, buddy); | |
| 537 } | |
| 538 } | |
| 539 | |
| 540 } else if (!strcasecmp(c, "CHAT_LEFT")) { | |
| 541 int id; | |
| 542 | |
| 543 | |
| 544 sscanf(strtok(NULL, ":"), "%d", &id); | |
| 545 | |
| 546 serv_got_chat_left(id); | |
| 547 | |
| 548 | |
| 549 } else if (!strcasecmp(c, "CHAT_IN")) { | |
| 550 | |
| 551 int id, w; | |
| 552 char *m; | |
| 553 char *who, *whisper; | |
| 554 | |
| 555 | |
| 556 sscanf(strtok(NULL, ":"), "%d", &id); | |
| 557 who = strtok(NULL, ":"); | |
| 558 whisper = strtok(NULL, ":"); | |
| 559 m = whisper; | |
| 560 while(*m && (*m != ':')) m++; | |
| 561 m++; | |
| 562 | |
| 563 if (!strcasecmp(whisper, "T")) | |
| 564 w = 1; | |
| 565 else | |
| 566 w = 0; | |
| 567 | |
| 568 serv_got_chat_in(id, who, w, m); | |
| 569 | |
| 570 | |
| 571 } else if (!strcasecmp(c, "CHAT_INVITE")) { | |
| 572 char *name; | |
| 573 char *who; | |
| 574 char *message; | |
| 575 int id; | |
| 576 | |
| 577 | |
| 578 name = strtok(NULL, ":"); | |
| 579 sscanf(strtok(NULL, ":"), "%d", &id); | |
| 580 who = strtok(NULL, ":"); | |
| 581 message = strtok(NULL, ":"); | |
| 582 | |
| 583 serv_got_chat_invite(name, id, who, message); | |
| 584 | |
| 585 | |
| 586 } else if (!strcasecmp(c, "RVOUS_PROPOSE")) { | |
| 587 char *user; | |
| 588 char *uuid; | |
| 589 char *cookie; | |
| 590 int seq; | |
| 591 char *rip, *pip, *vip; | |
| 592 int port; | |
| 593 int unk[4]; | |
| 594 char *messages[4]; | |
| 595 int subtype, files, totalsize; | |
| 596 char *name; | |
| 597 char *tmp; | |
| 598 int i; | |
| 599 struct file_transfer *ft; | |
| 600 | |
| 601 | |
| 602 user = strtok(NULL, ":"); | |
| 603 uuid = strtok(NULL, ":"); | |
| 604 cookie = strtok(NULL, ":"); | |
| 605 sscanf(strtok(NULL, ":"), "%d", &seq); | |
| 606 rip = strtok(NULL, ":"); | |
| 607 pip = strtok(NULL, ":"); | |
| 608 vip = strtok(NULL, ":"); | |
| 609 sscanf(strtok(NULL, ":"), "%d", &port); | |
| 610 | |
|
197
24f0fef56a73
[gaim-migrate @ 207]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
196
diff
changeset
|
611 if (!strcmp(uuid, FILE_SEND_UID)) { |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
612 /* we're getting a file */ |
|
211
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
613 for (i=0; i<4; i++) { |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
614 sscanf(strtok(NULL, ":"), "%d", &unk[i]); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
615 if (unk[i] == 10001) |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
616 break; |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
617 messages[i] = frombase64(strtok(NULL, ":")); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
618 } |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
619 tmp = frombase64(strtok(NULL, ":")); |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
620 subtype = tmp[1]; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
621 files = tmp[3]; /* These are fine */ |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
622 |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
623 totalsize = 0; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
624 totalsize |= (tmp[4] << 24) & 0xff000000; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
625 totalsize |= (tmp[5] << 16) & 0x00ff0000; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
626 totalsize |= (tmp[6] << 8) & 0x0000ff00; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
627 totalsize |= (tmp[7] << 0) & 0x000000ff; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
628 |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
629 name = tmp + 8; |
| 1 | 630 |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
631 ft = g_new0(struct file_transfer, 1); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
632 |
|
198
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
633 ft->cookie = g_strdup(cookie); |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
634 ft->ip = g_strdup(pip); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
635 ft->port = port; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
636 if (i) |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
637 ft->message = g_strdup(messages[0]); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
638 else |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
639 ft->message = NULL; |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
640 ft->filename = g_strdup(name); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
641 ft->user = g_strdup(user); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
642 ft->size = totalsize; |
|
198
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
643 sprintf(ft->UID, "%s", FILE_SEND_UID); |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
644 |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
645 g_free(tmp); |
| 1 | 646 |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
647 for (i--; i >= 0; i--) |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
648 g_free(messages[i]); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
649 |
|
507
d17547ff9c2a
[gaim-migrate @ 517]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
472
diff
changeset
|
650 if (totalsize) /* sanity check */ |
|
d17547ff9c2a
[gaim-migrate @ 517]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
472
diff
changeset
|
651 accept_file_dialog(ft); |
|
197
24f0fef56a73
[gaim-migrate @ 207]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
196
diff
changeset
|
652 } else if (!strcmp(uuid, FILE_GET_UID)) { |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
653 /* we're sending a file */ |
|
211
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
654 for (i=0; i<4; i++) { |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
655 sscanf(strtok(NULL, ":"), "%d", &unk[i]); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
656 if (unk[i] == 10001) |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
657 break; |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
658 messages[i] = frombase64(strtok(NULL, ":")); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
659 } |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
660 tmp = frombase64(strtok(NULL, ":")); |
|
198
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
661 ft = g_new0(struct file_transfer, 1); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
662 |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
663 ft->cookie = g_strdup(cookie); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
664 ft->ip = g_strdup(pip); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
665 ft->port = port; |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
666 if (i) |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
667 ft->message = g_strdup(messages[0]); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
668 else |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
669 ft->message = NULL; |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
670 ft->user = g_strdup(user); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
671 sprintf(ft->UID, "%s", FILE_GET_UID); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
672 |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
673 g_free(tmp); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
674 |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
675 for (i--; i >= 0; i--) |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
676 g_free(messages[i]); |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
677 |
|
73e9a0bfff62
[gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
197
diff
changeset
|
678 accept_file_dialog(ft); |
|
369
cf895313fc50
[gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
351
diff
changeset
|
679 } else if (!strcmp(uuid, VOICE_UID)) { |
|
cf895313fc50
[gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
351
diff
changeset
|
680 /* oh goody. voice over ip. fun stuff. */ |
|
cf895313fc50
[gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
351
diff
changeset
|
681 |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
682 /* |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
683 } else if (!strcmp(uuid, B_ICON_UID)) { |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
684 } else if (!strcmp(uuid, IMAGE_UID)) { |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
685 */ |
| 1 | 686 |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
687 } else { |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
688 sprintf(debug_buff,"don't know what to do with %s\n", |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
689 uuid); |
|
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
690 debug_print(debug_buff); |
|
211
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
691 tmp = g_malloc(BUF_LEN); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
692 name = frombase64(cookie); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
693 snprintf(tmp, BUF_LEN, "toc_rvous_cancel %s %s %s", |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
694 user, name, uuid); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
695 sflap_send(tmp, strlen(tmp), TYPE_DATA); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
696 free(name); |
|
2042a38da38b
[gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
697 free(tmp); |
|
196
3042e11c1902
[gaim-migrate @ 206]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
194
diff
changeset
|
698 } |
| 1 | 699 } else { |
| 700 sprintf(debug_buff,"don't know what to do with %s\n", c); | |
| 701 debug_print(debug_buff); | |
| 702 } | |
| 703 g_free(buf); | |
| 704 } | |
| 705 | |
| 706 | |
| 707 int toc_signon(char *username, char *password) | |
| 708 { | |
| 709 char buf[BUF_LONG]; | |
| 710 int res; | |
| 711 struct signon so; | |
| 712 | |
| 713 sprintf(debug_buff,"State = %d\n", state); | |
| 714 debug_print(debug_buff); | |
| 715 | |
| 716 if ((res = write(toc_fd, FLAPON, strlen(FLAPON))) < 0) | |
| 717 return res; | |
| 718 /* Wait for signon packet */ | |
| 719 | |
| 720 state = STATE_FLAPON; | |
| 721 | |
| 722 if ((res = wait_reply(buf, sizeof(buf)) < 0)) | |
| 723 return res; | |
| 724 | |
| 725 if (state != STATE_SIGNON_REQUEST) { | |
| 726 sprintf(debug_buff, "State should be %d, but is %d instead\n", STATE_SIGNON_REQUEST, state); | |
| 727 debug_print(debug_buff); | |
| 728 return -1; | |
| 729 } | |
| 730 | |
| 731 /* Compose a response */ | |
| 732 | |
| 733 g_snprintf(so.username, sizeof(so.username), "%s", username); | |
| 734 so.ver = ntohl(1); | |
| 735 so.tag = ntohs(1); | |
| 736 so.namelen = htons(strlen(so.username)); | |
| 737 | |
| 738 sflap_send((char *)&so, ntohs(so.namelen) + 8, TYPE_SIGNON); | |
| 739 | |
| 740 g_snprintf(buf, sizeof(buf), | |
| 741 "toc_signon %s %d %s %s %s \"%s\"", | |
| 742 login_host, login_port, normalize(username), roast_password(password), LANGUAGE, REVISION); | |
| 743 | |
| 744 sprintf(debug_buff,"Send: %s\n", buf); | |
| 745 debug_print(debug_buff); | |
| 746 | |
| 747 return sflap_send(buf, -1, TYPE_DATA); | |
| 748 } | |
| 749 | |
| 750 int toc_wait_signon() | |
| 751 { | |
| 752 /* Wait for the SIGNON to be approved */ | |
|
351
22161278657c
[gaim-migrate @ 361]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
753 char buf[BUF_LONG]; |
| 1 | 754 int res; |
| 755 res = wait_reply(buf, sizeof(buf)); | |
| 756 if (res < 0) | |
| 757 return res; | |
| 758 if (state != STATE_SIGNON_ACK) { | |
| 759 sprintf(debug_buff, "State should be %d, but is %d instead\n",STATE_SIGNON_ACK, state); | |
| 760 debug_print(debug_buff); | |
| 761 return -1; | |
| 762 } | |
| 763 return 0; | |
| 764 } | |
| 765 | |
| 766 #ifdef _WIN32 | |
| 767 gint win32_read() | |
| 768 { | |
| 769 int ret; | |
| 770 struct fd_set fds; | |
| 771 struct timeval tv; | |
| 772 | |
| 773 FD_ZERO(&fds); | |
| 774 | |
| 775 tv.tv_sec = 0; | |
| 776 tv.tv_usec = 200; | |
| 777 | |
| 778 FD_SET(toc_fd, &fds); | |
| 779 | |
| 780 ret = select(toc_fd + 1, &fds, NULL, NULL, &tv); | |
| 781 | |
| 782 if (ret == 0) { | |
| 783 return TRUE; | |
| 784 } | |
| 785 | |
| 786 toc_callback(NULL, 0, (GdkInputCondition)0); | |
| 787 return TRUE; | |
| 788 } | |
| 789 #endif | |
| 790 | |
| 791 | |
| 792 char *toc_wait_config() | |
| 793 { | |
| 794 /* Waits for configuration packet, returning the contents of the packet */ | |
|
351
22161278657c
[gaim-migrate @ 361]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
795 static char buf[BUF_LONG]; |
| 1 | 796 int res; |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
797 res = wait_reply(buf, sizeof(buf)); |
| 1 | 798 if (res < 0) |
| 799 return NULL; | |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
800 /* Apparently, the toc_config is optional. *VERY* Optional |
| 285 | 801 */ |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
802 if (state != STATE_CONFIG) { |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
803 res = 0; |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
804 } else { |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
805 res = 1; |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
806 } |
| 1 | 807 /* At this point, it's time to setup automatic handling of incoming packets */ |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
808 state = STATE_ONLINE; |
| 1 | 809 #ifdef _WIN32 |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
810 win32_r = gtk_timeout_add(1000, (GtkFunction)win32_read, NULL); |
| 1 | 811 #else |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
812 inpa = gdk_input_add(toc_fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, toc_callback, NULL); |
| 1 | 813 #endif |
|
300
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
814 if (res) |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
815 return buf; |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
816 else |
|
b32c83750104
[gaim-migrate @ 310]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
296
diff
changeset
|
817 return NULL; |
| 1 | 818 } |
| 819 | |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
820 void toc_build_config(char *s, int len, gboolean show) |
| 1 | 821 { |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
822 GList *grp = groups; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
823 GList *mem; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
824 struct group *g; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
825 struct buddy *b; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
826 GList *plist = permit; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
827 GList *dlist = deny; |
| 1 | 828 |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
829 int pos=0; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
830 |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
831 if (!permdeny) |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
832 permdeny = 1; |
| 1 | 833 |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
834 pos += g_snprintf(&s[pos], len - pos, "m %d\n", permdeny); |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
835 while(grp) { |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
836 g = (struct group *)grp->data; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
837 pos += g_snprintf(&s[pos], len - pos, "g %s\n", g->name); |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
838 mem = g->members; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
839 while(mem) { |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
840 b = (struct buddy *)mem->data; |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
841 pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n", b->name, |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
842 show ? ":" : "", show ? b->show : ""); |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
843 mem = mem->next; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
844 } |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
845 grp = grp ->next; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
846 } |
| 1 | 847 |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
848 while(plist) { |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
849 pos += g_snprintf(&s[pos], len - pos, "p %s\n", (char *)plist->data); |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
850 plist=plist->next; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
851 } |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
852 |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
853 while(dlist) { |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
854 pos += g_snprintf(&s[pos], len - pos, "d %s\n", (char *)dlist->data); |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
855 dlist=dlist->next; |
|
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
676
diff
changeset
|
856 } |
| 1 | 857 } |
| 858 | |
|
296
a88b889b692b
[gaim-migrate @ 306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
285
diff
changeset
|
859 void parse_toc_buddy_list(char *config, int from_do_import) |
| 1 | 860 { |
| 861 char *c; | |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
862 char current[256]; |
| 1 | 863 char *name; |
| 864 GList *bud; | |
| 228 | 865 int how_many = 0; |
| 866 | |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
867 /* Clean out the permit/deny list!*/ |
|
657
4bbc103a3294
[gaim-migrate @ 667]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
868 /* why? if we're going to merge things, then these should stay |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
869 g_list_free(permit); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
870 g_list_free(deny); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
871 permit = NULL; |
| 1 | 872 deny = NULL; |
|
657
4bbc103a3294
[gaim-migrate @ 667]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
873 */ |
| 1 | 874 bud = NULL; |
| 875 | |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
876 /* skip "CONFIG:" (if it exists)*/ |
| 1 | 877 |
|
332
b573f33c5e0e
[gaim-migrate @ 342]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
878 if (config != NULL) { |
|
b573f33c5e0e
[gaim-migrate @ 342]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
879 |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
880 c = strncmp(config + sizeof(struct sflap_hdr),"CONFIG:",strlen("CONFIG:"))? |
| 1 | 881 strtok(config, "\n"): |
| 882 strtok(config + sizeof(struct sflap_hdr)+strlen("CONFIG:"), "\n"); | |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
883 do { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
884 if (c == NULL) |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
885 break; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
886 if (*c == 'g') { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
887 strncpy(current,c+2, sizeof(current)); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
888 add_group(current); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
889 how_many++; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
890 } else if (*c == 'b' && !find_buddy(c+2)) { |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
891 char nm[80], sw[80], *tmp = c+2; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
892 int i = 0; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
893 while (*tmp != ':' && *tmp) |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
894 nm[i++] = *tmp++; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
895 if (*tmp == ':') *tmp++ = '\0'; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
896 nm[i] = '\0'; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
897 i = 0; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
898 while (*tmp) sw[i++] = *tmp++; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
899 sw[i] = '\0'; |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
900 if (!find_buddy(nm)) |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
901 add_buddy(current, nm, sw); |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
902 how_many++; |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
681
diff
changeset
|
903 |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
904 bud = g_list_append(bud, c+2); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
905 } else if (*c == 'p') { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
906 GList *d = permit; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
907 char *n; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
908 name = g_malloc(strlen(c+2) + 2); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
909 g_snprintf(name, strlen(c+2) + 1, "%s", c+2); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
910 n = g_strdup(normalize(name)); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
911 while (d) { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
912 if (!strcasecmp(n, normalize(d->data))) |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
913 break; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
914 d = d->next; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
915 } |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
916 g_free(n); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
917 if (!d) |
|
762
977048924ce1
[gaim-migrate @ 772]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
761
diff
changeset
|
918 permit = g_list_append(permit, name); |
|
977048924ce1
[gaim-migrate @ 772]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
761
diff
changeset
|
919 g_free(name); |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
920 } else if (*c == 'd') { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
921 GList *d = deny; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
922 char *n; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
923 name = g_malloc(strlen(c+2) + 2); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
924 g_snprintf(name, strlen(c+2) + 1, "%s", c+2); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
925 n = g_strdup(normalize(name)); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
926 while (d) { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
927 if (!strcasecmp(n, normalize(d->data))) |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
928 break; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
929 d = d->next; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
930 } |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
931 g_free(n); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
932 if (!d) |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
933 deny = g_list_append(deny, name); |
|
762
977048924ce1
[gaim-migrate @ 772]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
761
diff
changeset
|
934 g_free(name); |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
935 } else if (*c == 't') { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
936 sscanf(c + strlen(c) - 2, "%d", &permdeny); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
937 if (permdeny == 0) |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
938 permdeny = 1; |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
939 } |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
940 } while((c=strtok(NULL,"\n"))); |
| 1 | 941 #if 0 |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
942 fprintf(stdout, "Sending message '%s'\n",buf); |
| 1 | 943 #endif |
|
681
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
944 |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
945 if (bud != NULL) serv_add_buddies(bud); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
946 serv_set_permit_deny(); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
947 if (blist) { |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
948 build_edit_tree(); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
949 build_permit_tree(); |
|
5422dbecd861
[gaim-migrate @ 691]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
950 } |
|
332
b573f33c5e0e
[gaim-migrate @ 342]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
951 } |
|
b573f33c5e0e
[gaim-migrate @ 342]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
952 |
| 228 | 953 /* perhaps the server dropped the buddy list, try importing from |
| 954 cache */ | |
| 955 | |
|
296
a88b889b692b
[gaim-migrate @ 306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
285
diff
changeset
|
956 if ( how_many == 0 && !from_do_import ) { |
| 228 | 957 do_import( (GtkWidget *) NULL, 0 ); |
| 229 | 958 } else if ( bud_list_cache_exists() == FALSE ) { |
| 959 do_export( (GtkWidget *) NULL, 0 ); | |
| 228 | 960 } |
| 1 | 961 } |
