Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc.c

    r0383943 rb0a33a5  
    3333GSList *irc_connection_list = NULL;
    3434
    35 static 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;
     35static char *passchange (irc_t *irc, void *set, char *value)
     36{
     37        irc_setpass (irc, value);
     38        return (NULL);
    4239}
    4340
     
    126123        irc_connection_list = g_slist_append( irc_connection_list, irc );
    127124       
    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 );
     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);
    148145       
    149146        conf_loaddefaults( irc );
     
    209206void irc_free(irc_t * irc)
    210207{
    211         account_t *account;
     208        account_t *account, *accounttmp;
    212209        user_t *user, *usertmp;
     210        nick_t *nick, *nicktmp;
    213211        help_t *helpnode, *helpnodetmp;
     212        set_t *setnode, *setnodetmp;
    214213       
    215214        log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd );
    216215       
    217         if( irc->status & USTATUS_IDENTIFIED && set_getbool( &irc->set, "save_on_quit" ) )
     216        if( irc->status & USTATUS_IDENTIFIED && set_getint( irc, "save_on_quit" ) )
    218217                if( storage_save( irc, TRUE ) != STORAGE_OK )
    219218                        irc_usermsg( irc, "Error while saving settings!" );
     
    255254                query_del(irc, irc->queries);
    256255       
    257         while (irc->accounts)
    258                 account_del(irc, irc->accounts);
    259        
    260         while (irc->set)
    261                 set_del(&irc->set, irc->set->key);
     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        }
    262267       
    263268        if (irc->users != NULL) {
     
    284289        g_hash_table_destroy(irc->watches);
    285290       
     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        }
    286302        if (irc->help != NULL) {
    287303                helpnode = irc->help;
     
    294310                }
    295311        }
     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        }
    296324        g_free(irc);
    297325       
     
    304332void irc_setpass (irc_t *irc, const char *pass)
    305333{
    306         g_free (irc->password);
     334        if (irc->password) g_free (irc->password);
    307335       
    308336        if (pass) {
    309337                irc->password = g_strdup (pass);
     338                irc_usermsg (irc, "Password successfully changed");
    310339        } else {
    311340                irc->password = NULL;
     
    338367                        }
    339368                       
    340                         if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
     369                        if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
    341370                        {
    342371                                conv[IRC_MAX_LINE] = 0;
     
    558587       
    559588        strip_newlines( line );
    560         if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
     589        if( ( cs = set_getstr( irc, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
    561590        {
    562591                char conv[IRC_MAX_LINE+1];
     
    626655        char namelist[385] = "";
    627656        struct conversation *c = NULL;
    628         char *ops = set_getstr( &irc->set, "ops" );
     657        char *ops = set_getstr( irc, "ops" );
    629658       
    630659        /* RFCs say there is no error reply allowed on NAMES, so when the
     
    641670                        }
    642671                       
    643                         if( u->gc && !u->away && set_getbool( &irc->set, "away_devoice" ) )
     672                        if( u->gc && !u->away && set_getint( irc, "away_devoice" ) )
    644673                                strcat( namelist, "+" );
    645674                        else if( ( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( ops, "root" ) == 0 || strcmp( ops, "both" ) == 0 ) ) ||
     
    901930{
    902931        char *nick, *s;
    903         char reason[128];
     932        char reason[64];
    904933       
    905934        if( u->gc && u->gc->flags & OPT_LOGGING_OUT )
    906935        {
    907                 if( u->gc->acc->server )
     936                if( u->gc->user->proto_opt[0][0] )
    908937                        g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,
    909                                     u->gc->acc->server );
     938                                    u->gc->user->proto_opt[0] );
    910939                else if( ( s = strchr( u->gc->username, '@' ) ) )
    911940                        g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,
     
    913942                else
    914943                        g_snprintf( reason, sizeof( reason ), "%s %s.%s", irc->myhost,
    915                                     u->gc->acc->prpl->name, irc->myhost );
     944                                    u->gc->prpl->name, irc->myhost );
    916945               
    917946                /* proto_opt might contain garbage after the : */
     
    9891018                else if( g_strncasecmp( s + 1, "TYPING", 6 ) == 0 )
    9901019                {
    991                         if( u && u->gc && u->gc->acc->prpl->send_typing && strlen( s ) >= 10 )
     1020                        if( u && u->gc && u->gc->prpl->send_typing && strlen( s ) >= 10 )
    9921021                        {
    9931022                                time_t current_typing_notice = time( NULL );
     
    9951024                                if( current_typing_notice - u->last_typing_notice >= 5 )
    9961025                                {
    997                                         u->gc->acc->prpl->send_typing( u->gc, u->handle, s[8] == '1' );
     1026                                        u->gc->prpl->send_typing( u->gc, u->handle, s[8] == '1' );
    9981027                                        u->last_typing_notice = current_typing_notice;
    9991028                                }
     
    10281057                }
    10291058        }
    1030         else if( c && c->gc && c->gc->acc && c->gc->acc->prpl )
     1059        else if( c && c->gc && c->gc->prpl )
    10311060        {
    10321061                return( bim_chat_msg( c->gc, c->id, s ) );
     
    10601089        if( !u || !u->gc ) return;
    10611090       
    1062         if( set_getbool( &irc->set, "buddy_sendbuffer" ) && set_getint( &irc->set, "buddy_sendbuffer_delay" ) > 0 )
     1091        if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 )
    10631092        {
    10641093                int delay;
     
    10871116                strcat( u->sendbuf, "\n" );
    10881117               
    1089                 delay = set_getint( &irc->set, "buddy_sendbuffer_delay" );
     1118                delay = set_getint( irc, "buddy_sendbuffer_delay" );
    10901119                if( delay <= 5 )
    10911120                        delay *= 1000;
     
    11521181                int len = strlen( irc->nick) + 3;
    11531182                prefix = g_new (char, len );
    1154                 g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( &irc->set, "to_char" ) );
     1183                g_snprintf( prefix, len, "%s%s", irc->nick, set_getstr( irc, "to_char" ) );
    11551184                prefix[len-1] = 0;
    11561185        }
Note: See TracChangeset for help on using the changeset viewer.