Changeset 0da65d5 for protocols/nogaim.c
- Timestamp:
- 2007-03-31T05:40:45Z (17 years ago)
- Branches:
- master
- Children:
- aef4828
- Parents:
- fa29d093
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/nogaim.c
rfa29d093 r0da65d5 36 36 #include <ctype.h> 37 37 38 static int remove_chat_buddy_silent( struct conversation*b, char *handle );38 static int remove_chat_buddy_silent( struct groupchat *b, char *handle ); 39 39 40 40 GSList *connections; … … 115 115 void nogaim_init() 116 116 { 117 extern void msn_init ();118 extern void oscar_init ();119 extern void byahoo_init ();120 extern void jabber_init ();117 extern void msn_initmodule(); 118 extern void oscar_initmodule(); 119 extern void byahoo_initmodule(); 120 extern void jabber_initmodule(); 121 121 122 122 #ifdef WITH_MSN 123 msn_init ();123 msn_initmodule(); 124 124 #endif 125 125 126 126 #ifdef WITH_OSCAR 127 oscar_init ();127 oscar_initmodule(); 128 128 #endif 129 129 130 130 #ifdef WITH_YAHOO 131 byahoo_init ();131 byahoo_initmodule(); 132 132 #endif 133 133 134 134 #ifdef WITH_JABBER 135 jabber_init ();135 jabber_initmodule(); 136 136 #endif 137 137 … … 145 145 /* multi.c */ 146 146 147 struct gaim_connection *new_gaim_conn( account_t *acc )148 { 149 struct gaim_connection *gc;150 151 gc = g_new0( struct gaim_connection, 1 );147 struct im_connection *new_gaim_conn( account_t *acc ) 148 { 149 struct im_connection *ic; 150 151 ic = g_new0( struct im_connection, 1 ); 152 152 153 153 /* Maybe we should get rid of this memory waste later. ;-) */ 154 g_snprintf( gc->username, sizeof( gc->username ), "%s", acc->user );155 g_snprintf( gc->password, sizeof( gc->password ), "%s", acc->pass );156 157 gc->irc = acc->irc;158 gc->acc = acc;159 acc-> gc = gc;160 161 connections = g_slist_append( connections, gc );162 163 return( gc );164 } 165 166 void destroy_gaim_conn( struct gaim_connection *gc )154 g_snprintf( ic->username, sizeof( ic->username ), "%s", acc->user ); 155 g_snprintf( ic->password, sizeof( ic->password ), "%s", acc->pass ); 156 157 ic->irc = acc->irc; 158 ic->acc = acc; 159 acc->ic = ic; 160 161 connections = g_slist_append( connections, ic ); 162 163 return( ic ); 164 } 165 166 void destroy_gaim_conn( struct im_connection *ic ) 167 167 { 168 168 account_t *a; 169 169 170 170 /* Destroy the pointer to this connection from the account list */ 171 for( a = gc->irc->accounts; a; a = a->next )172 if( a-> gc == gc )173 { 174 a-> gc = NULL;171 for( a = ic->irc->accounts; a; a = a->next ) 172 if( a->ic == ic ) 173 { 174 a->ic = NULL; 175 175 break; 176 176 } 177 177 178 connections = g_slist_remove( connections, gc );179 g_free( gc );180 } 181 182 void set_login_progress( struct gaim_connection *gc, int step, char *msg )183 { 184 serv_got_crap( gc, "Logging in: %s", msg );178 connections = g_slist_remove( connections, ic ); 179 g_free( ic ); 180 } 181 182 void set_login_progress( struct im_connection *ic, int step, char *msg ) 183 { 184 serv_got_crap( ic, "Logging in: %s", msg ); 185 185 } 186 186 187 187 /* Errors *while* logging in */ 188 void hide_login_progress( struct gaim_connection *gc, char *msg )189 { 190 serv_got_crap( gc, "Login error: %s", msg );188 void hide_login_progress( struct im_connection *ic, char *msg ) 189 { 190 serv_got_crap( ic, "Login error: %s", msg ); 191 191 } 192 192 193 193 /* Errors *after* logging in */ 194 void hide_login_progress_error( struct gaim_connection *gc, char *msg )195 { 196 serv_got_crap( gc, "Logged out: %s", msg );197 } 198 199 void serv_got_crap( struct gaim_connection *gc, char *format, ... )194 void hide_login_progress_error( struct im_connection *ic, char *msg ) 195 { 196 serv_got_crap( ic, "Logged out: %s", msg ); 197 } 198 199 void serv_got_crap( struct im_connection *ic, char *format, ... ) 200 200 { 201 201 va_list params; … … 207 207 va_end( params ); 208 208 209 if( ( g_strcasecmp( set_getstr( & gc->irc->set, "strip_html" ), "always" ) == 0 ) ||210 ( ( gc->flags & OPT_CONN_HTML ) && set_getbool( &gc->irc->set, "strip_html" ) ) )209 if( ( g_strcasecmp( set_getstr( &ic->irc->set, "strip_html" ), "always" ) == 0 ) || 210 ( ( ic->flags & OPT_CONN_HTML ) && set_getbool( &ic->irc->set, "strip_html" ) ) ) 211 211 strip_html( text ); 212 212 213 213 /* Try to find a different connection on the same protocol. */ 214 for( a = gc->irc->accounts; a; a = a->next )215 if( a->prpl == gc->acc->prpl && a->gc != gc )214 for( a = ic->irc->accounts; a; a = a->next ) 215 if( a->prpl == ic->acc->prpl && a->ic != ic ) 216 216 break; 217 217 218 218 /* If we found one, include the screenname in the message. */ 219 219 if( a ) 220 irc_usermsg( gc->irc, "%s(%s) - %s", gc->acc->prpl->name, gc->username, text );220 irc_usermsg( ic->irc, "%s(%s) - %s", ic->acc->prpl->name, ic->username, text ); 221 221 else 222 irc_usermsg( gc->irc, "%s - %s", gc->acc->prpl->name, text );222 irc_usermsg( ic->irc, "%s - %s", ic->acc->prpl->name, text ); 223 223 224 224 g_free( text ); … … 227 227 static gboolean send_keepalive( gpointer d, gint fd, b_input_condition cond ) 228 228 { 229 struct gaim_connection *gc = d;230 231 if( gc->acc->prpl->keepalive )232 gc->acc->prpl->keepalive( gc );229 struct im_connection *ic = d; 230 231 if( ic->acc->prpl->keepalive ) 232 ic->acc->prpl->keepalive( ic ); 233 233 234 234 return TRUE; 235 235 } 236 236 237 void account_online( struct gaim_connection *gc )237 void account_online( struct im_connection *ic ) 238 238 { 239 239 user_t *u; … … 242 242 the whole login sequence again, so these "late" calls to this 243 243 function should be handled correctly. (IOW, ignored) */ 244 if( gc->flags & OPT_LOGGED_IN )244 if( ic->flags & OPT_LOGGED_IN ) 245 245 return; 246 246 247 u = user_find( gc->irc, gc->irc->nick );248 249 serv_got_crap( gc, "Logged in" );250 251 gc->keepalive = b_timeout_add( 60000, send_keepalive, gc );252 gc->flags |= OPT_LOGGED_IN;247 u = user_find( ic->irc, ic->irc->nick ); 248 249 serv_got_crap( ic, "Logged in" ); 250 251 ic->keepalive = b_timeout_add( 60000, send_keepalive, ic ); 252 ic->flags |= OPT_LOGGED_IN; 253 253 254 254 /* Also necessary when we're not away, at least for some of the 255 255 protocols. */ 256 bim_set_away( gc, u->away );256 bim_set_away( ic, u->away ); 257 257 } 258 258 … … 274 274 } 275 275 276 void signoff( struct gaim_connection *gc )277 { 278 irc_t *irc = gc->irc;276 void signoff( struct im_connection *ic ) 277 { 278 irc_t *irc = ic->irc; 279 279 user_t *t, *u = irc->users; 280 280 account_t *a; … … 282 282 /* Nested calls might happen sometimes, this is probably the best 283 283 place to catch them. */ 284 if( gc->flags & OPT_LOGGING_OUT )284 if( ic->flags & OPT_LOGGING_OUT ) 285 285 return; 286 286 else 287 gc->flags |= OPT_LOGGING_OUT;288 289 serv_got_crap( gc, "Signing off.." );290 291 b_event_remove( gc->keepalive );292 gc->keepalive = 0;293 gc->acc->prpl->close( gc );294 b_event_remove( gc->inpa );287 ic->flags |= OPT_LOGGING_OUT; 288 289 serv_got_crap( ic, "Signing off.." ); 290 291 b_event_remove( ic->keepalive ); 292 ic->keepalive = 0; 293 ic->acc->prpl->logout( ic ); 294 b_event_remove( ic->inpa ); 295 295 296 296 while( u ) 297 297 { 298 if( u-> gc == gc )298 if( u->ic == ic ) 299 299 { 300 300 t = u->next; … … 306 306 } 307 307 308 query_del_by_ gc( gc->irc, gc );308 query_del_by_conn( ic->irc, ic ); 309 309 310 310 for( a = irc->accounts; a; a = a->next ) 311 if( a-> gc == gc )311 if( a->ic == ic ) 312 312 break; 313 313 … … 316 316 /* Uhm... This is very sick. */ 317 317 } 318 else if( ! gc->wants_to_die && set_getbool( &irc->set, "auto_reconnect" ) &&318 else if( !ic->wants_to_die && set_getbool( &irc->set, "auto_reconnect" ) && 319 319 set_getbool( &a->set, "auto_reconnect" ) ) 320 320 { 321 321 int delay = set_getint( &irc->set, "auto_reconnect_delay" ); 322 322 323 serv_got_crap( gc, "Reconnecting in %d seconds..", delay );323 serv_got_crap( ic, "Reconnecting in %d seconds..", delay ); 324 324 a->reconnect = b_timeout_add( delay * 1000, auto_reconnect, a ); 325 325 } 326 326 327 destroy_gaim_conn( gc );327 destroy_gaim_conn( ic ); 328 328 } 329 329 … … 331 331 /* dialogs.c */ 332 332 333 void do_error_dialog( struct gaim_connection *gc, char *msg, char *title )333 void do_error_dialog( struct im_connection *ic, char *msg, char *title ) 334 334 { 335 335 if( msg && title ) 336 serv_got_crap( gc, "Error: %s: %s", title, msg );336 serv_got_crap( ic, "Error: %s: %s", title, msg ); 337 337 else if( msg ) 338 serv_got_crap( gc, "Error: %s", msg );338 serv_got_crap( ic, "Error: %s", msg ); 339 339 else if( title ) 340 serv_got_crap( gc, "Error: %s", title );340 serv_got_crap( ic, "Error: %s", title ); 341 341 else 342 serv_got_crap( gc, "Error" );343 } 344 345 void do_ask_dialog( struct gaim_connection *gc, char *msg, void *data, void *doit, void *dont )346 { 347 query_add( gc->irc, gc, msg, doit, dont, data );342 serv_got_crap( ic, "Error" ); 343 } 344 345 void do_ask_dialog( struct im_connection *ic, char *msg, void *data, void *doit, void *dont ) 346 { 347 query_add( ic->irc, ic, msg, doit, dont, data ); 348 348 } 349 349 … … 351 351 /* list.c */ 352 352 353 void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *realname )353 void add_buddy( struct im_connection *ic, char *group, char *handle, char *realname ) 354 354 { 355 355 user_t *u; 356 356 char nick[MAX_NICK_LENGTH+1]; 357 357 char *s; 358 irc_t *irc = gc->irc;358 irc_t *irc = ic->irc; 359 359 360 360 if( set_getbool( &irc->set, "debug" ) && 0 ) /* This message is too useless */ 361 serv_got_crap( gc, "Receiving user add from handle: %s", handle );362 363 if( user_findhandle( gc, handle ) )361 serv_got_crap( ic, "Receiving user add from handle: %s", handle ); 362 363 if( user_findhandle( ic, handle ) ) 364 364 { 365 365 if( set_getbool( &irc->set, "debug" ) ) 366 serv_got_crap( gc, "User already exists, ignoring add request: %s", handle );366 serv_got_crap( ic, "User already exists, ignoring add request: %s", handle ); 367 367 368 368 return; … … 372 372 373 373 memset( nick, 0, MAX_NICK_LENGTH + 1 ); 374 strcpy( nick, nick_get( gc->acc, handle, realname ) );375 376 u = user_add( gc->irc, nick );374 strcpy( nick, nick_get( ic->acc, handle, realname ) ); 375 376 u = user_add( ic->irc, nick ); 377 377 378 378 if( !realname || !*realname ) realname = nick; … … 384 384 u->user = g_strndup( handle, s - handle ); 385 385 } 386 else if( gc->acc->server )386 else if( ic->acc->server ) 387 387 { 388 388 char *colon; 389 389 390 if( ( colon = strchr( gc->acc->server, ':' ) ) )391 u->host = g_strndup( gc->acc->server,392 colon - gc->acc->server );390 if( ( colon = strchr( ic->acc->server, ':' ) ) ) 391 u->host = g_strndup( ic->acc->server, 392 colon - ic->acc->server ); 393 393 else 394 u->host = g_strdup( gc->acc->server );394 u->host = g_strdup( ic->acc->server ); 395 395 396 396 u->user = g_strdup( handle ); … … 403 403 else 404 404 { 405 u->host = g_strdup( gc->acc->prpl->name );405 u->host = g_strdup( ic->acc->prpl->name ); 406 406 u->user = g_strdup( handle ); 407 407 } 408 408 409 u-> gc = gc;409 u->ic = ic; 410 410 u->handle = g_strdup( handle ); 411 411 if( group ) u->group = g_strdup( group ); … … 414 414 } 415 415 416 struct buddy *find_buddy( struct gaim_connection *gc, char *handle )416 struct buddy *find_buddy( struct im_connection *ic, char *handle ) 417 417 { 418 418 static struct buddy b[1]; 419 419 user_t *u; 420 420 421 u = user_findhandle( gc, handle );421 u = user_findhandle( ic, handle ); 422 422 423 423 if( !u ) … … 428 428 strncpy( b->show, u->realname, BUDDY_ALIAS_MAXLEN ); 429 429 b->present = u->online; 430 b-> gc = u->gc;430 b->ic = u->ic; 431 431 432 432 return( b ); 433 433 } 434 434 435 void signoff_blocked( struct gaim_connection *gc )435 void signoff_blocked( struct im_connection *ic ) 436 436 { 437 437 return; /* Make all blocked users look invisible (TODO?) */ … … 439 439 440 440 441 void serv_buddy_rename( struct gaim_connection *gc, char *handle, char *realname )442 { 443 user_t *u = user_findhandle( gc, handle );441 void serv_buddy_rename( struct im_connection *ic, char *handle, char *realname ) 442 { 443 user_t *u = user_findhandle( ic, handle ); 444 444 445 445 if( !u ) return; … … 451 451 u->realname = g_strdup( realname ); 452 452 453 if( ( gc->flags & OPT_LOGGED_IN ) && set_getbool( &gc->irc->set, "display_namechanges" ) )454 serv_got_crap( gc, "User `%s' changed name to `%s'", u->nick, u->realname );453 if( ( ic->flags & OPT_LOGGED_IN ) && set_getbool( &ic->irc->set, "display_namechanges" ) ) 454 serv_got_crap( ic, "User `%s' changed name to `%s'", u->nick, u->realname ); 455 455 } 456 456 } … … 461 461 struct show_got_added_data 462 462 { 463 struct gaim_connection *gc;463 struct im_connection *ic; 464 464 char *handle; 465 465 }; … … 473 473 void show_got_added_yes( gpointer w, struct show_got_added_data *data ) 474 474 { 475 data-> gc->acc->prpl->add_buddy( data->gc, data->handle);476 add_buddy( data-> gc, NULL, data->handle, data->handle );475 data->ic->acc->prpl->add_buddy( data->ic, data->handle, NULL ); 476 add_buddy( data->ic, NULL, data->handle, data->handle ); 477 477 478 478 return show_got_added_no( w, data ); 479 479 } 480 480 481 void show_got_added( struct gaim_connection *gc, char *handle, const char *realname )481 void show_got_added( struct im_connection *ic, char *handle, const char *realname ) 482 482 { 483 483 struct show_got_added_data *data = g_new0( struct show_got_added_data, 1 ); … … 485 485 486 486 /* TODO: Make a setting for this! */ 487 if( user_findhandle( gc, handle ) != NULL )487 if( user_findhandle( ic, handle ) != NULL ) 488 488 return; 489 489 490 490 s = g_strdup_printf( "The user %s is not in your buddy list yet. Do you want to add him/her now?", handle ); 491 491 492 data-> gc = gc;492 data->ic = ic; 493 493 data->handle = g_strdup( handle ); 494 query_add( gc->irc, gc, s, show_got_added_yes, show_got_added_no, data );494 query_add( ic->irc, ic, s, show_got_added_yes, show_got_added_no, data ); 495 495 } 496 496 … … 498 498 /* server.c */ 499 499 500 void serv_got_update( struct gaim_connection *gc, char *handle, int loggedin, int evil, time_t signon, time_t idle, int type, guint caps )500 void serv_got_update( struct im_connection *ic, char *handle, int loggedin, int evil, time_t signon, time_t idle, int type, guint caps ) 501 501 { 502 502 user_t *u; 503 503 int oa, oo; 504 504 505 u = user_findhandle( gc, handle );505 u = user_findhandle( ic, handle ); 506 506 507 507 if( !u ) 508 508 { 509 if( g_strcasecmp( set_getstr( & gc->irc->set, "handle_unknown" ), "add" ) == 0 )510 { 511 add_buddy( gc, NULL, handle, NULL );512 u = user_findhandle( gc, handle );509 if( g_strcasecmp( set_getstr( &ic->irc->set, "handle_unknown" ), "add" ) == 0 ) 510 { 511 add_buddy( ic, NULL, handle, NULL ); 512 u = user_findhandle( ic, handle ); 513 513 } 514 514 else 515 515 { 516 if( set_getbool( & gc->irc->set, "debug" ) || g_strcasecmp( set_getstr( &gc->irc->set, "handle_unknown" ), "ignore" ) != 0 )516 if( set_getbool( &ic->irc->set, "debug" ) || g_strcasecmp( set_getstr( &ic->irc->set, "handle_unknown" ), "ignore" ) != 0 ) 517 517 { 518 serv_got_crap( gc, "serv_got_update() for handle %s:", handle );519 serv_got_crap( gc, "loggedin = %d, type = %d", loggedin, type );518 serv_got_crap( ic, "serv_got_update() for handle %s:", handle ); 519 serv_got_crap( ic, "loggedin = %d, type = %d", loggedin, type ); 520 520 } 521 521 … … 537 537 if( loggedin && !u->online ) 538 538 { 539 irc_spawn( gc->irc, u );539 irc_spawn( ic->irc, u ); 540 540 u->online = 1; 541 541 } 542 542 else if( !loggedin && u->online ) 543 543 { 544 struct conversation*c;545 546 irc_kill( gc->irc, u );544 struct groupchat *c; 545 546 irc_kill( ic->irc, u ); 547 547 u->online = 0; 548 548 549 549 /* Remove him/her from the conversations to prevent PART messages after he/she QUIT already */ 550 for( c = gc->conversations; c; c = c->next )550 for( c = ic->conversations; c; c = c->next ) 551 551 remove_chat_buddy_silent( c, handle ); 552 552 } 553 553 554 if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "oscar" ) == 0 || strcmp( gc->acc->prpl->name, "icq" ) == 0 ) )554 if( ( type & UC_UNAVAILABLE ) && ( strcmp( ic->acc->prpl->name, "oscar" ) == 0 || strcmp( ic->acc->prpl->name, "icq" ) == 0 ) ) 555 555 { 556 556 u->away = g_strdup( "Away" ); 557 557 } 558 else if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "jabber" ) == 0 ) )558 else if( ( type & UC_UNAVAILABLE ) && ( strcmp( ic->acc->prpl->name, "jabber" ) == 0 ) ) 559 559 { 560 560 if( type & UC_DND ) … … 565 565 u->away = g_strdup( "Away" ); 566 566 } 567 else if( ( type & UC_UNAVAILABLE ) && gc->acc->prpl->get_status_string )568 { 569 u->away = g_strdup( gc->acc->prpl->get_status_string( gc, type ) );567 else if( ( type & UC_UNAVAILABLE ) && ic->acc->prpl->get_status_string ) 568 { 569 u->away = g_strdup( ic->acc->prpl->get_status_string( ic, type ) ); 570 570 } 571 571 else … … 573 573 574 574 /* LISPy... */ 575 if( ( set_getbool( & gc->irc->set, "away_devoice" ) ) && /* Don't do a thing when user doesn't want it */575 if( ( set_getbool( &ic->irc->set, "away_devoice" ) ) && /* Don't do a thing when user doesn't want it */ 576 576 ( u->online ) && /* Don't touch offline people */ 577 577 ( ( ( u->online != oo ) && !u->away ) || /* Voice joining people */ 578 578 ( ( u->online == oo ) && ( oa == !u->away ) ) ) ) /* (De)voice people changing state */ 579 579 { 580 irc_write( gc->irc, ":%s MODE %s %cv %s", gc->irc->myhost,581 gc->irc->channel, u->away?'-':'+', u->nick );582 } 583 } 584 585 void serv_got_im( struct gaim_connection *gc, char *handle, char *msg, guint32 flags, time_t mtime, gint len )586 { 587 irc_t *irc = gc->irc;580 irc_write( ic->irc, ":%s MODE %s %cv %s", ic->irc->myhost, 581 ic->irc->channel, u->away?'-':'+', u->nick ); 582 } 583 } 584 585 void serv_got_im( struct im_connection *ic, char *handle, char *msg, guint32 flags, time_t mtime, gint len ) 586 { 587 irc_t *irc = ic->irc; 588 588 user_t *u; 589 589 590 u = user_findhandle( gc, handle );590 u = user_findhandle( ic, handle ); 591 591 592 592 if( !u ) … … 597 597 { 598 598 if( set_getbool( &irc->set, "debug" ) ) 599 serv_got_crap( gc, "Ignoring message from unknown handle %s", handle );599 serv_got_crap( ic, "Ignoring message from unknown handle %s", handle ); 600 600 601 601 return; … … 613 613 } 614 614 615 add_buddy( gc, NULL, handle, NULL );616 u = user_findhandle( gc, handle );615 add_buddy( ic, NULL, handle, NULL ); 616 u = user_findhandle( ic, handle ); 617 617 u->is_private = private; 618 618 } 619 619 else 620 620 { 621 serv_got_crap( gc, "Message from unknown handle %s:", handle );621 serv_got_crap( ic, "Message from unknown handle %s:", handle ); 622 622 u = user_find( irc, irc->mynick ); 623 623 } 624 624 } 625 625 626 if( ( g_strcasecmp( set_getstr( & gc->irc->set, "strip_html" ), "always" ) == 0 ) ||627 ( ( gc->flags & OPT_CONN_HTML ) && set_getbool( &gc->irc->set, "strip_html" ) ) )626 if( ( g_strcasecmp( set_getstr( &ic->irc->set, "strip_html" ), "always" ) == 0 ) || 627 ( ( ic->flags & OPT_CONN_HTML ) && set_getbool( &ic->irc->set, "strip_html" ) ) ) 628 628 strip_html( msg ); 629 629 … … 661 661 } 662 662 663 void serv_got_typing( struct gaim_connection *gc, char *handle, int timeout, int type )663 void serv_got_typing( struct im_connection *ic, char *handle, int timeout, int type ) 664 664 { 665 665 user_t *u; 666 666 667 if( !set_getbool( & gc->irc->set, "typing_notice" ) )667 if( !set_getbool( &ic->irc->set, "typing_notice" ) ) 668 668 return; 669 669 670 if( ( u = user_findhandle( gc, handle ) ) ) {670 if( ( u = user_findhandle( ic, handle ) ) ) { 671 671 /* If type is: 672 672 * 0: user has stopped typing … … 677 677 char buf[256]; 678 678 g_snprintf(buf, 256, "\1TYPING %d\1", type); 679 irc_privmsg( gc->irc, u, "PRIVMSG", gc->irc->nick, NULL, buf );680 } 681 } 682 } 683 684 void serv_got_chat_left( struct conversation*c )685 { 686 struct gaim_connection *gc = c->gc;687 struct conversation*l = NULL;679 irc_privmsg( ic->irc, u, "PRIVMSG", ic->irc->nick, NULL, buf ); 680 } 681 } 682 } 683 684 void serv_got_chat_left( struct groupchat *c ) 685 { 686 struct im_connection *ic = c->ic; 687 struct groupchat *l = NULL; 688 688 GList *ir; 689 689 690 if( set_getbool( & gc->irc->set, "debug" ) )691 serv_got_crap( gc, "You were removed from conversation 0x%x", (int) c );690 if( set_getbool( &ic->irc->set, "debug" ) ) 691 serv_got_crap( ic, "You were removed from conversation 0x%x", (int) c ); 692 692 693 693 if( c ) … … 697 697 user_t *u, *r; 698 698 699 r = user_find( gc->irc, gc->irc->mynick );700 irc_privmsg( gc->irc, r, "PRIVMSG", c->channel, "", "Cleaning up channel, bye!" );699 r = user_find( ic->irc, ic->irc->mynick ); 700 irc_privmsg( ic->irc, r, "PRIVMSG", c->channel, "", "Cleaning up channel, bye!" ); 701 701 702 u = user_find( gc->irc, gc->irc->nick );703 irc_kick( gc->irc, u, c->channel, r );704 /* irc_part( gc->irc, u, c->channel ); */702 u = user_find( ic->irc, ic->irc->nick ); 703 irc_kick( ic->irc, u, c->channel, r ); 704 /* irc_part( ic->irc, u, c->channel ); */ 705 705 } 706 706 … … 708 708 l->next = c->next; 709 709 else 710 gc->conversations = c->next;710 ic->conversations = c->next; 711 711 712 712 for( ir = c->in_room; ir; ir = ir->next ) … … 719 719 } 720 720 721 void serv_got_chat_in( struct conversation*c, char *who, int whisper, char *msg, time_t mtime )722 { 723 struct gaim_connection *gc = c->gc;721 void serv_got_chat_in( struct groupchat *c, char *who, int whisper, char *msg, time_t mtime ) 722 { 723 struct im_connection *ic = c->ic; 724 724 user_t *u; 725 725 726 726 /* Gaim sends own messages through this too. IRC doesn't want this, so kill them */ 727 if( g_strcasecmp( who, gc->username ) == 0 )727 if( g_strcasecmp( who, ic->username ) == 0 ) 728 728 return; 729 729 730 u = user_findhandle( gc, who );731 732 if( ( g_strcasecmp( set_getstr( & gc->irc->set, "strip_html" ), "always" ) == 0 ) ||733 ( ( gc->flags & OPT_CONN_HTML ) && set_getbool( &gc->irc->set, "strip_html" ) ) )730 u = user_findhandle( ic, who ); 731 732 if( ( g_strcasecmp( set_getstr( &ic->irc->set, "strip_html" ), "always" ) == 0 ) || 733 ( ( ic->flags & OPT_CONN_HTML ) && set_getbool( &ic->irc->set, "strip_html" ) ) ) 734 734 strip_html( msg ); 735 735 736 736 if( c && u ) 737 irc_privmsg( gc->irc, u, "PRIVMSG", c->channel, "", msg );737 irc_privmsg( ic->irc, u, "PRIVMSG", c->channel, "", msg ); 738 738 else 739 serv_got_crap( gc, "Message from/to conversation %s@0x%x (unknown conv/user): %s", who, (int) c, msg );740 } 741 742 struct conversation *serv_got_joined_chat( struct gaim_connection *gc, char *handle )743 { 744 struct conversation*c;739 serv_got_crap( ic, "Message from/to conversation %s@0x%x (unknown conv/user): %s", who, (int) c, msg ); 740 } 741 742 struct groupchat *serv_got_joined_chat( struct im_connection *ic, char *handle ) 743 { 744 struct groupchat *c; 745 745 746 746 /* This one just creates the conversation structure, user won't see anything yet */ 747 747 748 if( gc->conversations )749 { 750 for( c = gc->conversations; c->next; c = c->next );751 c = c->next = g_new0( struct conversation, 1 );748 if( ic->conversations ) 749 { 750 for( c = ic->conversations; c->next; c = c->next ); 751 c = c->next = g_new0( struct groupchat, 1 ); 752 752 } 753 753 else 754 gc->conversations = c = g_new0( struct conversation, 1 );755 756 c-> gc = gc;754 ic->conversations = c = g_new0( struct groupchat, 1 ); 755 756 c->ic = ic; 757 757 c->title = g_strdup( handle ); 758 c->channel = g_strdup_printf( "&chat_%03d", gc->irc->c_id++ );759 760 if( set_getbool( & gc->irc->set, "debug" ) )761 serv_got_crap( gc, "Creating new conversation: (id=0x%x,handle=%s)", (int) c, handle );758 c->channel = g_strdup_printf( "&chat_%03d", ic->irc->c_id++ ); 759 760 if( set_getbool( &ic->irc->set, "debug" ) ) 761 serv_got_crap( ic, "Creating new conversation: (id=0x%x,handle=%s)", (int) c, handle ); 762 762 763 763 return c; … … 767 767 /* buddy_chat.c */ 768 768 769 void add_chat_buddy( struct conversation*b, char *handle )770 { 771 user_t *u = user_findhandle( b-> gc, handle );769 void add_chat_buddy( struct groupchat *b, char *handle ) 770 { 771 user_t *u = user_findhandle( b->ic, handle ); 772 772 int me = 0; 773 773 774 if( set_getbool( &b-> gc->irc->set, "debug" ) )775 serv_got_crap( b-> gc, "User %s added to conversation 0x%x", handle, (int) b );774 if( set_getbool( &b->ic->irc->set, "debug" ) ) 775 serv_got_crap( b->ic, "User %s added to conversation 0x%x", handle, (int) b ); 776 776 777 777 /* It might be yourself! */ 778 if( b-> gc->acc->prpl->handle_cmp( handle, b->gc->username ) == 0 )779 { 780 u = user_find( b-> gc->irc, b->gc->irc->nick );778 if( b->ic->acc->prpl->handle_cmp( handle, b->ic->username ) == 0 ) 779 { 780 u = user_find( b->ic->irc, b->ic->irc->nick ); 781 781 if( !b->joined ) 782 irc_join( b-> gc->irc, u, b->channel );782 irc_join( b->ic->irc, u, b->channel ); 783 783 b->joined = me = 1; 784 784 } … … 788 788 if( !u ) 789 789 { 790 add_buddy( b-> gc, NULL, handle, NULL );791 u = user_findhandle( b-> gc, handle );790 add_buddy( b->ic, NULL, handle, NULL ); 791 u = user_findhandle( b->ic, handle ); 792 792 } 793 793 … … 796 796 { 797 797 if( b->joined ) 798 irc_join( b-> gc->irc, u, b->channel );798 irc_join( b->ic->irc, u, b->channel ); 799 799 b->in_room = g_list_append( b->in_room, g_strdup( handle ) ); 800 800 } 801 801 } 802 802 803 void remove_chat_buddy( struct conversation*b, char *handle, char *reason )803 void remove_chat_buddy( struct groupchat *b, char *handle, char *reason ) 804 804 { 805 805 user_t *u; 806 806 int me = 0; 807 807 808 if( set_getbool( &b-> gc->irc->set, "debug" ) )809 serv_got_crap( b-> gc, "User %s removed from conversation 0x%x (%s)", handle, (int) b, reason ? reason : "" );808 if( set_getbool( &b->ic->irc->set, "debug" ) ) 809 serv_got_crap( b->ic, "User %s removed from conversation 0x%x (%s)", handle, (int) b, reason ? reason : "" ); 810 810 811 811 /* It might be yourself! */ 812 if( g_strcasecmp( handle, b-> gc->username ) == 0 )813 { 814 u = user_find( b-> gc->irc, b->gc->irc->nick );812 if( g_strcasecmp( handle, b->ic->username ) == 0 ) 813 { 814 u = user_find( b->ic->irc, b->ic->irc->nick ); 815 815 b->joined = 0; 816 816 me = 1; … … 818 818 else 819 819 { 820 u = user_findhandle( b-> gc, handle );820 u = user_findhandle( b->ic, handle ); 821 821 } 822 822 823 823 if( remove_chat_buddy_silent( b, handle ) ) 824 824 if( ( b->joined || me ) && u ) 825 irc_part( b-> gc->irc, u, b->channel );826 } 827 828 static int remove_chat_buddy_silent( struct conversation*b, char *handle )825 irc_part( b->ic->irc, u, b->channel ); 826 } 827 828 static int remove_chat_buddy_silent( struct groupchat *b, char *handle ) 829 829 { 830 830 GList *i; … … 850 850 /* Misc. BitlBee stuff which shouldn't really be here */ 851 851 852 struct conversation*chat_by_channel( char *channel )853 { 854 struct gaim_connection *gc;855 struct conversation*c;852 struct groupchat *chat_by_channel( char *channel ) 853 { 854 struct im_connection *ic; 855 struct groupchat *c; 856 856 GSList *l; 857 857 … … 859 859 for( l = connections; l; l = l->next ) 860 860 { 861 gc = l->data;862 for( c = gc->conversations; c && g_strcasecmp( c->channel, channel ) != 0; c = c->next );861 ic = l->data; 862 for( c = ic->conversations; c && g_strcasecmp( c->channel, channel ) != 0; c = c->next ); 863 863 if( c ) 864 864 return c; … … 899 899 while( u ) 900 900 { 901 if( u-> gc && u->online && !u->away )901 if( u->ic && u->online && !u->away ) 902 902 { 903 903 if( ( strlen( list ) + strlen( u->nick ) ) >= 79 ) … … 933 933 them all from some wrappers. We'll start to define some down here: */ 934 934 935 int bim_buddy_msg( struct gaim_connection *gc, char *handle, char *msg, int flags )935 int bim_buddy_msg( struct im_connection *ic, char *handle, char *msg, int flags ) 936 936 { 937 937 char *buf = NULL; 938 938 int st; 939 939 940 if( ( gc->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) )940 if( ( ic->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) ) 941 941 { 942 942 buf = escape_html( msg ); … … 944 944 } 945 945 946 st = gc->acc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );946 st = ic->acc->prpl->send_im( ic, handle, msg, flags ); 947 947 g_free( buf ); 948 948 … … 950 950 } 951 951 952 int bim_chat_msg( struct conversation *c, char *msg)952 int bim_chat_msg( struct groupchat *c, char *msg, int flags ) 953 953 { 954 954 char *buf = NULL; 955 955 int st; 956 956 957 if( ( c-> gc->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) )957 if( ( c->ic->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) ) 958 958 { 959 959 buf = escape_html( msg ); … … 961 961 } 962 962 963 st = c->gc->acc->prpl->chat_send( c, msg);963 c->ic->acc->prpl->chat_send( c, msg, flags ); 964 964 g_free( buf ); 965 965 966 return st;966 return 1; 967 967 } 968 968 969 969 static char *bim_away_alias_find( GList *gcm, char *away ); 970 970 971 int bim_set_away( struct gaim_connection *gc, char *away )971 int bim_set_away( struct im_connection *ic, char *away ) 972 972 { 973 973 GList *m, *ms; … … 975 975 976 976 if( !away ) away = ""; 977 ms = m = gc->acc->prpl->away_states( gc );977 ms = m = ic->acc->prpl->away_states( ic ); 978 978 979 979 while( m ) … … 996 996 if( m ) 997 997 { 998 gc->acc->prpl->set_away( gc, m->data, *away ? away : NULL );998 ic->acc->prpl->set_away( ic, m->data, *away ? away : NULL ); 999 999 } 1000 1000 else … … 1003 1003 if( s ) 1004 1004 { 1005 gc->acc->prpl->set_away( gc, s, away );1006 if( set_getbool( & gc->irc->set, "debug" ) )1007 serv_got_crap( gc, "Setting away state to %s", s );1005 ic->acc->prpl->set_away( ic, s, away ); 1006 if( set_getbool( &ic->irc->set, "debug" ) ) 1007 serv_got_crap( ic, "Setting away state to %s", s ); 1008 1008 } 1009 1009 else 1010 gc->acc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );1010 ic->acc->prpl->set_away( ic, GAIM_AWAY_CUSTOM, away ); 1011 1011 } 1012 1012 … … 1056 1056 } 1057 1057 1058 void bim_add_allow( struct gaim_connection *gc, char *handle )1059 { 1060 if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->handle_cmp ) == NULL )1061 { 1062 gc->permit = g_slist_prepend( gc->permit, g_strdup( handle ) );1063 } 1064 1065 gc->acc->prpl->add_permit( gc, handle );1066 } 1067 1068 void bim_rem_allow( struct gaim_connection *gc, char *handle )1058 void bim_add_allow( struct im_connection *ic, char *handle ) 1059 { 1060 if( g_slist_find_custom( ic->permit, handle, (GCompareFunc) ic->acc->prpl->handle_cmp ) == NULL ) 1061 { 1062 ic->permit = g_slist_prepend( ic->permit, g_strdup( handle ) ); 1063 } 1064 1065 ic->acc->prpl->add_permit( ic, handle ); 1066 } 1067 1068 void bim_rem_allow( struct im_connection *ic, char *handle ) 1069 1069 { 1070 1070 GSList *l; 1071 1071 1072 if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->handle_cmp ) ) )1072 if( ( l = g_slist_find_custom( ic->permit, handle, (GCompareFunc) ic->acc->prpl->handle_cmp ) ) ) 1073 1073 { 1074 1074 g_free( l->data ); 1075 gc->permit = g_slist_delete_link( gc->permit, l );1076 } 1077 1078 gc->acc->prpl->rem_permit( gc, handle );1079 } 1080 1081 void bim_add_block( struct gaim_connection *gc, char *handle )1082 { 1083 if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->handle_cmp ) == NULL )1084 { 1085 gc->deny = g_slist_prepend( gc->deny, g_strdup( handle ) );1086 } 1087 1088 gc->acc->prpl->add_deny( gc, handle );1089 } 1090 1091 void bim_rem_block( struct gaim_connection *gc, char *handle )1075 ic->permit = g_slist_delete_link( ic->permit, l ); 1076 } 1077 1078 ic->acc->prpl->rem_permit( ic, handle ); 1079 } 1080 1081 void bim_add_block( struct im_connection *ic, char *handle ) 1082 { 1083 if( g_slist_find_custom( ic->deny, handle, (GCompareFunc) ic->acc->prpl->handle_cmp ) == NULL ) 1084 { 1085 ic->deny = g_slist_prepend( ic->deny, g_strdup( handle ) ); 1086 } 1087 1088 ic->acc->prpl->add_deny( ic, handle ); 1089 } 1090 1091 void bim_rem_block( struct im_connection *ic, char *handle ) 1092 1092 { 1093 1093 GSList *l; 1094 1094 1095 if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->handle_cmp ) ) )1095 if( ( l = g_slist_find_custom( ic->deny, handle, (GCompareFunc) ic->acc->prpl->handle_cmp ) ) ) 1096 1096 { 1097 1097 g_free( l->data ); 1098 gc->deny = g_slist_delete_link( gc->deny, l );1099 } 1100 1101 gc->acc->prpl->rem_deny( gc, handle );1102 } 1098 ic->deny = g_slist_delete_link( ic->deny, l ); 1099 } 1100 1101 ic->acc->prpl->rem_deny( ic, handle ); 1102 }
Note: See TracChangeset
for help on using the changeset viewer.