comparison src/server.c @ 423:0d4e80bdb96b

[gaim-migrate @ 433] No more --enable-oscar option. From now on, it's a toggle in the preferences. PLEASE DO NOT USE OSCAR, even though it's very easy to. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 21 Jun 2000 19:33:58 +0000
parents f9dc74875833
children 5db3734a1fe6
comparison
equal deleted inserted replaced
422:7cd05539952d 423:0d4e80bdb96b
28 #include <sys/types.h> 28 #include <sys/types.h>
29 #include <sys/stat.h> 29 #include <sys/stat.h>
30 #include <sys/time.h> 30 #include <sys/time.h>
31 #include <unistd.h> 31 #include <unistd.h>
32 #include <gtk/gtk.h> 32 #include <gtk/gtk.h>
33 #ifdef USE_OSCAR
34 #include <aim.h> 33 #include <aim.h>
35 extern int gaim_caps; 34 extern int gaim_caps;
36 #endif
37 #include "gaim.h" 35 #include "gaim.h"
38 36
39 static int idle_timer = -1; 37 static int idle_timer = -1;
40 static time_t lastsent = 0; 38 static time_t lastsent = 0;
41 static time_t login_time = 0; 39 static time_t login_time = 0;
44 42
45 int correction_time = 0; 43 int correction_time = 0;
46 44
47 int serv_login(char *username, char *password) 45 int serv_login(char *username, char *password)
48 { 46 {
49 #ifndef USE_OSCAR 47 if (!(general_options & OPT_GEN_USE_OSCAR)) {
50 return toc_login(username, password); 48 USE_OSCAR = 0;
51 #else 49 return toc_login(username, password);
52 return oscar_login(username, password); 50 } else {
53 #endif 51 USE_OSCAR = 1;
52 debug_print("Logging in using Oscar. Expect problems.\n");
53 return oscar_login(username, password);
54 }
54 } 55 }
55 56
56 void serv_close() 57 void serv_close()
57 { 58 {
58 #ifndef USE_OSCAR 59 if (!USE_OSCAR)
59 toc_close(); 60 toc_close();
60 #else 61 else
61 oscar_close(); 62 oscar_close();
62 #endif 63
63 gtk_timeout_remove(idle_timer); 64 gtk_timeout_remove(idle_timer);
64 idle_timer = -1; 65 idle_timer = -1;
65 } 66 }
66 67
67 68
154 155
155 156
156 157
157 void serv_send_im(char *name, char *message, int away) 158 void serv_send_im(char *name, char *message, int away)
158 { 159 {
159 #ifndef USE_OSCAR 160 if (!USE_OSCAR) {
160 char buf[MSG_LEN - 7]; 161 char buf[MSG_LEN - 7];
161 162
162 g_snprintf(buf, MSG_LEN - 8, "toc_send_im %s \"%s\"%s", normalize(name), 163 g_snprintf(buf, MSG_LEN - 8, "toc_send_im %s \"%s\"%s", normalize(name),
163 message, ((away) ? " auto" : "")); 164 message, ((away) ? " auto" : ""));
164 sflap_send(buf, strlen(buf), TYPE_DATA); 165 sflap_send(buf, strlen(buf), TYPE_DATA);
165 #else 166 } else {
166 if (away) 167 if (away)
167 aim_send_im(gaim_sess, gaim_conn, name, AIM_IMFLAGS_AWAY, message); 168 aim_send_im(gaim_sess, gaim_conn, name, AIM_IMFLAGS_AWAY, message);
168 else 169 else
169 aim_send_im(gaim_sess, gaim_conn, name, 0, message); 170 aim_send_im(gaim_sess, gaim_conn, name, 0, message);
170 #endif 171 }
171 if (!away) 172 if (!away)
172 serv_touch_idle(); 173 serv_touch_idle();
173 } 174 }
174 175
175 void serv_get_info(char *name) 176 void serv_get_info(char *name)
176 { 177 {
177 #ifndef USE_OSCAR 178 if (!USE_OSCAR) {
178 char buf[MSG_LEN]; 179 char buf[MSG_LEN];
179 g_snprintf(buf, MSG_LEN, "toc_get_info %s", normalize(name)); 180 g_snprintf(buf, MSG_LEN, "toc_get_info %s", normalize(name));
180 sflap_send(buf, -1, TYPE_DATA); 181 sflap_send(buf, -1, TYPE_DATA);
181 #else 182 } else {
182 aim_getinfo(gaim_sess, gaim_conn, name, AIM_GETINFO_GENERALINFO); 183 aim_getinfo(gaim_sess, gaim_conn, name, AIM_GETINFO_GENERALINFO);
183 #endif 184 }
184 } 185 }
185 186
186 void serv_get_away_msg(char *name) 187 void serv_get_away_msg(char *name)
187 { 188 {
188 #ifndef USE_OSCAR 189 if (!USE_OSCAR) {
189 /* HAHA! TOC doesn't have this yet */ 190 /* HAHA! TOC doesn't have this yet */
190 #else 191 } else {
191 aim_getinfo(gaim_sess, gaim_conn, name, AIM_GETINFO_AWAYMESSAGE); 192 aim_getinfo(gaim_sess, gaim_conn, name, AIM_GETINFO_AWAYMESSAGE);
192 #endif 193 }
193 } 194 }
194 195
195 void serv_get_dir(char *name) 196 void serv_get_dir(char *name)
196 { 197 {
197 #ifndef USE_OSCAR 198 if (!USE_OSCAR) {
198 char buf[MSG_LEN]; 199 char buf[MSG_LEN];
199 g_snprintf(buf, MSG_LEN, "toc_get_dir %s", normalize(name)); 200 g_snprintf(buf, MSG_LEN, "toc_get_dir %s", normalize(name));
200 sflap_send(buf, -1, TYPE_DATA); 201 sflap_send(buf, -1, TYPE_DATA);
201 #endif 202 }
202 } 203 }
203 204
204 void serv_set_dir(char *first, char *middle, char *last, char *maiden, 205 void serv_set_dir(char *first, char *middle, char *last, char *maiden,
205 char *city, char *state, char *country, int web) 206 char *city, char *state, char *country, int web)
206 { 207 {
207 #ifndef USE_OSCAR 208 if (!USE_OSCAR) {
208 char buf2[BUF_LEN*4], buf[BUF_LEN]; 209 char buf2[BUF_LEN*4], buf[BUF_LEN];
209 g_snprintf(buf2, sizeof(buf2), "%s:%s:%s:%s:%s:%s:%s:%s", first, 210 g_snprintf(buf2, sizeof(buf2), "%s:%s:%s:%s:%s:%s:%s:%s", first,
210 middle, last, maiden, city, state, country, 211 middle, last, maiden, city, state, country,
211 (web == 1) ? "Y" : ""); 212 (web == 1) ? "Y" : "");
212 escape_text(buf2); 213 escape_text(buf2);
213 g_snprintf(buf, sizeof(buf), "toc_set_dir %s", buf2); 214 g_snprintf(buf, sizeof(buf), "toc_set_dir %s", buf2);
214 sflap_send(buf, -1, TYPE_DATA); 215 sflap_send(buf, -1, TYPE_DATA);
215 #endif 216 }
216 } 217 }
217 218
218 void serv_dir_search(char *first, char *middle, char *last, char *maiden, 219 void serv_dir_search(char *first, char *middle, char *last, char *maiden,
219 char *city, char *state, char *country, char *email) 220 char *city, char *state, char *country, char *email)
220 { 221 {
221 #ifndef USE_OSCAR 222 if (!USE_OSCAR) {
222 char buf[BUF_LONG]; 223 char buf[BUF_LONG];
223 g_snprintf(buf, sizeof(buf)/2, "toc_dir_search %s:%s:%s:%s:%s:%s:%s:%s", first, middle, last, maiden, city, state, country, email); 224 g_snprintf(buf, sizeof(buf)/2, "toc_dir_search %s:%s:%s:%s:%s:%s:%s:%s", first, middle, last, maiden, city, state, country, email);
224 sprintf(debug_buff,"Searching for: %s,%s,%s,%s,%s,%s,%s\n", first, middle, last, maiden, city, state, country); 225 sprintf(debug_buff,"Searching for: %s,%s,%s,%s,%s,%s,%s\n", first, middle, last, maiden, city, state, country);
225 debug_print(debug_buff); 226 debug_print(debug_buff);
226 sflap_send(buf, -1, TYPE_DATA); 227 sflap_send(buf, -1, TYPE_DATA);
227 #else 228 } else {
228 if (strlen(email)) 229 if (strlen(email))
229 aim_usersearch_address(gaim_sess, gaim_conn, email); 230 aim_usersearch_address(gaim_sess, gaim_conn, email);
230 #endif 231 }
231 } 232 }
232 233
233 234
234 void serv_set_away(char *message) 235 void serv_set_away(char *message)
235 { 236 {
236 #ifndef USE_OSCAR 237 if (!USE_OSCAR) {
237 char buf[MSG_LEN]; 238 char buf[MSG_LEN];
238 if (message) 239 if (message)
239 g_snprintf(buf, MSG_LEN, "toc_set_away \"%s\"", message); 240 g_snprintf(buf, MSG_LEN, "toc_set_away \"%s\"", message);
240 else 241 else
241 g_snprintf(buf, MSG_LEN, "toc_set_away \"\""); 242 g_snprintf(buf, MSG_LEN, "toc_set_away \"\"");
242 sflap_send(buf, -1, TYPE_DATA); 243 sflap_send(buf, -1, TYPE_DATA);
243 #else 244 } else {
244 aim_bos_setprofile(gaim_sess, gaim_conn, current_user->user_info, 245 aim_bos_setprofile(gaim_sess, gaim_conn, current_user->user_info,
245 message, gaim_caps); 246 message, gaim_caps);
246 #endif 247 }
247 } 248 }
248 249
249 void serv_set_info(char *info) 250 void serv_set_info(char *info)
250 { 251 {
251 #ifndef USE_OSCAR 252 if (!USE_OSCAR) {
252 char buf[MSG_LEN]; 253 char buf[MSG_LEN];
253 g_snprintf(buf, sizeof(buf), "toc_set_info \"%s\n\"", info); 254 g_snprintf(buf, sizeof(buf), "toc_set_info \"%s\n\"", info);
254 sflap_send(buf, -1, TYPE_DATA); 255 sflap_send(buf, -1, TYPE_DATA);
255 #else 256 } else {
256 if (awaymessage) 257 if (awaymessage)
257 aim_bos_setprofile(gaim_sess, gaim_conn, info, 258 aim_bos_setprofile(gaim_sess, gaim_conn, info,
258 awaymessage->message, gaim_caps); 259 awaymessage->message, gaim_caps);
259 else 260 else
260 aim_bos_setprofile(gaim_sess, gaim_conn, info, 261 aim_bos_setprofile(gaim_sess, gaim_conn, info,
261 NULL, gaim_caps); 262 NULL, gaim_caps);
262 #endif 263 }
263 } 264 }
264 265
265 extern gboolean change_password; 266 extern gboolean change_password;
266 extern char *old_password; 267 extern char *old_password;
267 extern char *new_password; 268 extern char *new_password;
268 269
269 void serv_change_passwd(char *orig, char *new) { 270 void serv_change_passwd(char *orig, char *new) {
270 #ifndef USE_OSCAR 271 if (!USE_OSCAR) {
271 char *buf = g_malloc(BUF_LONG); 272 char *buf = g_malloc(BUF_LONG);
272 g_snprintf(buf, BUF_LONG, "toc_change_passwd %s %s", orig, new); 273 g_snprintf(buf, BUF_LONG, "toc_change_passwd %s %s", orig, new);
273 sflap_send(buf, strlen(buf), TYPE_DATA); 274 sflap_send(buf, strlen(buf), TYPE_DATA);
274 g_free(buf); 275 g_free(buf);
275 #else 276 } else {
276 if (change_password) return; 277 if (change_password) return;
277 change_password = TRUE; 278 change_password = TRUE;
278 old_password = g_strdup(orig); 279 old_password = g_strdup(orig);
279 new_password = g_strdup(new); 280 new_password = g_strdup(new);
280 aim_bos_reqservice(gaim_sess, gaim_conn, AIM_CONN_TYPE_AUTH); 281 aim_bos_reqservice(gaim_sess, gaim_conn, AIM_CONN_TYPE_AUTH);
281 #endif 282 }
282 } 283 }
283 284
284 void serv_add_buddy(char *name) 285 void serv_add_buddy(char *name)
285 { 286 {
286 #ifndef USE_OSCAR 287 if (!USE_OSCAR) {
287 char buf[1024]; 288 char buf[1024];
288 g_snprintf(buf, sizeof(buf), "toc_add_buddy %s", normalize(name)); 289 g_snprintf(buf, sizeof(buf), "toc_add_buddy %s", normalize(name));
289 sflap_send(buf, -1, TYPE_DATA); 290 sflap_send(buf, -1, TYPE_DATA);
290 #else 291 } else {
291 aim_add_buddy(gaim_sess, gaim_conn, name); 292 aim_add_buddy(gaim_sess, gaim_conn, name);
292 #endif 293 }
293 } 294 }
294 295
295 void serv_add_buddies(GList *buddies) 296 void serv_add_buddies(GList *buddies)
296 { 297 {
297 #ifndef USE_OSCAR 298 if (!USE_OSCAR) {
298 char buf[MSG_LEN]; 299 char buf[MSG_LEN];
299 int n, num = 0; 300 int n, num = 0;
300 301
301 n = g_snprintf(buf, sizeof(buf), "toc_add_buddy"); 302 n = g_snprintf(buf, sizeof(buf), "toc_add_buddy");
302 while(buddies) { 303 while(buddies) {
308 ++num; 309 ++num;
309 n += g_snprintf(buf + n, sizeof(buf) - n, " %s", normalize(buddies->data)); 310 n += g_snprintf(buf + n, sizeof(buf) - n, " %s", normalize(buddies->data));
310 buddies = buddies->next; 311 buddies = buddies->next;
311 } 312 }
312 sflap_send(buf, -1, TYPE_DATA); 313 sflap_send(buf, -1, TYPE_DATA);
313 #else 314 } else {
314 char buf[MSG_LEN]; 315 char buf[MSG_LEN];
315 int n = 0; 316 int n = 0;
316 while(buddies) { 317 while(buddies) {
317 if (n > MSG_LEN - 18) { 318 if (n > MSG_LEN - 18) {
318 aim_bos_setbuddylist(gaim_sess, gaim_conn, buf); 319 aim_bos_setbuddylist(gaim_sess, gaim_conn, buf);
321 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", 322 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&",
322 (char *)buddies->data); 323 (char *)buddies->data);
323 buddies = buddies->next; 324 buddies = buddies->next;
324 } 325 }
325 aim_bos_setbuddylist(gaim_sess, gaim_conn, buf); 326 aim_bos_setbuddylist(gaim_sess, gaim_conn, buf);
326 #endif 327 }
327 } 328 }
328 329
329 330
330 void serv_remove_buddy(char *name) 331 void serv_remove_buddy(char *name)
331 { 332 {
332 #ifndef USE_OSCAR 333 if (!USE_OSCAR) {
333 char buf[1024]; 334 char buf[1024];
334 g_snprintf(buf, sizeof(buf), "toc_remove_buddy %s", normalize(name)); 335 g_snprintf(buf, sizeof(buf), "toc_remove_buddy %s", normalize(name));
335 sflap_send(buf, -1, TYPE_DATA); 336 sflap_send(buf, -1, TYPE_DATA);
336 #else 337 } else {
337 aim_remove_buddy(gaim_sess, gaim_conn, name); 338 aim_remove_buddy(gaim_sess, gaim_conn, name);
338 #endif 339 }
339 } 340 }
340 341
341 void serv_add_permit(char *name) 342 void serv_add_permit(char *name)
342 { 343 {
343 #ifndef USE_OSCAR 344 if (!USE_OSCAR) {
344 char buf[1024]; 345 char buf[1024];
345 g_snprintf(buf, sizeof(buf), "toc_add_permit %s", normalize(name)); 346 g_snprintf(buf, sizeof(buf), "toc_add_permit %s", normalize(name));
346 sflap_send(buf, -1, TYPE_DATA); 347 sflap_send(buf, -1, TYPE_DATA);
347 #else 348 } else {
348 serv_set_permit_deny(); 349 serv_set_permit_deny();
349 #endif 350 }
350 } 351 }
351 352
352 353
353 354
354 void serv_add_deny(char *name) 355 void serv_add_deny(char *name)
355 { 356 {
356 #ifndef USE_OSCAR 357 if (!USE_OSCAR) {
357 char buf[1024]; 358 char buf[1024];
358 g_snprintf(buf, sizeof(buf), "toc_add_deny %s", normalize(name)); 359 g_snprintf(buf, sizeof(buf), "toc_add_deny %s", normalize(name));
359 sflap_send(buf, -1, TYPE_DATA); 360 sflap_send(buf, -1, TYPE_DATA);
360 #else 361 } else {
361 serv_set_permit_deny(); 362 serv_set_permit_deny();
362 #endif 363 }
363 } 364 }
364 365
365 366
366 367
367 void serv_set_permit_deny() 368 void serv_set_permit_deny()
368 { 369 {
369 #ifndef USE_OSCAR 370 if (!USE_OSCAR) {
370 char buf[MSG_LEN]; 371 char buf[MSG_LEN];
371 int at; 372 int at;
372 GList *list; 373 GList *list;
373 374
374 if (permdeny == 1 || permdeny == 4) { 375 if (permdeny == 1 || permdeny == 4) {
399 list = list->next; 400 list = list->next;
400 } 401 }
401 buf[at] = 0; 402 buf[at] = 0;
402 sflap_send(buf, -1, TYPE_DATA); 403 sflap_send(buf, -1, TYPE_DATA);
403 } 404 }
404 #else 405 } else {
405 /* oscar requires us to do everyone at once (?) */ 406 /* oscar requires us to do everyone at once (?) */
406 /* I think this code is OK now. */ 407 /* I think this code is OK now. */
407 char buf[BUF_LONG]; int at; GList *list, *grp, *bud; 408 char buf[BUF_LONG]; int at; GList *list, *grp, *bud;
408 if (permdeny == 3) { /* Permit Some : Only people on buddy list and 409 if (permdeny == 3) { /* Permit Some : Only people on buddy list and
409 on permit list */ 410 on permit list */
437 list = list->next; 438 list = list->next;
438 } 439 }
439 aim_bos_changevisibility(gaim_sess, gaim_conn, 440 aim_bos_changevisibility(gaim_sess, gaim_conn,
440 AIM_VISIBILITYCHANGE_DENYADD, buf); 441 AIM_VISIBILITYCHANGE_DENYADD, buf);
441 } 442 }
442 #endif 443 }
443 } 444 }
444 445
445 void serv_set_idle(int time) 446 void serv_set_idle(int time)
446 { 447 {
447 #ifndef USE_OSCAR 448 if (!USE_OSCAR) {
448 char buf[256]; 449 char buf[256];
449 g_snprintf(buf, sizeof(buf), "toc_set_idle %d", time); 450 g_snprintf(buf, sizeof(buf), "toc_set_idle %d", time);
450 sflap_send(buf, -1, TYPE_DATA); 451 sflap_send(buf, -1, TYPE_DATA);
451 #else 452 } else {
452 aim_bos_setidle(gaim_sess, gaim_conn, time); 453 aim_bos_setidle(gaim_sess, gaim_conn, time);
453 #endif 454 }
454 } 455 }
455 456
456 457
457 void serv_warn(char *name, int anon) 458 void serv_warn(char *name, int anon)
458 { 459 {
459 #ifndef USE_OSCAR 460 if (!USE_OSCAR) {
460 char *send = g_malloc(256); 461 char *send = g_malloc(256);
461 g_snprintf(send, 255, "toc_evil %s %s", name, 462 g_snprintf(send, 255, "toc_evil %s %s", name,
462 ((anon) ? "anon" : "norm")); 463 ((anon) ? "anon" : "norm"));
463 sflap_send(send, -1, TYPE_DATA); 464 sflap_send(send, -1, TYPE_DATA);
464 g_free(send); 465 g_free(send);
465 #endif 466 }
466 } 467 }
467 468
468 void serv_build_config(char *buf, int len) { 469 void serv_build_config(char *buf, int len) {
469 toc_build_config(buf, len); 470 toc_build_config(buf, len);
470 } 471 }
471 472
472 473
473 void serv_save_config() 474 void serv_save_config()
474 { 475 {
475 #ifndef USE_OSCAR 476 if (!USE_OSCAR) {
476 char *buf = g_malloc(BUF_LONG); 477 char *buf = g_malloc(BUF_LONG);
477 char *buf2 = g_malloc(MSG_LEN); 478 char *buf2 = g_malloc(MSG_LEN);
478 serv_build_config(buf, BUF_LONG / 2); 479 serv_build_config(buf, BUF_LONG / 2);
479 g_snprintf(buf2, MSG_LEN, "toc_set_config {%s}", buf); 480 g_snprintf(buf2, MSG_LEN, "toc_set_config {%s}", buf);
480 sflap_send(buf2, -1, TYPE_DATA); 481 sflap_send(buf2, -1, TYPE_DATA);
481 g_free(buf2); 482 g_free(buf2);
482 g_free(buf); 483 g_free(buf);
483 #endif 484 }
484 } 485 }
485 486
486 487
487 void serv_accept_chat(int i) 488 void serv_accept_chat(int i)
488 { 489 {
489 #ifndef USE_OSCAR 490 if (!USE_OSCAR) {
490 char *buf = g_malloc(256); 491 char *buf = g_malloc(256);
491 g_snprintf(buf, 255, "toc_chat_accept %d", i); 492 g_snprintf(buf, 255, "toc_chat_accept %d", i);
492 sflap_send(buf, -1, TYPE_DATA); 493 sflap_send(buf, -1, TYPE_DATA);
493 g_free(buf); 494 g_free(buf);
494 #else 495 } else {
495 /* this should never get called because libfaim doesn't use the id 496 /* this should never get called because libfaim doesn't use the id
496 * (i'm not even sure Oscar does). go through serv_join_chat instead */ 497 * (i'm not even sure Oscar does). go through serv_join_chat instead */
497 #endif 498 }
498 } 499 }
499 500
500 void serv_join_chat(int exchange, char *name) 501 void serv_join_chat(int exchange, char *name)
501 { 502 {
502 #ifndef USE_OSCAR 503 if (!USE_OSCAR) {
503 char buf[BUF_LONG]; 504 char buf[BUF_LONG];
504 g_snprintf(buf, sizeof(buf)/2, "toc_chat_join %d \"%s\"", exchange, name); 505 g_snprintf(buf, sizeof(buf)/2, "toc_chat_join %d \"%s\"", exchange, name);
505 sflap_send(buf, -1, TYPE_DATA); 506 sflap_send(buf, -1, TYPE_DATA);
506 #else 507 } else {
507 sprintf(debug_buff, "Attempting to join chat room %s.\n", name); 508 sprintf(debug_buff, "Attempting to join chat room %s.\n", name);
508 debug_print(debug_buff); 509 debug_print(debug_buff);
509 /* aim_bos_reqservice(gaim_sess, gaim_conn, AIM_CONN_TYPE_CHATNAV); */ 510 aim_chat_join(gaim_sess, gaim_conn, 0x0004, name);
510 /* aim_chatnav_createroom(gaim_sess, aim_getconn_type(gaim_sess, AIM_CONN_TYPE_CHATNAV), name, 0x0004); */ 511 }
511 aim_chat_join(gaim_sess, gaim_conn, 0x0004, name);
512 #endif
513 } 512 }
514 513
515 void serv_chat_invite(int id, char *message, char *name) 514 void serv_chat_invite(int id, char *message, char *name)
516 { 515 {
517 #ifndef USE_OSCAR 516 if (!USE_OSCAR) {
518 char buf[BUF_LONG]; 517 char buf[BUF_LONG];
519 g_snprintf(buf, sizeof(buf)/2, "toc_chat_invite %d \"%s\" %s", id, message, normalize(name)); 518 g_snprintf(buf, sizeof(buf)/2, "toc_chat_invite %d \"%s\" %s", id, message, normalize(name));
520 sflap_send(buf, -1, TYPE_DATA); 519 sflap_send(buf, -1, TYPE_DATA);
521 #else 520 } else {
522 GList *bcs = buddy_chats; 521 GList *bcs = buddy_chats;
523 struct buddy_chat *b = NULL; 522 struct buddy_chat *b = NULL;
524 523
525 while (bcs) { 524 while (bcs) {
526 b = (struct buddy_chat *)bcs->data; 525 b = (struct buddy_chat *)bcs->data;
527 if (id == b->id) 526 if (id == b->id)
528 break; 527 break;
529 bcs = bcs->next; 528 bcs = bcs->next;
530 b = NULL; 529 b = NULL;
531 } 530 }
532 531
533 if (!b) 532 if (!b)
534 return; 533 return;
535 534
536 aim_chat_invite(gaim_sess, gaim_conn, name, message, 0x4, b->name, 0x1); 535 aim_chat_invite(gaim_sess, gaim_conn, name, message, 0x4, b->name, 0x1);
537 #endif 536 }
538 } 537 }
539 538
540 void serv_chat_leave(int id) 539 void serv_chat_leave(int id)
541 { 540 {
542 #ifndef USE_OSCAR 541 if (!USE_OSCAR) {
543 char *buf = g_malloc(256); 542 char *buf = g_malloc(256);
544 g_snprintf(buf, 255, "toc_chat_leave %d", id); 543 g_snprintf(buf, 255, "toc_chat_leave %d", id);
545 sflap_send(buf, -1, TYPE_DATA); 544 sflap_send(buf, -1, TYPE_DATA);
546 g_free(buf); 545 g_free(buf);
547 #else 546 } else {
548 GList *bcs = buddy_chats; 547 GList *bcs = buddy_chats;
549 struct buddy_chat *b = NULL; 548 struct buddy_chat *b = NULL;
550 struct chat_connection *c = NULL; 549 struct chat_connection *c = NULL;
551 int count = 0; 550 int count = 0;
552 551
574 g_free(c->name); 573 g_free(c->name);
575 g_free(c); 574 g_free(c);
576 } 575 }
577 /* we do this because with Oscar it doesn't tell us we left */ 576 /* we do this because with Oscar it doesn't tell us we left */
578 serv_got_chat_left(b->id); 577 serv_got_chat_left(b->id);
579 #endif 578 }
580 } 579 }
581 580
582 void serv_chat_whisper(int id, char *who, char *message) 581 void serv_chat_whisper(int id, char *who, char *message)
583 { 582 {
584 #ifndef USE_OSCAR 583 if (!USE_OSCAR) {
585 char buf2[MSG_LEN]; 584 char buf2[MSG_LEN];
586 g_snprintf(buf2, sizeof(buf2), "toc_chat_whisper %d %s \"%s\"", id, who, message); 585 g_snprintf(buf2, sizeof(buf2), "toc_chat_whisper %d %s \"%s\"", id, who, message);
587 sflap_send(buf2, -1, TYPE_DATA); 586 sflap_send(buf2, -1, TYPE_DATA);
588 #else 587 } else {
589 do_error_dialog("Sorry, Oscar doesn't whisper. Send an IM. (The last message was not received.)", 588 do_error_dialog("Sorry, Oscar doesn't whisper. Send an IM. (The last message was not received.)",
590 "Gaim - Chat"); 589 "Gaim - Chat");
591 #endif 590 }
592 } 591 }
593 592
594 void serv_chat_send(int id, char *message) 593 void serv_chat_send(int id, char *message)
595 { 594 {
596 #ifndef USE_OSCAR 595 if (!USE_OSCAR) {
597 char buf[MSG_LEN]; 596 char buf[MSG_LEN];
598 g_snprintf(buf, sizeof(buf), "toc_chat_send %d \"%s\"",id, message); 597 g_snprintf(buf, sizeof(buf), "toc_chat_send %d \"%s\"",id, message);
599 sflap_send(buf, -1, TYPE_DATA); 598 sflap_send(buf, -1, TYPE_DATA);
600 #else 599 } else {
601 struct aim_conn_t *cn; 600 struct aim_conn_t *cn;
602 GList *bcs = buddy_chats; 601 GList *bcs = buddy_chats;
603 struct buddy_chat *b = NULL; 602 struct buddy_chat *b = NULL;
604 603
605 while (bcs) { 604 while (bcs) {
606 b = (struct buddy_chat *)bcs->data; 605 b = (struct buddy_chat *)bcs->data;
607 if (id == b->id) 606 if (id == b->id)
608 break; 607 break;
609 bcs = bcs->next; 608 bcs = bcs->next;
610 b = NULL; 609 b = NULL;
611 } 610 }
612 if (!b) 611 if (!b)
613 return; 612 return;
614 613
615 cn = aim_chat_getconn(gaim_sess, b->name); 614 cn = aim_chat_getconn(gaim_sess, b->name);
616 aim_chat_send_im(gaim_sess, cn, message); 615 aim_chat_send_im(gaim_sess, cn, message);
617 #endif 616 }
618 } 617 }
619 618
620 619
621 620
622 621
881 gtk_widget_destroy(w2); 880 gtk_widget_destroy(w2);
882 } 881 }
883 882
884 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2) 883 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2)
885 { 884 {
886 #ifndef USE_OSCAR 885 if (!USE_OSCAR) {
887 int i = (int)gtk_object_get_user_data(GTK_OBJECT(w2)); 886 int i = (int)gtk_object_get_user_data(GTK_OBJECT(w2));
888 serv_accept_chat(i); 887 serv_accept_chat(i);
889 gtk_widget_destroy(w2); 888 gtk_widget_destroy(w2);
890 #else 889 } else {
891 char *i = (char *)gtk_object_get_user_data(GTK_OBJECT(w2)); 890 char *i = (char *)gtk_object_get_user_data(GTK_OBJECT(w2));
892 serv_join_chat(0, i); /* for oscar, it doesn't use the id anyway */ 891 serv_join_chat(0, i); /* for oscar, it doesn't use the id anyway */
893 g_free(i); 892 g_free(i);
894 gtk_widget_destroy(w2); 893 gtk_widget_destroy(w2);
895 #endif 894 }
896 } 895 }
897 896
898 897
899 898
900 void serv_got_chat_invite(char *name, int id, char *who, char *message) 899 void serv_got_chat_invite(char *name, int id, char *who, char *message)
944 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), 943 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area),
945 nobtn, FALSE, FALSE, 5); 944 nobtn, FALSE, FALSE, 5);
946 945
947 946
948 /* gtk_widget_set_usize(d, 200, 110); */ 947 /* gtk_widget_set_usize(d, 200, 110); */
949 #ifndef USE_OSCAR 948
950 gtk_object_set_user_data(GTK_OBJECT(d), (void *)id); 949 if (!USE_OSCAR)
951 #else 950 gtk_object_set_user_data(GTK_OBJECT(d), (void *)id);
952 gtk_object_set_user_data(GTK_OBJECT(d), (void *)g_strdup(name)); 951 else
953 #endif 952 gtk_object_set_user_data(GTK_OBJECT(d), (void *)g_strdup(name));
954 953
955 954
956 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite"); 955 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite");
957 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d); 956 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d);
958 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d); 957 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d);
1072 chat_write(b, who, w, message); 1071 chat_write(b, who, w, message);
1073 } 1072 }
1074 1073
1075 void serv_rvous_accept(char *name, char *cookie, char *uid) 1074 void serv_rvous_accept(char *name, char *cookie, char *uid)
1076 { 1075 {
1077 #ifndef USE_OSCAR 1076 /* Oscar doesn't matter here because this won't ever be called for it */
1078 char buf[MSG_LEN]; 1077 char buf[MSG_LEN];
1079 g_snprintf(buf, MSG_LEN, "toc_rvous_accept %s %s %s", normalize(name), 1078 g_snprintf(buf, MSG_LEN, "toc_rvous_accept %s %s %s", normalize(name),
1080 cookie, uid); 1079 cookie, uid);
1081 sflap_send(buf, strlen(buf), TYPE_DATA); 1080 sflap_send(buf, strlen(buf), TYPE_DATA);
1082 #endif
1083 } 1081 }
1084 1082
1085 void serv_rvous_cancel(char *name, char *cookie, char *uid) 1083 void serv_rvous_cancel(char *name, char *cookie, char *uid)
1086 { 1084 {
1087 #ifndef USE_OSCAR
1088 char buf[MSG_LEN]; 1085 char buf[MSG_LEN];
1089 g_snprintf(buf, MSG_LEN, "toc_rvous_cancel %s %s %s", normalize(name), 1086 g_snprintf(buf, MSG_LEN, "toc_rvous_cancel %s %s %s", normalize(name),
1090 cookie, uid); 1087 cookie, uid);
1091 sflap_send(buf, strlen(buf), TYPE_DATA); 1088 sflap_send(buf, strlen(buf), TYPE_DATA);
1092 #endif 1089 }
1093 }