Changes in / [b135438:c1ede6e8]


Ignore:
Files:
1 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • account.c

    rb135438 rc1ede6e8  
    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 (a->prpl == NULL )
     126        if( proto_prpl[a->protocol]->login == NULL )
    127127        {
    128                 irc_usermsg( irc, "Support for protocol %s is not included in this BitlBee", a->prpl->name );
     128                irc_usermsg( irc, "Support for protocol %s is not included in this BitlBee", proto_name[a->protocol] );
    129129                return;
    130130        }
     
    134134        u = g_new0 ( struct aim_user, 1 );
    135135        u->irc = irc;
    136         u->prpl = a->prpl;
     136        u->protocol = a->protocol;
    137137        strncpy( u->username, a->user, sizeof( u->username ) - 1 );
    138138        strncpy( u->password, a->pass, sizeof( u->password ) - 1 );
     
    142142        a->reconnect = 0;
    143143       
    144         a->prpl->login( u );
     144        proto_prpl[a->protocol]->login( u );
    145145}
    146146
  • account.h

    rb135438 rc1ede6e8  
    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 );
  • bitlbee.c

    rb135438 rc1ede6e8  
    236236}
    237237
    238 /* DO NOT USE THIS FUNCTION IN NEW CODE. This
    239  * function is here merely because the save/load code still uses
    240  * ids rather then names */
    241 struct prpl *find_protocol_by_id(int id)
    242 {
    243         switch (id) {
    244         case 1: return find_protocol("oscar");
    245         case 4: return find_protocol("msn");
    246         case 2: return find_protocol("yahoo");
    247         case 8: return find_protocol("jabber");
    248         default: break;
    249         }
    250         return NULL;
    251 }
    252 
    253238int bitlbee_load( irc_t *irc, char* password )
    254239{
    255240        char s[512];
    256241        char *line;
    257         char proto[20];
     242        int proto;
    258243        char nick[MAX_NICK_LENGTH+1];
    259244        FILE *fp;
     
    290275        fp = fopen( s, "r" );
    291276        if( !fp ) return( 0 );
    292         while( fscanf( fp, "%s %s %s", s, proto, nick ) > 0 )
    293         {
    294                 struct prpl *prpl;
    295 
    296                 prpl = find_protocol(proto);
    297 
    298                 /* Older files saved the protocol number rather then the protocol name */
    299                 if (!prpl && atoi(proto)) {
    300                         prpl = find_protocol_by_id(atoi(proto));
    301                 }
    302 
    303                 if (!prpl)
    304                         continue;
    305 
     277        while( fscanf( fp, "%s %d %s", s, &proto, nick ) > 0 )
     278        {
    306279                http_decode( s );
    307                 nick_set( irc, s, prpl, nick );
     280                nick_set( irc, s, proto, nick );
    308281        }
    309282        fclose( fp );
     
    360333                s[169] = 0; /* Prevent any overflow (169 ~ 512 / 3) */
    361334                http_encode( s );
    362                 g_snprintf( s + strlen( s ), 510 - strlen( s ), " %s %s", n->proto->name, n->nick );
     335                g_snprintf( s + strlen( s ), 510 - strlen( s ), " %d %s", n->proto, n->nick );
    363336                if( fprintf( fp, "%s\n", s ) != strlen( s ) + 1 )
    364337                {
     
    402375        for( a = irc->accounts; a; a = a->next )
    403376        {
    404                 if( !strcmp( a->prpl->name, "oscar" ) )
     377                if( a->protocol == PROTO_OSCAR || a->protocol == PROTO_ICQ || a->protocol == PROTO_TOC )
    405378                        g_snprintf( s, sizeof( s ), "account add oscar \"%s\" \"%s\" %s", a->user, a->pass, a->server );
    406379                else
    407380                        g_snprintf( s, sizeof( s ), "account add %s \"%s\" \"%s\" \"%s\"",
    408                                     a->prpl->name, a->user, a->pass, a->server ? a->server : "" );
     381                                    proto_name[a->protocol], a->user, a->pass, a->server ? a->server : "" );
    409382               
    410383                line = obfucrypt( irc, s );
  • commands.c

    rb135438 rc1ede6e8  
    184184        if( g_strcasecmp( cmd[1], "add" ) == 0 )
    185185        {
    186                 struct prpl *prpl;
     186                int prot;
    187187               
    188188                if( cmd[2] == NULL || cmd[3] == NULL || cmd[4] == NULL )
     
    192192                }
    193193               
    194                 prpl = find_protocol(cmd[2]);
    195                
    196                 if( prpl == NULL )
     194                for( prot = 0; prot < PROTO_MAX; prot ++ )
     195                        if( proto_name[prot] && *proto_name[prot] && g_strcasecmp( proto_name[prot], cmd[2] ) == 0 )
     196                                break;
     197               
     198                if( ( prot == PROTO_MAX ) || ( proto_prpl[prot] == NULL ) )
    197199                {
    198200                        irc_usermsg( irc, "Unknown protocol" );
     
    200202                }
    201203
    202                 a = account_add( irc, prpl, cmd[3], cmd[4] );
     204                if( prot == PROTO_OSCAR && cmd[5] == NULL )
     205                {
     206                        irc_usermsg( irc, "Not enough parameters" );
     207                        return( 0 );
     208                }
     209               
     210                a = account_add( irc, prot, cmd[3], cmd[4] );
    203211               
    204212                if( cmd[5] )
     
    244252                                con = "";
    245253                       
    246                         irc_usermsg( irc, "%2d. %s, %s%s", i, a->prpl->name, a->user, con );
     254                        if( a->protocol == PROTO_OSCAR || a->protocol == PROTO_ICQ || a->protocol == PROTO_TOC )
     255                                irc_usermsg( irc, "%2d. OSCAR, %s on %s%s", i, a->user, a->server, con );
     256                        else
     257                                irc_usermsg( irc, "%2d. %s, %s%s", i, proto_name[a->protocol], a->user, con );
    247258                       
    248259                        i ++;
     
    361372                else
    362373                {
    363                         nick_set( irc, cmd[2], a->gc->prpl, cmd[3] );
     374                        nick_set( irc, cmd[2], a->gc->protocol, cmd[3] );
    364375                }
    365376        }
     
    442453        else if( u->send_handler == buddy_send_handler )
    443454        {
    444                 nick_set( irc, u->handle, u->gc->prpl, cmd[2] );
     455                nick_set( irc, u->handle, u->gc->protocol, cmd[2] );
    445456        }
    446457       
     
    653664        if( online == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && !u->away )
    654665        {
    655                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     666                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    656667                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Online" );
    657668                n_online ++;
     
    660671        if( away == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && u->away )
    661672        {
    662                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     673                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    663674                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, u->away );
    664675                n_away ++;
     
    667678        if( offline == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && !u->online )
    668679        {
    669                 g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name );
     680                g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, proto_name[u->gc->user->protocol] );
    670681                irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Offline" );
    671682                n_offline ++;
     
    773784        for( n = gc->irc->nicks; n; n = n->next )
    774785        {
    775                 if( n->proto == gc->prpl && !user_findhandle( gc, n->handle ) )
     786                if( n->proto == gc->protocol && !user_findhandle( gc, n->handle ) )
    776787                {
    777788                        gc->prpl->add_buddy( gc, n->handle );
  • configure

    rb135438 rc1ede6e8  
    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
     
    7573datadir=`eval echo "$datadir/" | sed 's/\/\{1,\}/\//g'`
    7674config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'`
    77 plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
    7875
    7976cat<<EOF>Makefile.settings
     
    8481MANDIR=$mandir
    8582DATADIR=$datadir
    86 PLUGINDIR=$plugindir
    8783CONFIG=$config
    8884
     
    105101#define ETCDIR "$etcdir"
    106102#define VARDIR "$datadir"
    107 #define PLUGINDIR "$plugindir"
    108103#define ARCH "$arch"
    109104#define CPU "$cpu"
     
    146141if type pkg-config > /dev/null 2>/dev/null && pkg-config glib-2.0; then
    147142        cat<<EOF>>Makefile.settings
    148 EFLAGS+=`pkg-config --libs glib-2.0 gmodule-2.0`
    149 CFLAGS+=`pkg-config --cflags glib-2.0 gmodule-2.0`
     143EFLAGS+=`pkg-config --libs glib-2.0`
     144CFLAGS+=`pkg-config --cflags glib-2.0`
    150145EOF
    151146        echo '#define GLIB2' >> config.h
  • irc.c

    rb135438 rc1ede6e8  
    11531153                if( u->gc )
    11541154                        irc_reply( irc, 312, "%s %s.%s :%s network", u->nick, u->gc->user->username,
    1155                                    *u->gc->user->proto_opt[0] ? u->gc->user->proto_opt[0] : "", u->gc->prpl->name );
     1155                                   *u->gc->user->proto_opt[0] ? u->gc->user->proto_opt[0] : "", proto_name[u->gc->user->protocol] );
    11561156                else
    11571157                        irc_reply( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO );
  • nick.c

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

    rb135438 rc1ede6e8  
    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, char *handle, struct prpl *proto, char *nick );
    35 char *nick_get( irc_t *irc, char *handle, struct prpl *proto, const char *realname );
     34void nick_set( irc_t *irc, char *handle, int proto, char *nick );
     35char *nick_get( irc_t *irc, char *handle, int proto, const char *realname );
    3636void nick_del( irc_t *irc, char *nick );
    3737void nick_strip( char *nick );
  • protocols/jabber/jabber.c

    rb135438 rc1ede6e8  
    157157#define JCS_CLOSED  3   /* closed */
    158158
     159
     160static char *jabber_name()
     161{
     162        return "Jabber";
     163}
    159164
    160165#define STATE_EVT(arg) if(gjc->on_state) { (gjc->on_state)(gjc, (arg) ); }
     
    24082413}
    24092414
    2410 
    2411 void jabber_init()
    2412 {
    2413         struct prpl *ret = g_new0(struct prpl, 1);
    2414 
     2415static struct prpl *my_protocol = NULL;
     2416
     2417void jabber_init(struct prpl *ret)
     2418{
    24152419        /* the NULL's aren't required but they're nice to have */
    2416         ret->name = "jabber";
     2420        ret->protocol = PROTO_JABBER;
     2421        ret->name = jabber_name;
    24172422        ret->away_states = jabber_away_states;
    24182423        ret->actions = jabber_actions;
     
    24372442        ret->group_buddy = jabber_group_change;
    24382443
    2439         register_protocol (ret);
    2440 }
     2444        my_protocol = ret;
     2445}
  • protocols/msn/msn.c

    rb135438 rc1ede6e8  
    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;
     
    398399        ret->send_typing = msn_send_typing;
    399400
    400         register_protocol(ret);
    401 }
     401        my_protocol = ret;
     402}
  • protocols/nogaim.c

    rb135438 rc1ede6e8  
    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 gboolean load_plugin(char *path)
    58 {
    59         void (*init_function) (void);
    60        
    61         GModule *mod = g_module_open(path, G_MODULE_BIND_LAZY);
    62 
    63         if(!mod) {
    64                 log_message(LOGLVL_ERROR, "Can't find `%s', not loading", path);
    65                 return FALSE;
    66         }
    67 
    68         if(!g_module_symbol(mod,"init_plugin",(gpointer *) &init_function)) {
    69                 log_message(LOGLVL_WARNING, "Can't find function `init_plugin' in `%s'\n", path);
    70                 return FALSE;
    71         }
    72 
    73         init_function();
    74 
    75         return TRUE;
    76 }
    7760
    7861/* nogaim.c */
    7962
    80 GList *protocols = NULL;
    81  
    82 void register_protocol (struct prpl *p)
    83 {
    84         protocols = g_list_append(protocols, p);
    85 }
    86 
    87  
    88 struct prpl *find_protocol(const char *name)
    89 {
    90         GList *gl;
    91         for (gl = protocols; gl; gl = gl->next)
    92         {
    93                 struct prpl *proto = gl->data;
    94                 if(!g_strcasecmp(proto->name, name))
    95                         return proto;
    96         }
    97         return NULL;
    98 }
    99 
    100 /* nogaim.c */
    10163void nogaim_init()
    10264{
    103         GDir *dir;
    104         GError *error = NULL;
    105 
     65        proto_prpl[PROTO_MSN] = g_new0 ( struct prpl, 1 );
    10666#ifdef WITH_MSN
    107         extern void msn_init();
    108         msn_init();
     67        msn_init( proto_prpl[PROTO_MSN] );
    10968#endif
    11069
     70        proto_prpl[PROTO_OSCAR] = g_new0( struct prpl, 1 );
    11171#ifdef WITH_OSCAR
    112         extern void oscar_init();
    113         oscar_init();
     72        oscar_init( proto_prpl[PROTO_OSCAR] );
    11473#endif
    11574       
     75        proto_prpl[PROTO_YAHOO] = g_new0( struct prpl, 1 );
    11676#ifdef WITH_YAHOO
    117         extern void byahoo_init();
    118         byahoo_init();
     77        byahoo_init( proto_prpl[PROTO_YAHOO] );
    11978#endif
    12079       
     80        proto_prpl[PROTO_JABBER] = g_new0( struct prpl, 1 );
    12181#ifdef WITH_JABBER
    122         extern void jabber_init();
    123         jabber_init();
     82        jabber_init( proto_prpl[PROTO_JABBER] );
    12483#endif
    125 
    126         dir = g_dir_open(PLUGINDIR, 0, &error);
    127 
    128         if (dir) {
    129                 const gchar *entry;
    130                 char *path;
    131 
    132                 while ((entry = g_dir_read_name(dir))) {
    133                         path = g_build_filename(PLUGINDIR, entry, NULL);
    134                         if(!path) {
    135                                 log_message(LOGLVL_WARNING, "Can't build path for %s\n", entry);
    136                                 continue;
    137                         }
    138 
    139                         load_plugin(path);
    140 
    141                         g_free(path);
    142                 }
    143 
    144                 g_dir_close(dir);
    145         }
    14684}
    14785
     
    184122                        gc->prpl->set_away( gc, s, away );
    185123                        if( set_getint( gc->irc, "debug" ) )
    186                                 irc_usermsg( gc->irc, "Setting away state for %s to %s", gc->prpl->name, s );
     124                                irc_usermsg( gc->irc, "Setting away state for %s to %s", proto_name[gc->protocol], s );
    187125                }
    188126                else
     
    230168   way for now because I don't want to touch the Gaim code too much since
    231169   it's not going to be here for too long anymore. */
    232 int handle_cmp( char *a, char *b, struct prpl *protocol )
    233 {
    234         if( !strcmp(protocol->name, "oscar") )
     170int handle_cmp( char *a, char *b, int protocol )
     171{
     172        if( protocol == PROTO_TOC || protocol == PROTO_ICQ )
    235173        {
    236174                /* AIM, being teh evil, thinks it's cool that users can put
     
    272210        gc = g_new0( struct gaim_connection, 1 );
    273211       
    274         gc->prpl = user->prpl;
     212        gc->protocol = user->protocol;
     213        gc->prpl = proto_prpl[gc->protocol];
    275214        g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username );
    276215        g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password );
     
    315254void set_login_progress( struct gaim_connection *gc, int step, char *msg )
    316255{
    317         irc_usermsg( gc->irc, "%s(%s) - Logging in: %s", gc->prpl->name, gc->username, msg );
     256        irc_usermsg( gc->irc, "%s(%s) - Logging in: %s", proto_name[gc->protocol], gc->username, msg );
    318257}
    319258
     
    321260void hide_login_progress( struct gaim_connection *gc, char *msg )
    322261{
    323         irc_usermsg( gc->irc, "%s(%s) - Login error: %s", gc->prpl->name, gc->username, msg );
     262        irc_usermsg( gc->irc, "%s(%s) - Login error: %s", proto_name[gc->protocol], gc->username, msg );
    324263}
    325264
     
    327266void hide_login_progress_error( struct gaim_connection *gc, char *msg )
    328267{
    329         irc_usermsg( gc->irc, "%s(%s) - Logged out: %s", gc->prpl->name, gc->username, msg );
     268        irc_usermsg( gc->irc, "%s(%s) - Logged out: %s", proto_name[gc->protocol], gc->username, msg );
    330269}
    331270
     
    350289                strip_html( msg );
    351290       
    352         irc_usermsg( gc->irc, "%s(%s) - %s", gc->prpl->name, gc->username, msg );
     291        irc_usermsg( gc->irc, "%s(%s) - %s", proto_name[gc->protocol], gc->username, msg );
    353292}
    354293
     
    375314        u = user_find( gc->irc, gc->irc->nick );
    376315       
    377         irc_usermsg( gc->irc, "%s(%s) - Logged in", gc->prpl->name, gc->username );
     316        irc_usermsg( gc->irc, "%s(%s) - Logged in", proto_name[gc->protocol], gc->username );
    378317       
    379318        gc->keepalive = g_timeout_add( 60000, send_keepalive, gc );
     
    382321        if( u && u->away ) proto_away( gc, u->away );
    383322       
    384         if( !strcmp(gc->prpl->name, "icq") )
     323        if( gc->protocol == PROTO_ICQ )
    385324        {
    386325                for( u = gc->irc->users; u; u = u->next )
     
    422361        account_t *a;
    423362       
    424         irc_usermsg( gc->irc, "%s(%s) - Signing off..", gc->prpl->name, gc->username );
     363        irc_usermsg( gc->irc, "%s(%s) - Signing off..", proto_name[gc->protocol], gc->username );
    425364
    426365        gaim_input_remove( gc->keepalive );
     
    454393        {
    455394                int delay = set_getint( irc, "auto_reconnect_delay" );
    456                 irc_usermsg( gc->irc, "%s(%s) - Reconnecting in %d seconds..", gc->prpl->name, gc->username, delay);
     395                irc_usermsg( gc->irc, "%s(%s) - Reconnecting in %d seconds..", proto_name[gc->protocol], gc->username, delay);
    457396               
    458397                a->reconnect = 1;
     
    468407void do_error_dialog( struct gaim_connection *gc, char *msg, char *title )
    469408{
    470         irc_usermsg( gc->irc, "%s(%s) - Error: %s", gc->prpl->name, gc->username, msg );
     409        irc_usermsg( gc->irc, "%s(%s) - Error: %s", proto_name[gc->protocol], gc->username, msg );
    471410}
    472411
     
    510449       
    511450        memset( nick, 0, MAX_NICK_LENGTH + 1 );
    512         strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) );
     451        strcpy( nick, nick_get( gc->irc, handle, gc->protocol, realname ) );
    513452       
    514453        u = user_add( gc->irc, nick );
     
    534473        else
    535474        {
    536                 u->host = g_strdup( gc->user->prpl->name );
     475                u->host = g_strdup( proto_name[gc->user->protocol] );
    537476                u->user = g_strdup( handle );
    538477        }
     
    628567                        if( set_getint( gc->irc, "debug" ) || g_strcasecmp( set_getstr( gc->irc, "handle_unknown" ), "ignore" ) != 0 )
    629568                        {
    630                                 irc_usermsg( gc->irc, "serv_got_update() for handle %s on connection %s(%s):", handle, gc->prpl->name, gc->username );
     569                                irc_usermsg( gc->irc, "serv_got_update() for handle %s on connection %s(%s):", handle, proto_name[gc->protocol], gc->username );
    631570                                irc_usermsg( gc->irc, "loggedin = %d, type = %d", loggedin, type );
    632571                        }
     
    663602        }
    664603       
    665         if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) )
     604        if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_OSCAR || gc->protocol == PROTO_TOC ) )
    666605        {
    667606                u->away = g_strdup( "Away" );
    668607        }
    669         else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) )
     608        else if( ( type & UC_UNAVAILABLE ) && ( gc->protocol == PROTO_JABBER ) )
    670609        {
    671610                if( type & UC_DND )
     
    709648                {
    710649                        if( set_getint( irc, "debug" ) )
    711                                 irc_usermsg( irc, "Ignoring message from unknown handle %s on connection %s(%s)", handle, gc->prpl->name, gc->username );
     650                                irc_usermsg( irc, "Ignoring message from unknown handle %s on connection %s(%s)", handle, proto_name[gc->protocol], gc->username );
    712651                       
    713652                        return;
     
    731670                else
    732671                {
    733                         irc_usermsg( irc, "Message from unknown handle %s on connection %s(%s):", handle, gc->prpl->name, gc->username );
     672                        irc_usermsg( irc, "Message from unknown handle %s on connection %s(%s):", handle, proto_name[gc->protocol], gc->username );
    734673                        u = user_find( irc, irc->mynick );
    735674                }
     
    897836       
    898837        /* It might be yourself! */
    899         if( handle_cmp ( handle, b->gc->user->username, b->gc->prpl ) == 0 )
     838        if( handle_cmp ( handle, b->gc->user->username, b->gc->protocol ) == 0 )
    900839        {
    901840                u = user_find( b->gc->irc, b->gc->irc->nick );
  • protocols/nogaim.h

    rb135438 rc1ede6e8  
    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 */
     
    160161};
    161162
    162 struct ft
    163 {
    164         const char *filename;
    165        
    166         /* Total number of bytes in file */
    167         size_t total_bytes;
    168        
    169         /* Current number of bytes received */
    170         size_t cur_bytes;
    171 };
    172 
    173 struct ft_request
    174 {
    175         const char *filename;
    176         struct gaim_connection *gc;
    177 };
    178 
    179 typedef void (*ft_recv_handler) (struct ft *, void *data, size_t len);
    180 
    181163struct prpl {
     164        int protocol;
    182165        int options;
    183         const char *name;
     166        char *(* name)();
    184167
    185168        /* for ICQ and Yahoo, who have off/on per-conversation options */
     
    234217        void (* group_buddy)    (struct gaim_connection *, char *who, char *old_group, char *new_group);
    235218
    236         /* file transfers */
    237         struct ft_send_req *(* req_send_file) (struct gaim_connection *, const char *file);
    238         void (* send_file_part) (struct gaim_connection *, struct ft*, void *data, size_t length);
    239         void (* accept_recv_file) (struct gaim_connection *, struct ft*, ft_recv_handler);
    240 
    241219        void (* buddy_free)     (struct buddy *);
    242220
    243221        char *(* get_status_string) (struct gaim_connection *gc, int stat);
    244222};
     223
     224#define PROTO_TOC       0
     225#define PROTO_OSCAR     1
     226#define PROTO_YAHOO     2
     227#define PROTO_ICQ       3
     228#define PROTO_MSN       4
     229#define PROTO_IRC       5
     230#define PROTO_FTP       6
     231#define PROTO_VGATE     7
     232#define PROTO_JABBER    8
     233#define PROTO_NAPSTER   9
     234#define PROTO_ZEPHYR    10
     235#define PROTO_GADUGADU  11
     236#define PROTO_MAX       16
     237
     238extern char proto_name[PROTO_MAX][8];
    245239
    246240#define UC_UNAVAILABLE  1
     
    253247
    254248G_MODULE_EXPORT GSList *get_connections();
    255 G_MODULE_EXPORT struct prpl *find_protocol(const char *name);
    256 G_MODULE_EXPORT void register_protocol(struct prpl *);
     249extern struct prpl *proto_prpl[16];
    257250
    258251/* nogaim.c */
     
    266259int proto_away( struct gaim_connection *gc, char *away );
    267260char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value );
    268 int handle_cmp( char *a, char *b, struct prpl *protocol );
     261int handle_cmp( char *a, char *b, int protocol );
    269262
    270263gboolean auto_reconnect( gpointer data );
     
    325318G_MODULE_EXPORT void info_string_append(GString *str, char *newline, char *name, char *value);
    326319
    327 /* file transfers */
    328 G_MODULE_EXPORT void ft_progress( struct ft *, int);
    329 G_MODULE_EXPORT void ft_incoming( struct ft_request * );
    330 G_MODULE_EXPORT void ft_accepted( struct ft_request *, struct ft *);
    331 G_MODULE_EXPORT void ft_denied( struct ft_request *, const char *reason);
     320#ifdef WITH_MSN
     321/* msn.c */
     322G_MODULE_EXPORT void msn_init( struct prpl *ret );
     323#endif
     324
     325#ifdef WITH_OSCAR
     326/* oscar.c */
     327G_MODULE_EXPORT void oscar_init( struct prpl *ret );
     328#endif
     329
     330#ifdef WITH_JABBER
     331/* jabber.c */
     332G_MODULE_EXPORT void jabber_init( struct prpl *ret );
     333#endif
     334
     335#ifdef WITH_YAHOO
     336/* yahoo.c */
     337G_MODULE_EXPORT void byahoo_init( struct prpl *ret );
     338#endif
    332339
    333340/* prefs.c */
  • protocols/oscar/oscar.c

    rb135438 rc1ede6e8  
    364364                odata->icq = TRUE;
    365365                /* this is odd but it's necessary for a proper do_import and do_export */
     366                gc->protocol = PROTO_ICQ;
    366367                gc->password[8] = 0;
    367368        } else {
     369                gc->protocol = PROTO_TOC;
    368370                gc->flags |= OPT_CONN_HTML;
    369371        }
     
    24652467}
    24662468
    2467 void oscar_init()
    2468 {
    2469         struct prpl *ret = g_new0(struct prpl, 1);
    2470         ret->name = "oscar";
     2469static struct prpl *my_protocol = NULL;
     2470
     2471void oscar_init(struct prpl *ret) {
     2472        ret->protocol = PROTO_OSCAR;
    24712473        ret->away_states = oscar_away_states;
    24722474        ret->login = oscar_login;
     
    24862488        ret->get_status_string = oscar_get_status_string;
    24872489
    2488         register_protocol(ret);
    2489 }
     2490        my_protocol = ret;
     2491}
  • protocols/proxy.c

    rb135438 rc1ede6e8  
    5050#define GAIM_ERR_COND   (G_IO_HUP | G_IO_ERR | G_IO_NVAL)
    5151
     52/*FIXME*               
     53        #ifndef _WIN32
     54                if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
     55                        closesocket(fd);
     56                        g_free(phb);
     57                        return -1;
     58                }
     59                fcntl(fd, F_SETFL, 0);
     60#endif*/
     61
    5262char proxyhost[128] = "";
    5363int proxyport = 0;
  • protocols/yahoo/yahoo.c

    rb135438 rc1ede6e8  
    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;
     
    412418        ret->chat_open = byahoo_chat_open;
    413419       
    414         register_protocol(ret);
     420        my_protocol = ret;
    415421}
    416422
     
    426432                yd = gc->proto_data;
    427433               
    428                 if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id )
     434                if( gc->protocol == PROTO_YAHOO && yd->y2_id == id )
    429435                        return( gc );
    430436        }
  • query.c

    rb135438 rc1ede6e8  
    149149{
    150150        if( q->gc )
    151                 irc_usermsg( irc, "Question on %s connection (handle %s):", q->gc->prpl->name, q->gc->username );
     151                irc_usermsg( irc, "Question on %s connection (handle %s):", proto_name[q->gc->protocol], q->gc->username );
    152152        else
    153153                irc_usermsg( irc, "Question:" );
  • unix.c

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

    rb135438 rc1ede6e8  
    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
  • user.c

    rb135438 rc1ede6e8  
    146146        while( u )
    147147        {
    148                 if( u->gc == gc && u->handle && handle_cmp( u->handle, handle, gc->prpl) == 0 )
     148                if( u->gc == gc && u->handle && handle_cmp( u->handle, handle, gc->protocol ) == 0 )
    149149                        break;
    150150                u = u->next;
Note: See TracChangeset for help on using the changeset viewer.