Changes in irc.c [3f9440d:0a3c243]
Legend:
- Unmodified
- Added
- Removed
-
irc.c
r3f9440d r0a3c243 33 33 GSList *irc_connection_list = NULL; 34 34 35 static char *passchange (irc_t *irc, void *set, char *value) 36 { 37 irc_setpass (irc, value); 38 return (NULL); 35 static char *passchange( irc_t *irc, void *set, char *value ) 36 { 37 irc_setpass( irc, value ); 38 irc_usermsg( irc, "Password successfully changed" ); 39 return NULL; 39 40 } 40 41 … … 120 121 irc_connection_list = g_slist_append( irc_connection_list, irc ); 121 122 122 set_add( irc, "away_devoice", "true", set_eval_away_devoice);123 set_add( irc, "auto_connect", "true", set_eval_bool);124 set_add( irc, "auto_reconnect", "false", set_eval_bool);125 set_add( irc, "auto_reconnect_delay", "300", set_eval_int);126 set_add( irc, "buddy_sendbuffer", "false", set_eval_bool);127 set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int);128 set_add( irc, "charset", "iso8859-1", set_eval_charset);129 set_add( irc, "debug", "false", set_eval_bool);130 set_add( irc, "default_target", "root", NULL);131 set_add( irc, "display_namechanges", "false", set_eval_bool);132 set_add( irc, "handle_unknown", "root", NULL);133 set_add( irc, "lcnicks", "true", set_eval_bool);134 set_add( irc, "ops", "both", set_eval_ops);135 set_add( irc, "private", "true", set_eval_bool);136 set_add( irc, "query_order", "lifo", NULL);137 set_add( irc, "save_on_quit", "true", set_eval_bool);138 set_add( irc, "strip_html", "true", NULL);139 set_add( irc, "to_char", ": ", set_eval_to_char);140 set_add( irc, "typing_notice", "false", set_eval_bool);141 set_add( irc, "password", NULL, passchange);123 set_add( &irc->set, "away_devoice", "true", set_eval_away_devoice, irc ); 124 set_add( &irc->set, "auto_connect", "true", set_eval_bool, irc ); 125 set_add( &irc->set, "auto_reconnect", "false", set_eval_bool, irc ); 126 set_add( &irc->set, "auto_reconnect_delay", "300", set_eval_int, irc ); 127 set_add( &irc->set, "buddy_sendbuffer", "false", set_eval_bool, irc ); 128 set_add( &irc->set, "buddy_sendbuffer_delay", "200", set_eval_int, irc ); 129 set_add( &irc->set, "charset", "iso8859-1", set_eval_charset, irc ); 130 set_add( &irc->set, "debug", "false", set_eval_bool, irc ); 131 set_add( &irc->set, "default_target", "root", NULL, irc ); 132 set_add( &irc->set, "display_namechanges", "false", set_eval_bool, irc ); 133 set_add( &irc->set, "handle_unknown", "root", NULL, irc ); 134 set_add( &irc->set, "lcnicks", "true", set_eval_bool, irc ); 135 set_add( &irc->set, "ops", "both", set_eval_ops, irc ); 136 set_add( &irc->set, "password", NULL, passchange, irc ); 137 set_add( &irc->set, "private", "true", set_eval_bool, irc ); 138 set_add( &irc->set, "query_order", "lifo", NULL, irc ); 139 set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc ); 140 set_add( &irc->set, "strip_html", "true", NULL, irc ); 141 set_add( &irc->set, "to_char", ": ", set_eval_to_char, irc ); 142 set_add( &irc->set, "typing_notice", "false", set_eval_bool, irc ); 142 143 143 144 conf_loaddefaults( irc ); … … 211 212 log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd ); 212 213 213 if( irc->status & USTATUS_IDENTIFIED && set_getint( irc, "save_on_quit" ) )214 if( irc->status & USTATUS_IDENTIFIED && set_getint( &irc->set, "save_on_quit" ) ) 214 215 if( storage_save( irc, TRUE ) != STORAGE_OK ) 215 216 irc_usermsg( irc, "Error while saving settings!" ); … … 329 330 void irc_setpass (irc_t *irc, const char *pass) 330 331 { 331 if (irc->password)g_free (irc->password);332 g_free (irc->password); 332 333 333 334 if (pass) { 334 335 irc->password = g_strdup (pass); 335 irc_usermsg (irc, "Password successfully changed");336 336 } else { 337 337 irc->password = NULL; … … 364 364 } 365 365 366 if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )366 if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) 367 367 { 368 368 conv[IRC_MAX_LINE] = 0; … … 584 584 585 585 strip_newlines( line ); 586 if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )586 if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) 587 587 { 588 588 char conv[IRC_MAX_LINE+1]; … … 649 649 void irc_names( irc_t *irc, char *channel ) 650 650 { 651 user_t *u; 652 char namelist[385] = ""; 651 user_t *u = irc->users; 652 char *s; 653 int control = ( g_strcasecmp( channel, irc->channel ) == 0 ); 653 654 struct conversation *c = NULL; 655 656 if( !control ) 657 c = conv_findchannel( channel ); 654 658 655 659 /* RFCs say there is no error reply allowed on NAMES, so when the 656 660 channel is invalid, just give an empty reply. */ 657 661 658 if( g_strcasecmp( channel, irc->channel ) == 0)659 { 660 for( u = irc->users; u; u = u->next )if( u->online )661 { 662 if( strlen( namelist ) + strlen( u->nick ) > sizeof( namelist ) - 4)662 if( control || c ) while( u ) 663 { 664 if( u->online ) 665 { 666 if( u->gc && control ) 663 667 { 664 irc_reply( irc, 353, "= %s :%s", channel, namelist ); 665 *namelist = 0; 668 if( set_getint( &irc->set, "away_devoice" ) && !u->away ) 669 s = "+"; 670 else 671 s = ""; 672 673 irc_reply( irc, 353, "= %s :%s%s", channel, s, u->nick ); 666 674 } 667 668 if( u->gc && !u->away && set_getint( irc, "away_devoice" ) ) 669 strcat( namelist, "+" ); 670 671 strcat( namelist, u->nick ); 672 strcat( namelist, " " ); 673 } 674 } 675 else if( ( c = conv_findchannel( channel ) ) ) 675 else if( !u->gc ) 676 { 677 if( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( set_getstr( &irc->set, "ops" ), "root" ) == 0 || strcmp( set_getstr( &irc->set, "ops" ), "both" ) == 0 ) ) 678 s = "@"; 679 else if( strcmp( u->nick, irc->nick ) == 0 && ( strcmp( set_getstr( &irc->set, "ops" ), "user" ) == 0 || strcmp( set_getstr( &irc->set, "ops" ), "both" ) == 0 ) ) 680 s = "@"; 681 else 682 s = ""; 683 684 irc_reply( irc, 353, "= %s :%s%s", channel, s, u->nick ); 685 } 686 } 687 688 u = u->next; 689 } 690 691 /* For non-controlchannel channels (group conversations) only root and 692 you are listed now. Time to show the channel people: */ 693 if( !control && c ) 676 694 { 677 695 GList *l; 678 char *ops = set_getstr( irc, "ops" ); 679 680 /* root and the user aren't in the channel userlist but should 681 show up in /NAMES, so list them first: */ 682 sprintf( namelist, "%s%s %s%s ", strcmp( ops, "root" ) == 0 || strcmp( ops, "both" ) ? "@" : "", irc->mynick, 683 strcmp( ops, "user" ) == 0 || strcmp( ops, "both" ) ? "@" : "", irc->nick ); 684 685 for( l = c->in_room; l; l = l->next ) if( ( u = user_findhandle( c->gc, l->data ) ) ) 686 { 687 if( strlen( namelist ) + strlen( u->nick ) > sizeof( namelist ) - 4 ) 688 { 689 irc_reply( irc, 353, "= %s :%s", channel, namelist ); 690 *namelist = 0; 691 } 692 693 strcat( namelist, u->nick ); 694 strcat( namelist, " " ); 695 } 696 } 697 698 if( *namelist ) 699 irc_reply( irc, 353, "= %s :%s", channel, namelist ); 696 697 for( l = c->in_room; l; l = l->next ) 698 if( ( u = user_findhandle( c->gc, l->data ) ) ) 699 irc_reply( irc, 353, "= %s :%s%s", channel, "", u->nick ); 700 } 700 701 701 702 irc_reply( irc, 366, "%s :End of /NAMES list", channel ); … … 924 925 { 925 926 char *nick, *s; 926 char reason[ 64];927 char reason[128]; 927 928 928 929 if( u->gc && u->gc->flags & OPT_LOGGING_OUT ) 929 930 { 930 if( u->gc-> user->proto_opt[0][0])931 if( u->gc->acc->server ) 931 932 g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost, 932 u->gc-> user->proto_opt[0]);933 u->gc->acc->server ); 933 934 else if( ( s = strchr( u->gc->username, '@' ) ) ) 934 935 g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost, … … 936 937 else 937 938 g_snprintf( reason, sizeof( reason ), "%s %s.%s", irc->myhost, 938 u->gc-> prpl->name, irc->myhost );939 u->gc->acc->prpl->name, irc->myhost ); 939 940 940 941 /* proto_opt might contain garbage after the : */ … … 1012 1013 else if( g_strncasecmp( s + 1, "TYPING", 6 ) == 0 ) 1013 1014 { 1014 if( u && u->gc && u->gc-> prpl->send_typing && strlen( s ) >= 10 )1015 if( u && u->gc && u->gc->acc->prpl->send_typing && strlen( s ) >= 10 ) 1015 1016 { 1016 1017 time_t current_typing_notice = time( NULL ); … … 1018 1019 if( current_typing_notice - u->last_typing_notice >= 5 ) 1019 1020 { 1020 u->gc-> prpl->send_typing( u->gc, u->handle, s[8] == '1' );1021 u->gc->acc->prpl->send_typing( u->gc, u->handle, s[8] == '1' ); 1021 1022 u->last_typing_notice = current_typing_notice; 1022 1023 } … … 1051 1052 } 1052 1053 } 1053 else if( c && c->gc && c->gc-> prpl )1054 else if( c && c->gc && c->gc->acc && c->gc->acc->prpl ) 1054 1055 { 1055 1056 return( bim_chat_msg( c->gc, c->id, s ) ); … … 1083 1084 if( !u || !u->gc ) return; 1084 1085 1085 if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 )1086 if( set_getint( &irc->set, "buddy_sendbuffer" ) && set_getint( &irc->set, "buddy_sendbuffer_delay" ) > 0 ) 1086 1087 { 1087 1088 int delay; … … 1110 1111 strcat( u->sendbuf, "\n" ); 1111 1112 1112 delay = set_getint( irc, "buddy_sendbuffer_delay" );1113 delay = set_getint( &irc->set, "buddy_sendbuffer_delay" ); 1113 1114 if( delay <= 5 ) 1114 1115 delay *= 1000; … … 1175 1176 int len = strlen( irc->nick) + 3; 1176 1177 prefix = g_new (char, len ); 1177 g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( irc, "to_char" ) );1178 g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( &irc->set, "to_char" ) ); 1178 1179 prefix[len-1] = 0; 1179 1180 }
Note: See TracChangeset
for help on using the changeset viewer.