Changes in irc.c [565a1ea:435f552]
Legend:
- Unmodified
- Added
- Removed
-
irc.c
r565a1ea r435f552 26 26 #define BITLBEE_CORE 27 27 #include "bitlbee.h" 28 #include "sock.h" 28 29 #include "crypting.h" 29 30 #include "ipc.h" … … 33 34 GSList *irc_connection_list = NULL; 34 35 35 static char * passchange( set_t *set, char *value )36 static char *set_eval_password( set_t *set, char *value ) 36 37 { 37 38 irc_t *irc = set->data; 38 39 39 irc_setpass( irc, value ); 40 irc_usermsg( irc, "Password successfully changed" ); 41 return NULL; 40 if( irc->status & USTATUS_IDENTIFIED && value ) 41 { 42 irc_setpass( irc, value ); 43 return NULL; 44 } 45 else 46 { 47 return SET_INVALID; 48 } 42 49 } 43 50 … … 71 78 } 72 79 80 static char *set_eval_away_status( set_t *set, char *value ) 81 { 82 irc_t *irc = set->data; 83 account_t *a; 84 85 g_free( set->value ); 86 set->value = g_strdup( value ); 87 88 for( a = irc->accounts; a; a = a->next ) 89 { 90 struct im_connection *ic = a->ic; 91 92 if( ic && ic->flags & OPT_LOGGED_IN ) 93 imc_away_send_update( ic ); 94 } 95 96 return value; 97 } 98 73 99 irc_t *irc_new( int fd ) 74 100 { … … 76 102 struct sockaddr_storage sock; 77 103 socklen_t socklen = sizeof( sock ); 104 set_t *s; 78 105 79 106 irc = g_new0( irc_t, 1 ); … … 135 162 irc_connection_list = g_slist_append( irc_connection_list, irc ); 136 163 137 set_add( &irc->set, "away_devoice", "true", set_eval_away_devoice, irc ); 138 set_add( &irc->set, "auto_connect", "true", set_eval_bool, irc ); 139 set_add( &irc->set, "auto_reconnect", "false", set_eval_bool, irc ); 140 set_add( &irc->set, "auto_reconnect_delay", "300", set_eval_int, irc ); 141 set_add( &irc->set, "buddy_sendbuffer", "false", set_eval_bool, irc ); 142 set_add( &irc->set, "buddy_sendbuffer_delay", "200", set_eval_int, irc ); 143 set_add( &irc->set, "charset", "utf-8", set_eval_charset, irc ); 144 set_add( &irc->set, "debug", "false", set_eval_bool, irc ); 145 set_add( &irc->set, "default_target", "root", NULL, irc ); 146 set_add( &irc->set, "display_namechanges", "false", set_eval_bool, irc ); 147 set_add( &irc->set, "handle_unknown", "root", NULL, irc ); 148 set_add( &irc->set, "lcnicks", "true", set_eval_bool, irc ); 149 set_add( &irc->set, "ops", "both", set_eval_ops, irc ); 150 set_add( &irc->set, "password", NULL, passchange, irc ); 151 set_add( &irc->set, "private", "true", set_eval_bool, irc ); 152 set_add( &irc->set, "query_order", "lifo", NULL, irc ); 153 set_add( &irc->set, "root_nick", irc->mynick, set_eval_root_nick, irc ); 154 set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc ); 155 set_add( &irc->set, "simulate_netsplit", "true", set_eval_bool, irc ); 156 set_add( &irc->set, "strip_html", "true", NULL, irc ); 157 set_add( &irc->set, "to_char", ": ", set_eval_to_char, irc ); 158 set_add( &irc->set, "typing_notice", "false", set_eval_bool, irc ); 164 s = set_add( &irc->set, "away", NULL, set_eval_away_status, irc ); 165 s->flags |= SET_NULL_OK; 166 s = set_add( &irc->set, "away_devoice", "true", set_eval_away_devoice, irc ); 167 s = set_add( &irc->set, "auto_connect", "true", set_eval_bool, irc ); 168 s = set_add( &irc->set, "auto_reconnect", "true", set_eval_bool, irc ); 169 s = set_add( &irc->set, "auto_reconnect_delay", "5*3<900", set_eval_account_reconnect_delay, irc ); 170 s = set_add( &irc->set, "buddy_sendbuffer", "false", set_eval_bool, irc ); 171 s = set_add( &irc->set, "buddy_sendbuffer_delay", "200", set_eval_int, irc ); 172 s = set_add( &irc->set, "charset", "utf-8", set_eval_charset, irc ); 173 s = set_add( &irc->set, "debug", "false", set_eval_bool, irc ); 174 s = set_add( &irc->set, "default_target", "root", NULL, irc ); 175 s = set_add( &irc->set, "display_namechanges", "false", set_eval_bool, irc ); 176 s = set_add( &irc->set, "handle_unknown", "root", NULL, irc ); 177 s = set_add( &irc->set, "lcnicks", "true", set_eval_bool, irc ); 178 s = set_add( &irc->set, "ops", "both", set_eval_ops, irc ); 179 s = set_add( &irc->set, "password", NULL, set_eval_password, irc ); 180 s->flags |= SET_NULL_OK; 181 s = set_add( &irc->set, "private", "true", set_eval_bool, irc ); 182 s = set_add( &irc->set, "query_order", "lifo", NULL, irc ); 183 s = set_add( &irc->set, "root_nick", irc->mynick, set_eval_root_nick, irc ); 184 s = set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc ); 185 s = set_add( &irc->set, "simulate_netsplit", "true", set_eval_bool, irc ); 186 s = set_add( &irc->set, "status", NULL, set_eval_away_status, irc ); 187 s->flags |= SET_NULL_OK; 188 s = set_add( &irc->set, "strip_html", "true", NULL, irc ); 189 s = set_add( &irc->set, "to_char", ": ", set_eval_to_char, irc ); 190 s = set_add( &irc->set, "typing_notice", "false", set_eval_bool, irc ); 159 191 160 192 conf_loaddefaults( irc ); … … 230 262 231 263 if( irc->status & USTATUS_IDENTIFIED && set_getbool( &irc->set, "save_on_quit" ) ) 232 if( storage_save( irc, TRUE ) != STORAGE_OK )264 if( storage_save( irc, NULL, TRUE ) != STORAGE_OK ) 233 265 irc_usermsg( irc, "Error while saving settings!" ); 234 266 … … 398 430 } 399 431 400 if( lines[i] ) 401 { 402 if( ( cmd = irc_parse_line( lines[i] ) ) == NULL ) 403 continue; 432 if( lines[i] && ( cmd = irc_parse_line( lines[i] ) ) ) 433 { 404 434 irc_exec( irc, cmd ); 405 435 g_free( cmd ); … … 476 506 if( line[0] == ':' ) 477 507 { 478 for( i = 0; line[i] != ' '; i ++ );508 for( i = 0; line[i] && line[i] != ' '; i ++ ); 479 509 line = line + i; 480 510 } … … 772 802 irc_reply( irc, 3, ":%s", IRCD_INFO ); 773 803 irc_reply( irc, 4, "%s %s %s %s", irc->myhost, BITLBEE_VERSION, UMODES UMODES_PRIV, CMODES ); 774 irc_reply( irc, 5, "PREFIX=(ov)@+ CHANTYPES=#& CHANMODES=,,,%s NICKLEN=%d NETWORK=BitlBee CASEMAPPING=rfc1459 MAXTARGETS=1 WATCH=128 :are supported by this server", CMODES, MAX_NICK_LENGTH - 1 ); 804 irc_reply( irc, 5, "PREFIX=(ov)@+ CHANTYPES=%s CHANMODES=,,,%s NICKLEN=%d NETWORK=BitlBee " 805 "CASEMAPPING=rfc1459 MAXTARGETS=1 WATCH=128 :are supported by this server", 806 CTYPES, CMODES, MAX_NICK_LENGTH - 1 ); 775 807 irc_motd( irc ); 776 808 irc->umode[0] = '\0'; … … 1013 1045 user_t *u = NULL; 1014 1046 1015 if( *nick == '#' || *nick == '&')1047 if( strchr( CTYPES, *nick ) ) 1016 1048 { 1017 1049 if( !( c = irc_chat_by_channel( irc, nick ) ) )
Note: See TracChangeset
for help on using the changeset viewer.