Changes in / [bf02a67:11e090b]


Ignore:
Files:
1 deleted
16 edited

Legend:

Unmodified
Added
Removed
  • account.c

    rbf02a67 r11e090b  
    2828#include "account.h"
    2929
    30 account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )
     30account_t *account_add( irc_t *irc, int protocol, char *user, char *pass )
    3131{
    3232        account_t *a;
     
    4242        }
    4343       
    44         a->prpl = prpl;
     44        a->protocol = protocol;
    4545        a->user = g_strdup( user );
    4646        a->pass = g_strdup( pass );
     
    6666        for( a = irc->accounts; a; a = a->next )
    6767        {
    68                 if( g_strcasecmp( id, a->prpl->name ) == 0 )
     68                if( g_strcasecmp( id, proto_name[a->protocol] ) == 0 )
    6969                {
    7070                        if( !ret )
     
    124124        }
    125125       
     126        if( proto_prpl[a->protocol]->login == NULL )
     127        {
     128                irc_usermsg( irc, "Support for protocol %s is not included in this BitlBee", proto_name[a->protocol] );
     129                return;
     130        }
     131       
    126132        cancel_auto_reconnect( a );
    127133       
    128134        u = g_new0 ( struct aim_user, 1 );
    129135        u->irc = irc;
    130         u->prpl = a->prpl;
     136        u->protocol = a->protocol;
    131137        strncpy( u->username, a->user, sizeof( u->username ) - 1 );
    132138        strncpy( u->password, a->pass, sizeof( u->password ) - 1 );
     
    136142        a->reconnect = 0;
    137143       
    138         a->prpl->login( u );
     144        proto_prpl[a->protocol]->login( u );
    139145}
    140146
  • account.h

    rbf02a67 r11e090b  
    2929typedef struct account
    3030{
    31         struct prpl *prpl;
     31        int protocol;
    3232        char *user;
    3333        char *pass;
     
    4141} account_t;
    4242
    43 account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass );
     43account_t *account_add( irc_t *irc, int protocol, char *user, char *pass );
    4444account_t *account_get( irc_t *irc, char *id );
    4545void account_del( irc_t *irc, account_t *acc );
  • commands.c

    rbf02a67 r11e090b  
    166166        if( g_strcasecmp( cmd[1], "add" ) == 0 )
    167167        {
    168                 struct prpl *prpl;
     168                int prot;
    169169               
    170170                if( cmd[2] == NULL || cmd[3] == NULL || cmd[4] == NULL )
     
    174174                }
    175175               
    176                 prpl = find_protocol(cmd[2]);
    177                
    178                 if( prpl == NULL )
     176                for( prot = 0; prot < PROTO_MAX; prot ++ )
     177                        if( proto_name[prot] && *proto_name[prot] && g_strcasecmp( proto_name[prot], cmd[2] ) == 0 )
     178                                break;
     179               
     180                if( ( prot == PROTO_MAX ) || ( proto_prpl[prot] == NULL ) )
    179181                {
    180182                        irc_usermsg( irc, "Unknown protocol" );
     
    182184                }
    183185
    184                 a = account_add( irc, prpl, cmd[3], cmd[4] );
     186                if( prot == PROTO_OSCAR && cmd[5] == NULL )
     187                {
     188                        irc_usermsg( irc, "Not enough parameters" );
     189                        return( 0 );
     190                }
     191               
     192                a = account_add( irc, prot, cmd[3], cmd[4] );
    185193               
    186194                if( cmd[5] )
     
    226234                                con = "";
    227235                       
    228                         irc_usermsg( irc, "%2d. %s, %s%s", i, a->prpl->name, a->user, con );
     236                        if( a->protocol == PROTO_OSCAR || a->protocol == PROTO_ICQ || a->protocol == PROTO_TOC )
     237                                irc_usermsg( irc, "%2d. OSCAR, %s on %s%s", i, a->user, a->server, con );
     238                        else
     239                                irc_usermsg( irc, "%2d. %s, %s%s", i, proto_name[a->protocol], a->user, con );
    229240                       
    230241                        i ++;
     
    343354                else
    344355                {
    345                         nick_set( irc, cmd[2], a->gc->prpl, cmd[3] );
     356                        nick_set( irc, cmd[2], a->gc->protocol, cmd[3] );
    346357                }
    347358        }
     
    424435        else if( u->send_handler == buddy_send_handler )
    425436        {
    426                 nick_set( irc, u->handle, u->gc->prpl, cmd[2] );
     437                nick_set( irc, u->handle, u->gc->protocol, cmd[2] );
    427438        }
    428439       
     
    635646        if( online == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && !u->away )
    636647        {
    637                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     648                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    638649                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Online" );
    639650                n_online ++;
     
    642653        if( away == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && u->away )
    643654        {
    644                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     655                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    645656                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, u->away );
    646657                n_away ++;
     
    649660        if( offline == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && !u->online )
    650661        {
    651                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     662                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    652663                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Offline" );
    653664                n_offline ++;
     
    710721        for( num = 0; q; q = q->next, num ++ )
    711722                if( q->gc ) /* Not necessary yet, but it might come later */
    712                         irc_usermsg( irc, "%d, %s(%s): %s", num, q->gc->prpl->name, q->gc->username, q->question );
     723                        irc_usermsg( irc, "%d, %s(%s): %s", num, proto_name[q->gc->protocol], q->gc->username, q->question );
    713724                else
    714725                        irc_usermsg( irc, "%d, BitlBee: %s", num, q->question );
     
    758769        for( n = gc->irc->nicks; n; n = n->next )
    759770        {
    760                 if( n->proto == gc->prpl && !user_findhandle( gc, n->handle ) )
     771                if( n->proto == gc->protocol && !user_findhandle( gc, n->handle ) )
    761772                {
    762773                        gc->prpl->add_buddy( gc, n->handle );
  • configure

    rbf02a67 r11e090b  
    1414datadir='$prefix/share/bitlbee/'
    1515config='/var/lib/bitlbee/'
    16 plugindir='$prefix/lib/bitlbee'
    1716
    1817msn=1
     
    4645--mandir=...                                            $mandir
    4746--datadir=...                                           $datadir
    48 --plugindir=...                                         $plugindir
    4947--config=...                                            $config
    5048
     
    7472datadir=`eval echo "$datadir/" | sed 's/\/\{1,\}/\//g'`
    7573config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'`
    76 plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
    7774
    7875cat<<EOF>Makefile.settings
     
    8380MANDIR=$mandir
    8481DATADIR=$datadir
    85 PLUGINDIR=$plugindir
    8682CONFIG=$config
    8783
     
    104100#define ETCDIR "$etcdir"
    105101#define VARDIR "$datadir"
    106 #define PLUGINDIR "$plugindir"
    107102#define ARCH "$arch"
    108103#define CPU "$cpu"
     
    147142if type pkg-config > /dev/null 2>/dev/null && pkg-config glib-2.0; then
    148143        cat<<EOF>>Makefile.settings
    149 EFLAGS+=`pkg-config --libs glib-2.0 gmodule-2.0`
    150 CFLAGS+=`pkg-config --cflags glib-2.0 gmodule-2.0`
     144EFLAGS+=`pkg-config --libs glib-2.0`
     145CFLAGS+=`pkg-config --cflags glib-2.0`
    151146EOF
    152147        echo '#define GLIB2' >> config.h
  • irc.c

    rbf02a67 r11e090b  
    11861186                if( u->gc )
    11871187                        irc_reply( irc, 312, "%s %s.%s :%s network", u->nick, u->gc->user->username,
    1188                                    *u->gc->user->proto_opt[0] ? u->gc->user->proto_opt[0] : "", u->gc->prpl->name );
     1188                                   *u->gc->user->proto_opt[0] ? u->gc->user->proto_opt[0] : "", proto_name[u->gc->user->protocol] );
    11891189                else
    11901190                        irc_reply( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO );
  • nick.c

    rbf02a67 r11e090b  
    2727#include "bitlbee.h"
    2828
    29 void nick_set( irc_t *irc, const char *handle, struct prpl *proto, const char *nick )
     29void nick_set( irc_t *irc, const char *handle, int proto, const char *nick )
    3030{
    3131        nick_t *m = NULL, *n = irc->nicks;
     
    5656}
    5757
    58 char *nick_get( irc_t *irc, const char *handle, struct prpl *proto, const char *realname )
     58char *nick_get( irc_t *irc, const char *handle, int proto, const char *realname )
    5959{
    6060        static char nick[MAX_NICK_LENGTH+1];
  • nick.h

    rbf02a67 r11e090b  
    2727{
    2828        char *handle;
    29         struct prpl *proto;
     29        int proto;
    3030        char *nick;
    3131        struct __NICK *next;
    3232} nick_t;
    3333
    34 void nick_set( irc_t *irc, const char *handle, struct prpl *proto, const char *nick );
    35 char *nick_get( irc_t *irc, const char *handle, struct prpl *proto, const char *realname );
     34void nick_set( irc_t *irc, const char *handle, int proto, const char *nick );
     35char *nick_get( irc_t *irc, const char *handle, int proto, const char *realname );
    3636void nick_del( irc_t *irc, const char *nick );
    3737void nick_strip( char *nick );
  • protocols/jabber/jabber.c

    rbf02a67 r11e090b  
    155155#define JCS_CLOSED  3   /* closed */
    156156
     157
     158static char *jabber_name()
     159{
     160        return "Jabber";
     161}
    157162
    158163#define STATE_EVT(arg) if(gjc->on_state) { (gjc->on_state)(gjc, (arg) ); }
     
    23632368}
    23642369
    2365 
    2366 void jabber_init()
    2367 {
    2368         struct prpl *ret = g_new0(struct prpl, 1);
    2369 
     2370static struct prpl *my_protocol = NULL;
     2371
     2372void jabber_init(struct prpl *ret)
     2373{
    23702374        /* the NULL's aren't required but they're nice to have */
    2371         ret->name = "jabber";
     2375        ret->protocol = PROTO_JABBER;
     2376        ret->name = jabber_name;
    23722377        ret->away_states = jabber_away_states;
    23732378        ret->actions = jabber_actions;
     
    23932398        ret->cmp_buddynames = g_strcasecmp;
    23942399
    2395         register_protocol (ret);
    2396 }
     2400        my_protocol = ret;
     2401}
  • protocols/msn/msn.c

    rbf02a67 r11e090b  
    2626#include "nogaim.h"
    2727#include "msn.h"
     28
     29static struct prpl *my_protocol = NULL;
    2830
    2931static void msn_login( struct aim_user *acct )
     
    373375}
    374376
    375 void msn_init()
    376 {
    377         struct prpl *ret = g_new0(struct prpl, 1);
    378         ret->name = "msn";
     377void msn_init(struct prpl *ret)
     378{
     379        ret->protocol = PROTO_MSN;
    379380        ret->login = msn_login;
    380381        ret->close = msn_close;
     
    399400        ret->cmp_buddynames = g_strcasecmp;
    400401
    401         register_protocol(ret);
    402 }
     402        my_protocol = ret;
     403}
  • protocols/nogaim.c

    rbf02a67 r11e090b  
    3939#include <iconv.h>
    4040
     41struct prpl *proto_prpl[PROTO_MAX];
     42char proto_name[PROTO_MAX][8] = { "TOC", "OSCAR", "YAHOO", "ICQ", "MSN", "", "", "", "JABBER", "", "", "", "", "", "", "" };
     43
    4144static char *proto_away_alias[7][5] =
    4245{
     
    5558GSList *connections;
    5659
    57 #ifdef WITH_PLUGINS
    58 gboolean load_plugin(char *path)
    59 {
    60         void (*init_function) (void);
    61        
    62         GModule *mod = g_module_open(path, G_MODULE_BIND_LAZY);
    63 
    64         if(!mod) {
    65                 log_message(LOGLVL_ERROR, "Can't find `%s', not loading", path);
    66                 return FALSE;
    67         }
    68 
    69         if(!g_module_symbol(mod,"init_plugin",(gpointer *) &init_function)) {
    70                 log_message(LOGLVL_WARNING, "Can't find function `init_plugin' in `%s'\n", path);
    71                 return FALSE;
    72         }
    73 
    74         init_function();
    75 
    76         return TRUE;
    77 }
    78 
    79 void load_plugins(void)
    80 {
    81         GDir *dir;
    82         GError *error = NULL;
    83 
    84         dir = g_dir_open(PLUGINDIR, 0, &error);
    85 
    86         if (dir) {
    87                 const gchar *entry;
    88                 char *path;
    89 
    90                 while ((entry = g_dir_read_name(dir))) {
    91                         path = g_build_filename(PLUGINDIR, entry, NULL);
    92                         if(!path) {
    93                                 log_message(LOGLVL_WARNING, "Can't build path for %s\n", entry);
    94                                 continue;
    95                         }
    96 
    97                         load_plugin(path);
    98 
    99                         g_free(path);
    100                 }
    101 
    102                 g_dir_close(dir);
    103         }
    104 }
     60
     61/* nogaim.c */
     62
     63void nogaim_init()
     64{
     65        proto_prpl[PROTO_MSN] = g_new0 ( struct prpl, 1 );
     66#ifdef WITH_MSN
     67        msn_init( proto_prpl[PROTO_MSN] );
    10568#endif
    10669
    107 /* nogaim.c */
    108 
    109 GList *protocols = NULL;
    110  
    111 void register_protocol (struct prpl *p)
    112 {
    113         protocols = g_list_append(protocols, p);
    114 }
    115 
    116  
    117 struct prpl *find_protocol(const char *name)
    118 {
    119         GList *gl;
    120         for (gl = protocols; gl; gl = gl->next)
    121         {
    122                 struct prpl *proto = gl->data;
    123                 if(!g_strcasecmp(proto->name, name))
    124                         return proto;
    125         }
    126         return NULL;
    127 }
    128 
    129 /* nogaim.c */
    130 void nogaim_init()
    131 {
    132         extern void msn_init();
    133         extern void oscar_init();
    134         extern void byahoo_init();
    135         extern void jabber_init();
    136 
    137 #ifdef WITH_MSN
    138         msn_init();
     70        proto_prpl[PROTO_OSCAR] = g_new0( struct prpl, 1 );
     71#ifdef WITH_OSCAR
     72        oscar_init( proto_prpl[PROTO_OSCAR] );
    13973#endif
    140 
    141 #ifdef WITH_OSCAR
    142         oscar_init();
     74       
     75        proto_prpl[PROTO_YAHOO] = g_new0( struct prpl, 1 );
     76#ifdef WITH_YAHOO
     77        byahoo_init( proto_prpl[PROTO_YAHOO] );
    14378#endif
    14479       
    145 #ifdef WITH_YAHOO
    146         byahoo_init();
    147 #endif
    148        
     80        proto_prpl[PROTO_JABBER] = g_new0( struct prpl, 1 );
    14981#ifdef WITH_JABBER
    150         jabber_init();
    151 #endif
    152 
    153 #ifdef WITH_PLUGINS
    154         load_plugins();
     82        jabber_init( proto_prpl[PROTO_JABBER] );
    15583#endif
    15684}
     
    244172        gc = g_new0( struct gaim_connection, 1 );
    245173       
    246         gc->prpl = user->prpl;
     174        gc->protocol = user->protocol;
     175        gc->prpl = proto_prpl[gc->protocol];
    247176        g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username );
    248177        g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password );
     
    325254        /* Try to find a different connection on the same protocol. */
    326255        for( a = gc->irc->accounts; a; a = a->next )
    327                 if( a->prpl == gc->prpl && a->gc != gc )
     256                if( proto_prpl[a->protocol] == gc->prpl && a->gc != gc )
    328257                        break;
    329258       
    330259        /* If we found one, add the screenname to the acc_id. */
    331260        if( a )
    332                 g_snprintf( acc_id, 32, "%s(%s)", gc->prpl->name, gc->username );
     261                g_snprintf( acc_id, 32, "%s(%s)", proto_name[gc->protocol], gc->username );
    333262        else
    334                 g_snprintf( acc_id, 32, "%s", gc->prpl->name );
     263                g_snprintf( acc_id, 32, "%s", proto_name[gc->protocol] );
    335264       
    336265        irc_usermsg( gc->irc, "%s - %s", acc_id, msg );
     
    366295        if( u && u->away ) proto_away( gc, u->away );
    367296       
    368         if( !strcmp(gc->prpl->name, "icq") )
     297        if( gc->protocol == PROTO_ICQ )
    369298        {
    370299                for( u = gc->irc->users; u; u = u->next )
     
    501430       
    502431        memset( nick, 0, MAX_NICK_LENGTH + 1 );
    503         strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) );
     432        strcpy( nick, nick_get( gc->irc, handle, gc->protocol, realname ) );
    504433       
    505434        u = user_add( gc->irc, nick );
     
    525454        else
    526455        {
    527                 u->host = g_strdup( gc->user->prpl->name );
     456                u->host = g_strdup( proto_name[gc->user->protocol] );
    528457                u->user = g_strdup( handle );
    529458        }
     
    654583        }
    655584       
    656         if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) )
     585        if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_OSCAR || gc->protocol == PROTO_TOC ) )
    657586        {
    658587                u->away = g_strdup( "Away" );
    659588        }
    660         else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) )
     589        else if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_JABBER ) )
    661590        {
    662591                if( type & UC_DND )
  • protocols/nogaim.h

    rbf02a67 r11e090b  
    7272        /* we need to do either oscar or TOC */
    7373        /* we make this as an int in case if we want to add more protocols later */
     74        int protocol;
    7475        struct prpl *prpl;
    7576        guint32 flags;
     
    151152        char user_info[2048];
    152153        int options;
    153         struct prpl *prpl;
     154        int protocol;
    154155        /* prpls can use this to save information about the user,
    155156         * like which server to connect to, etc */
     
    161162
    162163struct prpl {
     164        int protocol;
    163165        int options;
    164         const char *name;
     166        char *(* name)();
    165167
    166168        /* for ICQ and Yahoo, who have off/on per-conversation options */
     
    222224};
    223225
     226#define PROTO_TOC       0
     227#define PROTO_OSCAR     1
     228#define PROTO_YAHOO     2
     229#define PROTO_ICQ       3
     230#define PROTO_MSN       4
     231#define PROTO_IRC       5
     232#define PROTO_FTP       6
     233#define PROTO_VGATE     7
     234#define PROTO_JABBER    8
     235#define PROTO_NAPSTER   9
     236#define PROTO_ZEPHYR    10
     237#define PROTO_GADUGADU  11
     238#define PROTO_MAX       16
     239
     240extern char proto_name[PROTO_MAX][8];
     241
    224242#define UC_UNAVAILABLE  1
    225243
     
    231249
    232250G_MODULE_EXPORT GSList *get_connections();
    233 G_MODULE_EXPORT struct prpl *find_protocol(const char *name);
    234 G_MODULE_EXPORT void register_protocol(struct prpl *);
     251extern struct prpl *proto_prpl[16];
    235252
    236253/* nogaim.c */
     
    302319G_MODULE_EXPORT void info_string_append(GString *str, char *newline, char *name, char *value);
    303320
     321#ifdef WITH_MSN
     322/* msn.c */
     323G_MODULE_EXPORT void msn_init( struct prpl *ret );
     324#endif
     325
     326#ifdef WITH_OSCAR
     327/* oscar.c */
     328G_MODULE_EXPORT void oscar_init( struct prpl *ret );
     329#endif
     330
     331#ifdef WITH_JABBER
     332/* jabber.c */
     333G_MODULE_EXPORT void jabber_init( struct prpl *ret );
     334#endif
     335
     336#ifdef WITH_YAHOO
     337/* yahoo.c */
     338G_MODULE_EXPORT void byahoo_init( struct prpl *ret );
     339#endif
     340
    304341/* prefs.c */
    305342G_MODULE_EXPORT void build_block_list();
  • protocols/oscar/oscar.c

    rbf02a67 r11e090b  
    357357                odata->icq = TRUE;
    358358                /* this is odd but it's necessary for a proper do_import and do_export */
     359                gc->protocol = PROTO_ICQ;
    359360                gc->password[8] = 0;
    360361        } else {
     362                gc->protocol = PROTO_TOC;
    361363                gc->flags |= OPT_CONN_HTML;
    362364        }
     
    26312633}
    26322634
    2633 void oscar_init()
    2634 {
    2635         struct prpl *ret = g_new0(struct prpl, 1);
    2636         ret->name = "oscar";
     2635static struct prpl *my_protocol = NULL;
     2636
     2637void oscar_init(struct prpl *ret) {
     2638        ret->protocol = PROTO_OSCAR;
    26372639        ret->away_states = oscar_away_states;
    26382640        ret->login = oscar_login;
     
    26562658        ret->cmp_buddynames = aim_sncmp;
    26572659        ret->get_status_string = oscar_get_status_string;
     2660
    26582661        ret->send_typing = oscar_send_typing;
    26592662
    2660         register_protocol(ret);
    2661 }
     2663        my_protocol = ret;
     2664}
  • protocols/yahoo/yahoo.c

    rbf02a67 r11e090b  
    6464};
    6565
     66static char *yahoo_name()
     67{
     68        return "Yahoo";
     69}
     70
     71static struct prpl *my_protocol = NULL;
    6672static GSList *byahoo_inputs = NULL;
    6773static int byahoo_chat_id = 0;
     
    390396}
    391397
    392 void byahoo_init( )
    393 {
    394         struct prpl *ret = g_new0(struct prpl, 1);
    395         ret->name = "yahoo";
     398void byahoo_init( struct prpl *ret )
     399{
     400        ret->protocol = PROTO_YAHOO;
     401        ret->name = yahoo_name;
    396402       
    397403        ret->login = byahoo_login;
    398404        ret->close = byahoo_close;
    399405        ret->send_im = byahoo_send_im;
     406        ret->send_typing = byahoo_send_typing;
    400407        ret->get_info = byahoo_get_info;
    401408        ret->away_states = byahoo_away_states;
     
    405412        ret->remove_buddy = byahoo_remove_buddy;
    406413        ret->get_status_string = byahoo_get_status_string;
    407         ret->send_typing = byahoo_send_typing;
    408414       
    409415        ret->chat_send = byahoo_chat_send;
     
    413419        ret->cmp_buddynames = g_strcasecmp;
    414420       
    415         register_protocol(ret);
     421        my_protocol = ret;
    416422}
    417423
     
    427433                yd = gc->proto_data;
    428434               
    429                 if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id )
     435                if( gc->protocol == PROTO_YAHOO && yd->y2_id == id )
    430436                        return( gc );
    431437        }
  • storage_text.c

    rbf02a67 r11e090b  
    2727#include "bitlbee.h"
    2828#include "crypting.h"
    29 
    30 /* DO NOT USE THIS FUNCTION IN NEW CODE. This
    31  * function is here merely because the save/load code still uses
    32  * ids rather than names */
    33 static struct prpl *find_protocol_by_id(int id)
    34 {
    35         switch (id) {
    36         case 1: return find_protocol("oscar");
    37         case 4: return find_protocol("msn");
    38         case 2: return find_protocol("yahoo");
    39         case 8: return find_protocol("jabber");
    40         default: break;
    41         }
    42         return NULL;
    43 }
    44 
    45 static int find_protocol_id(const char *name)
    46 {
    47         if (!strcmp(name, "oscar")) return 1;
    48         if (!strcmp(name, "msn")) return 4;
    49         if (!strcmp(name, "yahoo")) return 2;
    50         if (!strcmp(name, "jabber")) return 8;
    51 
    52         return -1;
    53 }
    54 
    5529
    5630static void text_init (void)
     
    10579        while( fscanf( fp, "%s %d %s", s, &proto, nick ) > 0 )
    10680        {
    107                 struct prpl *prpl;
    108 
    109                 prpl = find_protocol_by_id(proto);
    110 
    111                 if (!prpl)
    112                         continue;
    113 
    11481                http_decode( s );
    115                 nick_set( irc, s, prpl, nick );
     82                nick_set( irc, s, proto, nick );
    11683        }
    11784        fclose( fp );
     
    178145                s[169] = 0; /* Prevent any overflow (169 ~ 512 / 3) */
    179146                http_encode( s );
    180                 g_snprintf( s + strlen( s ), 510 - strlen( s ), " %d %s", find_protocol_id(n->proto->name), n->nick );
     147                g_snprintf( s + strlen( s ), 510 - strlen( s ), " %d %s", n->proto, n->nick );
    181148                if( fprintf( fp, "%s\n", s ) != strlen( s ) + 1 )
    182149                {
     
    220187        for( a = irc->accounts; a; a = a->next )
    221188        {
    222                 if( !strcmp(a->prpl->name, "oscar") )
     189                if( a->protocol == PROTO_OSCAR || a->protocol == PROTO_ICQ || a->protocol == PROTO_TOC )
    223190                        g_snprintf( s, sizeof( s ), "account add oscar \"%s\" \"%s\" %s", a->user, a->pass, a->server );
    224191                else
    225192                        g_snprintf( s, sizeof( s ), "account add %s \"%s\" \"%s\" \"%s\"",
    226                                     a->prpl->name, a->user, a->pass, a->server ? a->server : "" );
     193                                    proto_name[a->protocol], a->user, a->pass, a->server ? a->server : "" );
    227194               
    228195                line = obfucrypt( s, irc->password );
  • unix.c

    rbf02a67 r11e090b  
    4747       
    4848        log_init( );
    49 
    50         nogaim_init();
    51 
     49        nogaim_init( );
     50       
    5251        CONF_FILE = g_strdup( CONF_FILE_DEF );
    5352       
  • url.h

    rbf02a67 r11e090b  
    2626#include "bitlbee.h"
    2727
    28 #define PROTO_FTP               1
    29 #define PROTO_HTTP              2
     28#define PROTO_HTTP      2
    3029#define PROTO_SOCKS4    3
    3130#define PROTO_SOCKS5    4
Note: See TracChangeset for help on using the changeset viewer.