Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc.c

    rb0a33a5 r0383943  
    3333GSList *irc_connection_list = NULL;
    3434
    35 static char *passchange (irc_t *irc, void *set, char *value)
    36 {
    37         irc_setpass (irc, value);
    38         return (NULL);
     35static char *passchange( set_t *set, char *value )
     36{
     37        irc_t *irc = set->data;
     38       
     39        irc_setpass( irc, value );
     40        irc_usermsg( irc, "Password successfully changed" );
     41        return NULL;
    3942}
    4043
     
    123126        irc_connection_list = g_slist_append( irc_connection_list, irc );
    124127       
    125         set_add( irc, "away_devoice", "true",  set_eval_away_devoice );
    126         set_add( irc, "auto_connect", "true", set_eval_bool );
    127         set_add( irc, "auto_reconnect", "false", set_eval_bool );
    128         set_add( irc, "auto_reconnect_delay", "300", set_eval_int );
    129         set_add( irc, "buddy_sendbuffer", "false", set_eval_bool );
    130         set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int );
    131         set_add( irc, "charset", "iso8859-1", set_eval_charset );
    132         set_add( irc, "debug", "false", set_eval_bool );
    133         set_add( irc, "default_target", "root", NULL );
    134         set_add( irc, "display_namechanges", "false", set_eval_bool );
    135         set_add( irc, "handle_unknown", "root", NULL );
    136         set_add( irc, "lcnicks", "true", set_eval_bool );
    137         set_add( irc, "ops", "both", set_eval_ops );
    138         set_add( irc, "private", "true", set_eval_bool );
    139         set_add( irc, "query_order", "lifo", NULL );
    140         set_add( irc, "save_on_quit", "true", set_eval_bool );
    141         set_add( irc, "strip_html", "true", NULL );
    142         set_add( irc, "to_char", ": ", set_eval_to_char );
    143         set_add( irc, "typing_notice", "false", set_eval_bool );
    144         set_add( irc, "password", NULL, passchange);
     128        set_add( &irc->set, "away_devoice", "true",  set_eval_away_devoice, irc );
     129        set_add( &irc->set, "auto_connect", "true", set_eval_bool, irc );
     130        set_add( &irc->set, "auto_reconnect", "false", set_eval_bool, irc );
     131        set_add( &irc->set, "auto_reconnect_delay", "300", set_eval_int, irc );
     132        set_add( &irc->set, "buddy_sendbuffer", "false", set_eval_bool, irc );
     133        set_add( &irc->set, "buddy_sendbuffer_delay", "200", set_eval_int, irc );
     134        set_add( &irc->set, "charset", "iso8859-1", set_eval_charset, irc );
     135        set_add( &irc->set, "debug", "false", set_eval_bool, irc );
     136        set_add( &irc->set, "default_target", "root", NULL, irc );
     137        set_add( &irc->set, "display_namechanges", "false", set_eval_bool, irc );
     138        set_add( &irc->set, "handle_unknown", "root", NULL, irc );
     139        set_add( &irc->set, "lcnicks", "true", set_eval_bool, irc );
     140        set_add( &irc->set, "ops", "both", set_eval_ops, irc );
     141        set_add( &irc->set, "password", NULL, passchange, irc );
     142        set_add( &irc->set, "private", "true", set_eval_bool, irc );
     143        set_add( &irc->set, "query_order", "lifo", NULL, irc );
     144        set_add( &irc->set, "save_on_quit", "true", set_eval_bool, irc );
     145        set_add( &irc->set, "strip_html", "true", NULL, irc );
     146        set_add( &irc->set, "to_char", ": ", set_eval_to_char, irc );
     147        set_add( &irc->set, "typing_notice", "false", set_eval_bool, irc );
    145148       
    146149        conf_loaddefaults( irc );
     
    206209void irc_free(irc_t * irc)
    207210{
    208         account_t *account, *accounttmp;
     211        account_t *account;
    209212        user_t *user, *usertmp;
    210         nick_t *nick, *nicktmp;
    211213        help_t *helpnode, *helpnodetmp;
    212         set_t *setnode, *setnodetmp;
    213214       
    214215        log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd );
    215216       
    216         if( irc->status & USTATUS_IDENTIFIED && set_getint( irc, "save_on_quit" ) )
     217        if( irc->status & USTATUS_IDENTIFIED && set_getbool( &irc->set, "save_on_quit" ) )
    217218                if( storage_save( irc, TRUE ) != STORAGE_OK )
    218219                        irc_usermsg( irc, "Error while saving settings!" );
     
    254255                query_del(irc, irc->queries);
    255256       
    256         if (irc->accounts != NULL) {
    257                 account = irc->accounts;
    258                 while (account != NULL) {
    259                         g_free(account->user);
    260                         g_free(account->pass);
    261                         g_free(account->server);
    262                         accounttmp = account;
    263                         account = account->next;
    264                         g_free(accounttmp);
    265                 }
    266         }
     257        while (irc->accounts)
     258                account_del(irc, irc->accounts);
     259       
     260        while (irc->set)
     261                set_del(&irc->set, irc->set->key);
    267262       
    268263        if (irc->users != NULL) {
     
    289284        g_hash_table_destroy(irc->watches);
    290285       
    291         if (irc->nicks != NULL) {
    292                 nick = irc->nicks;
    293                 while (nick != NULL) {
    294                         g_free(nick->nick);
    295                         g_free(nick->handle);
    296                                        
    297                         nicktmp = nick;
    298                         nick = nick->next;
    299                         g_free(nicktmp);
    300                 }
    301         }
    302286        if (irc->help != NULL) {
    303287                helpnode = irc->help;
     
    310294                }
    311295        }
    312         if (irc->set != NULL) {
    313                 setnode = irc->set;
    314                 while (setnode != NULL) {
    315                         g_free(setnode->key);
    316                         g_free(setnode->def);
    317                         g_free(setnode->value);
    318                        
    319                         setnodetmp = setnode;
    320                         setnode = setnode->next;
    321                         g_free(setnodetmp);
    322                 }
    323         }
    324296        g_free(irc);
    325297       
     
    332304void irc_setpass (irc_t *irc, const char *pass)
    333305{
    334         if (irc->password) g_free (irc->password);
     306        g_free (irc->password);
    335307       
    336308        if (pass) {
    337309                irc->password = g_strdup (pass);
    338                 irc_usermsg (irc, "Password successfully changed");
    339310        } else {
    340311                irc->password = NULL;
     
    367338                        }
    368339                       
    369                         if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
     340                        if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
    370341                        {
    371342                                conv[IRC_MAX_LINE] = 0;
     
    587558       
    588559        strip_newlines( line );
    589         if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
     560        if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
    590561        {
    591562                char conv[IRC_MAX_LINE+1];
     
    655626        char namelist[385] = "";
    656627        struct conversation *c = NULL;
    657         char *ops = set_getstr( irc, "ops" );
     628        char *ops = set_getstr( &irc->set, "ops" );
    658629       
    659630        /* RFCs say there is no error reply allowed on NAMES, so when the
     
    670641                        }
    671642                       
    672                         if( u->gc && !u->away && set_getint( irc, "away_devoice" ) )
     643                        if( u->gc && !u->away && set_getbool( &irc->set, "away_devoice" ) )
    673644                                strcat( namelist, "+" );
    674645                        else if( ( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( ops, "root" ) == 0 || strcmp( ops, "both" ) == 0 ) ) ||
     
    930901{
    931902        char *nick, *s;
    932         char reason[64];
     903        char reason[128];
    933904       
    934905        if( u->gc && u->gc->flags & OPT_LOGGING_OUT )
    935906        {
    936                 if( u->gc->user->proto_opt[0][0] )
     907                if( u->gc->acc->server )
    937908                        g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,
    938                                     u->gc->user->proto_opt[0] );
     909                                    u->gc->acc->server );
    939910                else if( ( s = strchr( u->gc->username, '@' ) ) )
    940911                        g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,
     
    942913                else
    943914                        g_snprintf( reason, sizeof( reason ), "%s %s.%s", irc->myhost,
    944                                     u->gc->prpl->name, irc->myhost );
     915                                    u->gc->acc->prpl->name, irc->myhost );
    945916               
    946917                /* proto_opt might contain garbage after the : */
     
    1018989                else if( g_strncasecmp( s + 1, "TYPING", 6 ) == 0 )
    1019990                {
    1020                         if( u && u->gc && u->gc->prpl->send_typing && strlen( s ) >= 10 )
     991                        if( u && u->gc && u->gc->acc->prpl->send_typing && strlen( s ) >= 10 )
    1021992                        {
    1022993                                time_t current_typing_notice = time( NULL );
     
    1024995                                if( current_typing_notice - u->last_typing_notice >= 5 )
    1025996                                {
    1026                                         u->gc->prpl->send_typing( u->gc, u->handle, s[8] == '1' );
     997                                        u->gc->acc->prpl->send_typing( u->gc, u->handle, s[8] == '1' );
    1027998                                        u->last_typing_notice = current_typing_notice;
    1028999                                }
     
    10571028                }
    10581029        }
    1059         else if( c && c->gc && c->gc->prpl )
     1030        else if( c && c->gc && c->gc->acc && c->gc->acc->prpl )
    10601031        {
    10611032                return( bim_chat_msg( c->gc, c->id, s ) );
     
    10891060        if( !u || !u->gc ) return;
    10901061       
    1091         if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 )
     1062        if( set_getbool( &irc->set, "buddy_sendbuffer" ) && set_getint( &irc->set, "buddy_sendbuffer_delay" ) > 0 )
    10921063        {
    10931064                int delay;
     
    11161087                strcat( u->sendbuf, "\n" );
    11171088               
    1118                 delay = set_getint( irc, "buddy_sendbuffer_delay" );
     1089                delay = set_getint( &irc->set, "buddy_sendbuffer_delay" );
    11191090                if( delay <= 5 )
    11201091                        delay *= 1000;
     
    11811152                int len = strlen( irc->nick) + 3;
    11821153                prefix = g_new (char, len );
    1183                 g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( irc, "to_char" ) );
     1154                g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( &irc->set, "to_char" ) );
    11841155                prefix[len-1] = 0;
    11851156        }
Note: See TracChangeset for help on using the changeset viewer.