Changeset 5c9512f


Ignore:
Timestamp:
2006-06-30T09:17:18Z (13 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
0a3c243
Parents:
1719464
Message:

Made set.c API more generic so it's not specific to irc_t structures anymore,
but can be used for account_t structures too, for example.

Files:
12 edited

Legend:

Unmodified
Added
Removed
  • conf.c

    r1719464 r5c9512f  
    323323                if( g_strcasecmp( ini->section, "defaults" ) == 0 )
    324324                {
    325                         set_t *s = set_find( irc, ini->key );
     325                        set_t *s = set_find( &irc->set, ini->key );
    326326                       
    327327                        if( s )
  • irc.c

    r1719464 r5c9512f  
    121121        irc_connection_list = g_slist_append( irc_connection_list, irc );
    122122       
    123         set_add( irc, "away_devoice", "true",  set_eval_away_devoice );
    124         set_add( irc, "auto_connect", "true", set_eval_bool );
    125         set_add( irc, "auto_reconnect", "false", set_eval_bool );
    126         set_add( irc, "auto_reconnect_delay", "300", set_eval_int );
    127         set_add( irc, "buddy_sendbuffer", "false", set_eval_bool );
    128         set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int );
    129         set_add( irc, "charset", "iso8859-1", set_eval_charset );
    130         set_add( irc, "debug", "false", set_eval_bool );
    131         set_add( irc, "default_target", "root", NULL );
    132         set_add( irc, "display_namechanges", "false", set_eval_bool );
    133         set_add( irc, "handle_unknown", "root", NULL );
    134         set_add( irc, "lcnicks", "true", set_eval_bool );
    135         set_add( irc, "ops", "both", set_eval_ops );
    136         set_add( irc, "private", "true", set_eval_bool );
    137         set_add( irc, "query_order", "lifo", NULL );
    138         set_add( irc, "save_on_quit", "true", set_eval_bool );
    139         set_add( irc, "strip_html", "true", NULL );
    140         set_add( irc, "to_char", ": ", set_eval_to_char );
    141         set_add( irc, "typing_notice", "false", set_eval_bool );
    142         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 );
    143143       
    144144        conf_loaddefaults( irc );
     
    212212        log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd );
    213213       
    214         if( irc->status & USTATUS_IDENTIFIED && set_getint( irc, "save_on_quit" ) )
     214        if( irc->status & USTATUS_IDENTIFIED && set_getint( &irc->set, "save_on_quit" ) )
    215215                if( storage_save( irc, TRUE ) != STORAGE_OK )
    216216                        irc_usermsg( irc, "Error while saving settings!" );
     
    364364                        }
    365365                       
    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 ) )
    367367                        {
    368368                                conv[IRC_MAX_LINE] = 0;
     
    584584       
    585585        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 ) )
    587587        {
    588588                char conv[IRC_MAX_LINE+1];
     
    666666                        if( u->gc && control )
    667667                        {
    668                                 if( set_getint( irc, "away_devoice" ) && !u->away )
     668                                if( set_getint( &irc->set, "away_devoice" ) && !u->away )
    669669                                        s = "+";
    670670                                else
     
    675675                        else if( !u->gc )
    676676                        {
    677                                 if( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( set_getstr( irc, "ops" ), "root" ) == 0 || strcmp( set_getstr( irc, "ops" ), "both" ) == 0 ) )
     677                                if( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( set_getstr( &irc->set, "ops" ), "root" ) == 0 || strcmp( set_getstr( &irc->set, "ops" ), "both" ) == 0 ) )
    678678                                        s = "@";
    679                                 else if( strcmp( u->nick, irc->nick ) == 0 && ( strcmp( set_getstr( irc, "ops" ), "user" ) == 0 || strcmp( set_getstr( irc, "ops" ), "both" ) == 0 ) )
     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 ) )
    680680                                        s = "@";
    681681                                else
     
    10841084        if( !u || !u->gc ) return;
    10851085       
    1086         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 )
    10871087        {
    10881088                int delay;
     
    11111111                strcat( u->sendbuf, "\n" );
    11121112               
    1113                 delay = set_getint( irc, "buddy_sendbuffer_delay" );
     1113                delay = set_getint( &irc->set, "buddy_sendbuffer_delay" );
    11141114                if( delay <= 5 )
    11151115                        delay *= 1000;
     
    11761176                int len = strlen( irc->nick) + 3;
    11771177                prefix = g_new (char, len );
    1178                 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" ) );
    11791179                prefix[len-1] = 0;
    11801180        }
  • irc_commands.c

    r1719464 r5c9512f  
    230230                {
    231231                        unsigned int i;
    232                         char *t = set_getstr( irc, "default_target" );
     232                        char *t = set_getstr( &irc->set, "default_target" );
    233233                       
    234234                        if( g_strcasecmp( t, "last" ) == 0 && irc->last_target )
  • nick.c

    r1719464 r5c9512f  
    8686               
    8787                nick_strip( nick );
    88                 if (set_getint(irc, "lcnicks"))
     88                if( set_getint( &irc->set, "lcnicks" ) )
    8989                        nick_lc( nick );
    9090        }
  • protocols/nogaim.c

    r1719464 r5c9512f  
    220220        va_end( params );
    221221
    222         if( ( g_strcasecmp( set_getstr( gc->irc, "strip_html" ), "always" ) == 0 ) ||
    223             ( ( gc->flags & OPT_CONN_HTML ) && set_getint( gc->irc, "strip_html" ) ) )
     222        if( ( g_strcasecmp( set_getstr( &gc->irc->set, "strip_html" ), "always" ) == 0 ) ||
     223            ( ( gc->flags & OPT_CONN_HTML ) && set_getint( &gc->irc->set, "strip_html" ) ) )
    224224                strip_html( text );
    225225       
     
    324324                /* Uhm... This is very sick. */
    325325        }
    326         else if( !gc->wants_to_die && set_getint( irc, "auto_reconnect" ) )
    327         {
    328                 int delay = set_getint( irc, "auto_reconnect_delay" );
     326        else if( !gc->wants_to_die && set_getint( &irc->set, "auto_reconnect" ) )
     327        {
     328                int delay = set_getint( &irc->set, "auto_reconnect_delay" );
    329329               
    330330                serv_got_crap( gc, "Reconnecting in %d seconds..", delay );
     
    365365        irc_t *irc = gc->irc;
    366366       
    367         if( set_getint( irc, "debug" ) && 0 ) /* This message is too useless */
     367        if( set_getint( &irc->set, "debug" ) && 0 ) /* This message is too useless */
    368368                serv_got_crap( gc, "Receiving user add from handle: %s", handle );
    369369       
    370370        if( user_findhandle( gc, handle ) )
    371371        {
    372                 if( set_getint( irc, "debug" ) )
     372                if( set_getint( &irc->set, "debug" ) )
    373373                        serv_got_crap( gc, "User already exists, ignoring add request: %s", handle );
    374374               
     
    458458                u->realname = g_strdup( realname );
    459459               
    460                 if( ( gc->flags & OPT_LOGGED_IN ) && set_getint( gc->irc, "display_namechanges" ) )
     460                if( ( gc->flags & OPT_LOGGED_IN ) && set_getint( &gc->irc->set, "display_namechanges" ) )
    461461                        serv_got_crap( gc, "User `%s' changed name to `%s'", u->nick, u->realname );
    462462        }
     
    514514        if( !u )
    515515        {
    516                 if( g_strcasecmp( set_getstr( gc->irc, "handle_unknown" ), "add" ) == 0 )
     516                if( g_strcasecmp( set_getstr( &gc->irc->set, "handle_unknown" ), "add" ) == 0 )
    517517                {
    518518                        add_buddy( gc, NULL, handle, NULL );
     
    521521                else
    522522                {
    523                         if( set_getint( gc->irc, "debug" ) || g_strcasecmp( set_getstr( gc->irc, "handle_unknown" ), "ignore" ) != 0 )
     523                        if( set_getint( &gc->irc->set, "debug" ) || g_strcasecmp( set_getstr( &gc->irc->set, "handle_unknown" ), "ignore" ) != 0 )
    524524                        {
    525525                                serv_got_crap( gc, "serv_got_update() for handle %s:", handle );
     
    580580       
    581581        /* LISPy... */
    582         if( ( set_getint( gc->irc, "away_devoice" ) ) &&                /* Don't do a thing when user doesn't want it */
     582        if( ( set_getint( &gc->irc->set, "away_devoice" ) ) &&          /* Don't do a thing when user doesn't want it */
    583583            ( u->online ) &&                                            /* Don't touch offline people */
    584584            ( ( ( u->online != oo ) && !u->away ) ||                    /* Voice joining people */
     
    599599        if( !u )
    600600        {
    601                 char *h = set_getstr( irc, "handle_unknown" );
     601                char *h = set_getstr( &irc->set, "handle_unknown" );
    602602               
    603603                if( g_strcasecmp( h, "ignore" ) == 0 )
    604604                {
    605                         if( set_getint( irc, "debug" ) )
     605                        if( set_getint( &irc->set, "debug" ) )
    606606                                serv_got_crap( gc, "Ignoring message from unknown handle %s", handle );
    607607                       
     
    610610                else if( g_strncasecmp( h, "add", 3 ) == 0 )
    611611                {
    612                         int private = set_getint( irc, "private" );
     612                        int private = set_getint( &irc->set, "private" );
    613613                       
    614614                        if( h[3] )
     
    631631        }
    632632       
    633         if( ( g_strcasecmp( set_getstr( gc->irc, "strip_html" ), "always" ) == 0 ) ||
    634             ( ( gc->flags & OPT_CONN_HTML ) && set_getint( gc->irc, "strip_html" ) ) )
     633        if( ( g_strcasecmp( set_getstr( &gc->irc->set, "strip_html" ), "always" ) == 0 ) ||
     634            ( ( gc->flags & OPT_CONN_HTML ) && set_getint( &gc->irc->set, "strip_html" ) ) )
    635635                strip_html( msg );
    636636
     
    672672        user_t *u;
    673673       
    674         if( !set_getint( gc->irc, "typing_notice" ) )
     674        if( !set_getint( &gc->irc->set, "typing_notice" ) )
    675675                return;
    676676       
     
    694694        GList *ir;
    695695       
    696         if( set_getint( gc->irc, "debug" ) )
     696        if( set_getint( &gc->irc->set, "debug" ) )
    697697                serv_got_crap( gc, "You were removed from conversation %d", (int) id );
    698698       
     
    739739        for( c = gc->conversations; c && c->id != id; c = c->next );
    740740       
    741         if( ( g_strcasecmp( set_getstr( gc->irc, "strip_html" ), "always" ) == 0 ) ||
    742             ( ( gc->flags & OPT_CONN_HTML ) && set_getint( gc->irc, "strip_html" ) ) )
     741        if( ( g_strcasecmp( set_getstr( &gc->irc->set, "strip_html" ), "always" ) == 0 ) ||
     742            ( ( gc->flags & OPT_CONN_HTML ) && set_getint( &gc->irc->set, "strip_html" ) ) )
    743743                strip_html( msg );
    744744       
     
    773773        g_free( s );
    774774       
    775         if( set_getint( gc->irc, "debug" ) )
     775        if( set_getint( &gc->irc->set, "debug" ) )
    776776                serv_got_crap( gc, "Creating new conversation: (id=%d,handle=%s)", id, handle );
    777777       
     
    787787        int me = 0;
    788788       
    789         if( set_getint( b->gc->irc, "debug" ) )
     789        if( set_getint( &b->gc->irc->set, "debug" ) )
    790790                serv_got_crap( b->gc, "User %s added to conversation %d", handle, b->id );
    791791       
     
    821821        int me = 0;
    822822       
    823         if( set_getint( b->gc->irc, "debug" ) )
     823        if( set_getint( &b->gc->irc->set, "debug" ) )
    824824                serv_got_crap( b->gc, "User %s removed from conversation %d (%s)", handle, b->id, reason ? reason : "" );
    825825       
     
    883883}
    884884
    885 char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value )
    886 {
     885char *set_eval_away_devoice( set_t *set, char *value )
     886{
     887        irc_t *irc = set->data;
    887888        int st;
    888889       
     
    898899        /* Horror.... */
    899900       
    900         if( st != set_getint( irc, "away_devoice" ) )
     901        if( st != set_getint( &irc->set, "away_devoice" ) )
    901902        {
    902903                char list[80] = "";
     
    938939        }
    939940       
    940         return( set_eval_bool( irc, set, value ) );
     941        return( set_eval_bool( set, value ) );
    941942}
    942943
     
    10181019                {
    10191020                        gc->prpl->set_away( gc, s, away );
    1020                         if( set_getint( gc->irc, "debug" ) )
     1021                        if( set_getint( &gc->irc->set, "debug" ) )
    10211022                                serv_got_crap( gc, "Setting away state to %s", s );
    10221023                }
  • protocols/nogaim.h

    r1719464 r5c9512f  
    206206
    207207void nogaim_init();
    208 char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value );
     208char *set_eval_away_devoice( set_t *set, char *value );
    209209
    210210gboolean auto_reconnect( gpointer data, gint fd, b_input_condition cond );
  • query.c

    r1719464 r5c9512f  
    6363        }
    6464       
    65         if( g_strcasecmp( set_getstr( irc, "query_order" ), "lifo" ) == 0 || irc->queries == q )
     65        if( g_strcasecmp( set_getstr( &irc->set, "query_order" ), "lifo" ) == 0 || irc->queries == q )
    6666                query_display( irc, q );
    6767       
     
    172172        query_t *q;
    173173       
    174         if( g_strcasecmp( set_getstr( irc, "query_order" ), "fifo" ) == 0 )
     174        if( g_strcasecmp( set_getstr( &irc->set, "query_order" ), "fifo" ) == 0 )
    175175                q = irc->queries;
    176176        else
  • root_commands.c

    r1719464 r5c9512f  
    144144                irc_usermsg( irc, "Password accepted, settings and accounts loaded" );
    145145                irc_umode_set( irc, "+R", 1 );
    146                 if( set_getint( irc, "auto_connect" ) )
     146                if( set_getint( &irc->set, "auto_connect" ) )
    147147                        cmd_account( irc, account_on );
    148148                break;
     
    672672        if( cmd[1] && cmd[2] )
    673673        {
    674                 set_setstr( irc, cmd[1], cmd[2] );
     674                set_setstr( &irc->set, cmd[1], cmd[2] );
    675675               
    676676                if( ( strcmp( cmd[2], "=" ) ) == 0 && cmd[3] )
     
    679679        if( cmd[1] ) /* else 'forgotten' on purpose.. Must show new value after changing */
    680680        {
    681                 char *s = set_getstr( irc, cmd[1] );
     681                char *s = set_getstr( &irc->set, cmd[1] );
    682682                if( s )
    683683                        irc_usermsg( irc, "%s = `%s'", cmd[1], s );
  • set.c

    r1719464 r5c9512f  
    2626#include "bitlbee.h"
    2727
    28 set_t *set_add( irc_t *irc, char *key, char *def, void *eval )
    29 {
    30         set_t *s = set_find( irc, key );
    31        
     28set_t *set_add( set_t **head, char *key, char *def, void *eval, void *data )
     29{
     30        set_t *s = set_find( head, key );
     31       
     32        /* Possibly the setting already exists. If it doesn't exist yet,
     33           we create it. If it does, we'll just change the default. */
    3234        if( !s )
    3335        {
    34                 if( ( s = irc->set ) )
     36                if( ( s = *head ) )
    3537                {
    3638                        while( s->next ) s = s->next;
    37                         s->next = g_new ( set_t, 1 );
     39                        s->next = g_new0( set_t, 1 );
    3840                        s = s->next;
    3941                }
    4042                else
    4143                {
    42                         s = irc->set = g_new( set_t, 1 );
     44                        s = *head = g_new0( set_t, 1 );
    4345                }
    44                 memset( s, 0, sizeof( set_t ) );
    4546                s->key = g_strdup( key );
    4647        }
     
    5354        if( def ) s->def = g_strdup( def );
    5455       
    55         if( s->eval )
    56         {
    57                 g_free( s->eval );
    58                 s->eval = NULL;
    59         }
    60         if( eval ) s->eval = eval;
    61        
    62         return( s );
    63 }
    64 
    65 set_t *set_find( irc_t *irc, char *key )
    66 {
    67         set_t *s = irc->set;
     56        s->eval = eval;
     57        s->data = data;
     58       
     59        return s;
     60}
     61
     62set_t *set_find( set_t **head, char *key )
     63{
     64        set_t *s = *head;
    6865       
    6966        while( s )
     
    7471        }
    7572       
    76         return( s );
    77 }
    78 
    79 char *set_getstr( irc_t *irc, char *key )
    80 {
    81         set_t *s = set_find( irc, key );
     73        return s;
     74}
     75
     76char *set_getstr( set_t **head, char *key )
     77{
     78        set_t *s = set_find( head, key );
    8279       
    8380        if( !s || ( !s->value && !s->def ) )
    84                 return( NULL );
    85        
    86         return( s->value?s->value:s->def );
    87 }
    88 
    89 int set_getint( irc_t *irc, char *key )
    90 {
    91         char *s = set_getstr( irc, key );
     81                return NULL;
     82       
     83        return s->value ? s->value : s->def;
     84}
     85
     86int set_getint( set_t **head, char *key )
     87{
     88        char *s = set_getstr( head, key );
    9289        int i = 0;
    9390       
    9491        if( !s )
    95                 return( 0 );
     92                return 0;
    9693       
    9794        if( ( g_strcasecmp( s, "true" ) == 0 ) || ( g_strcasecmp( s, "yes" ) == 0 ) || ( g_strcasecmp( s, "on" ) == 0 ) )
    98                 return( 1 );
     95                return 1;
    9996       
    10097        if( sscanf( s, "%d", &i ) != 1 )
    101                 return( 0 );
    102        
    103         return( i );
    104 }
    105 
    106 int set_setstr( irc_t *irc, char *key, char *value )
    107 {
    108         set_t *s = set_find( irc, key );
     98                return 0;
     99       
     100        return i;
     101}
     102
     103int set_setstr( set_t **head, char *key, char *value )
     104{
     105        set_t *s = set_find( head, key );
    109106        char *nv = value;
    110107       
    111108        if( !s )
    112                 s = set_add( irc, key, NULL, NULL );
    113        
    114         if( s->eval && !( nv = s->eval( irc, s, value ) ) )
    115                 return( 0 );
     109                s = set_add( head, key, NULL, NULL, NULL );
     110       
     111        if( s->eval && !( nv = s->eval( s, value ) ) )
     112                return 0;
    116113       
    117114        if( s->value )
     
    121118        }
    122119       
     120        /* If there's a default setting and it's equal to what we're trying to
     121           set, stick with s->value = NULL. Otherwise, remember the setting. */
    123122        if( !s->def || ( strcmp( nv, s->def ) != 0 ) )
    124123                s->value = g_strdup( nv );
     
    127126                g_free( nv );
    128127       
    129         return( 1 );
    130 }
    131 
    132 int set_setint( irc_t *irc, char *key, int value )
     128        return 1;
     129}
     130
     131int set_setint( set_t **head, char *key, int value )
    133132{
    134133        char s[24];     /* Not quite 128-bit clean eh? ;-) */
    135134       
    136         sprintf( s, "%d", value );
    137         return( set_setstr( irc, key, s ) );
    138 }
    139 
    140 void set_del( irc_t *irc, char *key )
    141 {
    142         set_t *s = irc->set, *t = NULL;
     135        g_snprintf( s, sizeof( s ), "%d", value );
     136        return set_setstr( head, key, s );
     137}
     138
     139void set_del( set_t **head, char *key )
     140{
     141        set_t *s = *head, *t = NULL;
    143142       
    144143        while( s )
     
    153152                        t->next = s->next;
    154153                else
    155                         irc->set = s->next;
     154                        *head = s->next;
    156155               
    157156                g_free( s->key );
     
    162161}
    163162
    164 char *set_eval_int( irc_t *irc, set_t *set, char *value )
    165 {
    166         char *s = value;
    167        
    168         for( ; *s; s ++ )
     163char *set_eval_int( set_t *set, char *value )
     164{
     165        char *s;
     166       
     167        for( s = value; *s; s ++ )
    169168                if( *s < '0' || *s > '9' )
    170                         return( NULL );
    171        
    172         return( value );
    173 }
    174 
    175 char *set_eval_bool( irc_t *irc, set_t *set, char *value )
     169                        return NULL;
     170       
     171        return value;
     172}
     173
     174char *set_eval_bool( set_t *set, char *value )
    176175{
    177176        if( ( g_strcasecmp( value, "true" ) == 0 ) || ( g_strcasecmp( value, "yes" ) == 0 ) || ( g_strcasecmp( value, "on" ) == 0 ) )
     
    179178        if( ( g_strcasecmp( value, "false" ) == 0 ) || ( g_strcasecmp( value, "no" ) == 0 ) || ( g_strcasecmp( value, "off" ) == 0 ) )
    180179                return( value );
    181         return( set_eval_int( irc, set, value ) );
    182 }
    183 
    184 char *set_eval_to_char( irc_t *irc, set_t *set, char *value )
     180        return( set_eval_int( set, value ) );
     181}
     182
     183char *set_eval_to_char( set_t *set, char *value )
    185184{
    186185        char *s = g_new( char, 3 );
     
    191190                sprintf( s, "%c ", *value );
    192191       
    193         return( s );
    194 }
    195 
    196 char *set_eval_ops( irc_t *irc, set_t *set, char *value )
    197 {
     192        return s;
     193}
     194
     195char *set_eval_ops( set_t *set, char *value )
     196{
     197        irc_t *irc = set->data;
     198       
    198199        if( g_strcasecmp( value, "user" ) == 0 )
    199         {
    200200                irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost,
    201201                                                              irc->channel, "+o-o", irc->nick, irc->mynick );
    202                 return( value );
    203         }
    204202        else if( g_strcasecmp( value, "root" ) == 0 )
    205         {
    206203                irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost,
    207204                                                              irc->channel, "-o+o", irc->nick, irc->mynick );
    208                 return( value );
    209         }
    210205        else if( g_strcasecmp( value, "both" ) == 0 )
    211         {
    212206                irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost,
    213207                                                              irc->channel, "+oo", irc->nick, irc->mynick );
    214                 return( value );
    215         }
    216208        else if( g_strcasecmp( value, "none" ) == 0 )
    217         {
    218209                irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost,
    219210                                                              irc->channel, "-oo", irc->nick, irc->mynick );
    220                 return( value );
    221         }
    222        
    223         return( NULL );
    224 }
    225 
    226 char *set_eval_charset( irc_t *irc, set_t *set, char *value )
     211        else
     212                return NULL;
     213       
     214        return value;
     215}
     216
     217char *set_eval_charset( set_t *set, char *value )
    227218{
    228219        GIConv cd;
    229220
    230221        if ( g_strncasecmp( value, "none", 4 ) == 0 )
    231                 return( value );
     222                return value;
    232223
    233224        cd = g_iconv_open( "UTF-8", value );
    234225        if( cd == (GIConv) -1 )
    235                 return( NULL );
     226                return NULL;
    236227
    237228        g_iconv_close( cd );
    238         return( value );
    239 }
     229        return value;
     230}
  • set.h

    r1719464 r5c9512f  
    22  * BitlBee -- An IRC to other IM-networks gateway                     *
    33  *                                                                    *
    4   * Copyright 2002-2004 Wilmer van der Gaast and others                *
     4  * Copyright 2002-2006 Wilmer van der Gaast and others                *
    55  \********************************************************************/
    66
     
    2626typedef struct set
    2727{
     28        void *data;
     29       
    2830        char *key;
    2931        char *value;
    3032        char *def;      /* Default */
    3133       
    32         /* Eval: Returns NULL if the value is incorrect. Can return a
    33            corrected value. set_setstr() should be able to free() the
    34            returned string! */
    35         char *(*eval) ( irc_t *irc, struct set *set, char *value );
     34        /* Eval: Returns NULL if the value is incorrect or exactly the
     35           passed value variable. When returning a corrected value,
     36           set_setstr() should be able to free() the returned string! */
     37        char *(*eval) ( struct set *set, char *value );
    3638        struct set *next;
    3739} set_t;
    3840
    39 set_t *set_add( irc_t *irc, char *key, char *def, void *eval );
    40 G_MODULE_EXPORT set_t *set_find( irc_t *irc, char *key );
    41 G_MODULE_EXPORT char *set_getstr( irc_t *irc, char *key );
    42 G_MODULE_EXPORT int set_getint( irc_t *irc, char *key );
    43 int set_setstr( irc_t *irc, char *key, char *value );
    44 int set_setint( irc_t *irc, char *key, int value );
    45 void set_del( irc_t *irc, char *key );
     41set_t *set_add( set_t **head, char *key, char *def, void *eval, void *data );
     42G_MODULE_EXPORT set_t *set_find( set_t **head, char *key );
     43G_MODULE_EXPORT char *set_getstr( set_t **head, char *key );
     44G_MODULE_EXPORT int set_getint( set_t **head, char *key );
     45int set_setstr( set_t **head, char *key, char *value );
     46int set_setint( set_t **head, char *key, int value );
     47void set_del( set_t **head, char *key );
    4648
    47 char *set_eval_int( irc_t *irc, set_t *set, char *value );
    48 char *set_eval_bool( irc_t *irc, set_t *set, char *value );
     49char *set_eval_int( set_t *set, char *value );
     50char *set_eval_bool( set_t *set, char *value );
    4951
    50 char *set_eval_to_char( irc_t *irc, set_t *set, char *value );
    51 char *set_eval_ops( irc_t *irc, set_t *set, char *value );
    52 char *set_eval_charset( irc_t *irc, set_t *set, char *value );
     52char *set_eval_to_char( set_t *set, char *value );
     53char *set_eval_ops( set_t *set, char *value );
     54char *set_eval_charset( set_t *set, char *value );
  • storage_xml.c

    r1719464 r5c9512f  
    246246                 xd->current_setting && xd->current_account == NULL )
    247247        {
    248                 set_setstr( irc, xd->current_setting, (char*) text );
     248                set_setstr( &irc->set, xd->current_setting, (char*) text );
    249249                g_free( xd->current_setting );
    250250                xd->current_setting = NULL;
     
    421421                pass_len = rc4_encode( (unsigned char*) acc->pass, strlen( acc->pass ), (unsigned char**) &pass_rc4, irc->password );
    422422                pass_b64 = base64_encode( pass_rc4, pass_len );
     423                g_free( pass_rc4 );
    423424               
    424425                if( !xml_printf( fd, "\t<account protocol=\"%s\" handle=\"%s\" password=\"%s\" autoconnect=\"%d\"", acc->prpl->name, acc->user, pass_b64, acc->auto_connect ) )
    425426                {
    426                         g_free( pass_rc4 );
    427427                        g_free( pass_b64 );
    428428                        goto write_error;
    429429                }
    430                 g_free( pass_rc4 );
    431430                g_free( pass_b64 );
    432431               
  • user.c

    r1719464 r5c9512f  
    6767       
    6868        u->user = u->realname = u->host = u->nick = g_strdup( nick );
    69         u->is_private = set_getint( irc, "private" );
     69        u->is_private = set_getint( &irc->set, "private" );
    7070       
    7171        key = g_strdup( nick );
Note: See TracChangeset for help on using the changeset viewer.