Changeset 7b23afd for protocols/nogaim.c
- Timestamp:
- 2005-11-07T16:16:18Z (19 years ago)
- Branches:
- master
- Children:
- f7f3ada
- Parents:
- fe51bcf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/nogaim.c
rfe51bcf r7b23afd 39 39 #include <iconv.h> 40 40 41 struct prpl *proto_prpl[PROTO_MAX];42 char proto_name[PROTO_MAX][8] = { "TOC", "OSCAR", "YAHOO", "ICQ", "MSN", "", "", "", "JABBER", "", "", "", "", "", "", "" };43 44 41 static char *proto_away_alias[7][5] = 45 42 { … … 58 55 GSList *connections; 59 56 57 gboolean load_plugin(char *path) 58 { 59 void (*init_function) (void); 60 61 GModule *mod = g_module_open(path, G_MODULE_BIND_LAZY); 62 63 if(!mod) { 64 log_message(LOGLVL_ERROR, "Can't find `%s', not loading", path); 65 return FALSE; 66 } 67 68 if(!g_module_symbol(mod,"init_plugin",(gpointer *) &init_function)) { 69 log_message(LOGLVL_WARNING, "Can't find function `init_plugin' in `%s'\n", path); 70 return FALSE; 71 } 72 73 init_function(); 74 75 return TRUE; 76 } 60 77 61 78 /* nogaim.c */ 62 79 80 GList *protocols = NULL; 81 82 void register_protocol (struct prpl *p) 83 { 84 protocols = g_list_append(protocols, p); 85 } 86 87 88 struct prpl *find_protocol(const char *name) 89 { 90 GList *gl; 91 for (gl = protocols; gl; gl = gl->next) 92 { 93 struct prpl *proto = gl->data; 94 if(!g_strcasecmp(proto->name, name)) 95 return proto; 96 } 97 return NULL; 98 } 99 100 /* nogaim.c */ 63 101 void nogaim_init() 64 102 { 65 proto_prpl[PROTO_MSN] = g_new0 ( struct prpl, 1 ); 103 GDir *dir; 104 GError *error = NULL; 105 66 106 #ifdef WITH_MSN 67 msn_init( proto_prpl[PROTO_MSN] ); 107 extern void msn_init(); 108 msn_init(); 68 109 #endif 69 110 70 proto_prpl[PROTO_OSCAR] = g_new0( struct prpl, 1 );71 111 #ifdef WITH_OSCAR 72 oscar_init( proto_prpl[PROTO_OSCAR] ); 112 extern void oscar_init(); 113 oscar_init(); 73 114 #endif 74 115 75 proto_prpl[PROTO_YAHOO] = g_new0( struct prpl, 1 );76 116 #ifdef WITH_YAHOO 77 byahoo_init( proto_prpl[PROTO_YAHOO] ); 117 extern void byahoo_init(); 118 byahoo_init(); 78 119 #endif 79 120 80 proto_prpl[PROTO_JABBER] = g_new0( struct prpl, 1 );81 121 #ifdef WITH_JABBER 82 jabber_init( proto_prpl[PROTO_JABBER] ); 122 extern void jabber_init(); 123 jabber_init(); 83 124 #endif 125 126 dir = g_dir_open(PLUGINDIR, 0, &error); 127 128 if (dir) { 129 const gchar *entry; 130 char *path; 131 132 while ((entry = g_dir_read_name(dir))) { 133 path = g_build_filename(PLUGINDIR, entry, NULL); 134 if(!path) { 135 log_message(LOGLVL_WARNING, "Can't build path for %s\n", entry); 136 continue; 137 } 138 139 load_plugin(path); 140 141 g_free(path); 142 } 143 144 g_dir_close(dir); 145 } 84 146 } 85 147 … … 122 184 gc->prpl->set_away( gc, s, away ); 123 185 if( set_getint( gc->irc, "debug" ) ) 124 irc_usermsg( gc->irc, "Setting away state for %s to %s", proto_name[gc->protocol], s );186 irc_usermsg( gc->irc, "Setting away state for %s to %s", gc->prpl->name, s ); 125 187 } 126 188 else … … 168 230 way for now because I don't want to touch the Gaim code too much since 169 231 it's not going to be here for too long anymore. */ 170 int handle_cmp( char *a, char *b, intprotocol )171 { 172 if( protocol == PROTO_TOC || protocol == PROTO_ICQ)232 int handle_cmp( char *a, char *b, struct prpl *protocol ) 233 { 234 if( !strcmp(protocol->name, "oscar") ) 173 235 { 174 236 /* AIM, being teh evil, thinks it's cool that users can put … … 210 272 gc = g_new0( struct gaim_connection, 1 ); 211 273 212 gc->protocol = user->protocol; 213 gc->prpl = proto_prpl[gc->protocol]; 274 gc->prpl = user->prpl; 214 275 g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username ); 215 276 g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password ); … … 254 315 void set_login_progress( struct gaim_connection *gc, int step, char *msg ) 255 316 { 256 irc_usermsg( gc->irc, "%s(%s) - Logging in: %s", proto_name[gc->protocol], gc->username, msg );317 irc_usermsg( gc->irc, "%s(%s) - Logging in: %s", gc->prpl->name, gc->username, msg ); 257 318 } 258 319 … … 260 321 void hide_login_progress( struct gaim_connection *gc, char *msg ) 261 322 { 262 irc_usermsg( gc->irc, "%s(%s) - Login error: %s", proto_name[gc->protocol], gc->username, msg );323 irc_usermsg( gc->irc, "%s(%s) - Login error: %s", gc->prpl->name, gc->username, msg ); 263 324 } 264 325 … … 266 327 void hide_login_progress_error( struct gaim_connection *gc, char *msg ) 267 328 { 268 irc_usermsg( gc->irc, "%s(%s) - Logged out: %s", proto_name[gc->protocol], gc->username, msg );329 irc_usermsg( gc->irc, "%s(%s) - Logged out: %s", gc->prpl->name, gc->username, msg ); 269 330 } 270 331 … … 289 350 strip_html( msg ); 290 351 291 irc_usermsg( gc->irc, "%s(%s) - %s", proto_name[gc->protocol], gc->username, msg );352 irc_usermsg( gc->irc, "%s(%s) - %s", gc->prpl->name, gc->username, msg ); 292 353 } 293 354 … … 314 375 u = user_find( gc->irc, gc->irc->nick ); 315 376 316 irc_usermsg( gc->irc, "%s(%s) - Logged in", proto_name[gc->protocol], gc->username );377 irc_usermsg( gc->irc, "%s(%s) - Logged in", gc->prpl->name, gc->username ); 317 378 318 379 gc->keepalive = g_timeout_add( 60000, send_keepalive, gc ); … … 321 382 if( u && u->away ) proto_away( gc, u->away ); 322 383 323 if( gc->protocol == PROTO_ICQ)384 if( !strcmp(gc->prpl->name, "icq") ) 324 385 { 325 386 for( u = gc->irc->users; u; u = u->next ) … … 361 422 account_t *a; 362 423 363 irc_usermsg( gc->irc, "%s(%s) - Signing off..", proto_name[gc->protocol], gc->username );424 irc_usermsg( gc->irc, "%s(%s) - Signing off..", gc->prpl->name, gc->username ); 364 425 365 426 gaim_input_remove( gc->keepalive ); … … 393 454 { 394 455 int delay = set_getint( irc, "auto_reconnect_delay" ); 395 irc_usermsg( gc->irc, "%s(%s) - Reconnecting in %d seconds..", proto_name[gc->protocol], gc->username, delay);456 irc_usermsg( gc->irc, "%s(%s) - Reconnecting in %d seconds..", gc->prpl->name, gc->username, delay); 396 457 397 458 a->reconnect = 1; … … 449 510 450 511 memset( nick, 0, MAX_NICK_LENGTH + 1 ); 451 strcpy( nick, nick_get( gc->irc, handle, gc->pr otocol, realname ) );512 strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) ); 452 513 453 514 u = user_add( gc->irc, nick ); … … 473 534 else 474 535 { 475 u->host = g_strdup( proto_name[gc->user->protocol]);536 u->host = g_strdup( gc->user->prpl->name ); 476 537 u->user = g_strdup( handle ); 477 538 } … … 567 628 if( set_getint( gc->irc, "debug" ) || g_strcasecmp( set_getstr( gc->irc, "handle_unknown" ), "ignore" ) != 0 ) 568 629 { 569 irc_usermsg( gc->irc, "serv_got_update() for handle %s on connection %s(%s):", handle, proto_name[gc->protocol], gc->username );630 irc_usermsg( gc->irc, "serv_got_update() for handle %s on connection %s(%s):", handle, gc->prpl->name, gc->username ); 570 631 irc_usermsg( gc->irc, "loggedin = %d, type = %d", loggedin, type ); 571 632 } … … 602 663 } 603 664 604 if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_OSCAR || gc->protocol == PROTO_TOC) )665 if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) ) 605 666 { 606 667 u->away = g_strdup( "Away" ); 607 668 } 608 else if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_JABBER) )669 else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) ) 609 670 { 610 671 if( type & UC_DND ) … … 648 709 { 649 710 if( set_getint( irc, "debug" ) ) 650 irc_usermsg( irc, "Ignoring message from unknown handle %s on connection %s(%s)", handle, proto_name[gc->protocol], gc->username );711 irc_usermsg( irc, "Ignoring message from unknown handle %s on connection %s(%s)", handle, gc->prpl->name, gc->username ); 651 712 652 713 return; … … 670 731 else 671 732 { 672 irc_usermsg( irc, "Message from unknown handle %s on connection %s(%s):", handle, proto_name[gc->protocol], gc->username );733 irc_usermsg( irc, "Message from unknown handle %s on connection %s(%s):", handle, gc->prpl->name, gc->username ); 673 734 u = user_find( irc, irc->mynick ); 674 735 } … … 836 897 837 898 /* It might be yourself! */ 838 if( handle_cmp ( handle, b->gc->user->username, b->gc->pr otocol ) == 0 )899 if( handle_cmp ( handle, b->gc->user->username, b->gc->prpl ) == 0 ) 839 900 { 840 901 u = user_find( b->gc->irc, b->gc->irc->nick );
Note: See TracChangeset
for help on using the changeset viewer.