Changeset 0a3c243 for protocols


Ignore:
Timestamp:
2006-06-30T23:18:56Z (16 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
5100caa
Parents:
5c9512f
Message:

Got rid of struct aim_user (now using account_t everywhere). Needs some more
testing though.

Location:
protocols
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/jabber.c

    r5c9512f r0a3c243  
    561561static void gjab_start(gjconn gjc)
    562562{
    563         struct aim_user *user;
     563        account_t *acc;
    564564        int port = -1, ssl = 0;
    565565        char *server = NULL, *s;
     
    568568                return;
    569569
    570         user = GJ_GC(gjc)->user;
    571         if (*user->proto_opt[0]) {
     570        acc = GJ_GC(gjc)->acc;
     571        if (acc->server) {
    572572                /* If there's a dot, assume there's a hostname in the beginning */
    573                 if (strchr(user->proto_opt[0], '.')) {
    574                         server = g_strdup(user->proto_opt[0]);
     573                if (strchr(acc->server, '.')) {
     574                        server = g_strdup(acc->server);
    575575                        if ((s = strchr(server, ':')))
    576576                                *s = 0;
     
    578578               
    579579                /* After the hostname, there can be a port number */
    580                 s = strchr(user->proto_opt[0], ':');
     580                s = strchr(acc->server, ':');
    581581                if (s && isdigit(s[1]))
    582582                        sscanf(s + 1, "%d", &port);
    583583               
    584584                /* And if there's the string ssl, the user wants an SSL-connection */
    585                 if (strstr(user->proto_opt[0], ":ssl") || g_strcasecmp(user->proto_opt[0], "ssl") == 0)
     585                if (strstr(acc->server, ":ssl") || g_strcasecmp(acc->server, "ssl") == 0)
    586586                        ssl = 1;
    587587        }
     
    616616        g_free(server);
    617617       
    618         if (!user->gc || (gjc->fd < 0)) {
     618        if (!acc->gc || (gjc->fd < 0)) {
    619619                STATE_EVT(JCONN_STATE_OFF)
    620620                return;
     
    15161516}
    15171517
    1518 static void jabber_login(struct aim_user *user)
    1519 {
    1520         struct gaim_connection *gc = new_gaim_conn(user);
     1518static void jabber_login(account_t *acc)
     1519{
     1520        struct gaim_connection *gc = new_gaim_conn(acc);
    15211521        struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1);
    1522         char *loginname = create_valid_jid(user->username, DEFAULT_SERVER, "BitlBee");
     1522        char *loginname = create_valid_jid(acc->user, DEFAULT_SERVER, "BitlBee");
    15231523
    15241524        jd->hash = g_hash_table_new(g_str_hash, g_str_equal);
     
    15271527        set_login_progress(gc, 1, _("Connecting"));
    15281528
    1529         if (!(jd->gjc = gjab_new(loginname, user->password, gc))) {
     1529        if (!(jd->gjc = gjab_new(loginname, acc->pass, gc))) {
    15301530                g_free(loginname);
    15311531                hide_login_progress(gc, _("Unable to connect"));
  • protocols/msn/msn.c

    r5c9512f r0a3c243  
    2727#include "msn.h"
    2828
    29 static void msn_login( struct aim_user *acct )
    30 {
    31         struct gaim_connection *gc = new_gaim_conn( acct );
     29static void msn_login( account_t *acc )
     30{
     31        struct gaim_connection *gc = new_gaim_conn( acc );
    3232        struct msn_data *md = g_new0( struct msn_data, 1 );
    3333       
     
    3737        md->fd = -1;
    3838       
    39         if( strchr( acct->username, '@' ) == NULL )
     39        if( strchr( acc->user, '@' ) == NULL )
    4040        {
    4141                hide_login_progress( gc, "Invalid account name" );
  • protocols/nogaim.c

    r5c9512f r0a3c243  
    145145/* multi.c */
    146146
    147 struct gaim_connection *new_gaim_conn( struct aim_user *user )
     147struct gaim_connection *new_gaim_conn( account_t *acc )
    148148{
    149149        struct gaim_connection *gc;
    150         account_t *a;
    151150       
    152151        gc = g_new0( struct gaim_connection, 1 );
    153152       
    154         gc->prpl = user->prpl;
    155         g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username );
    156         g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password );
    157         /* [MD] BUGFIX: don't set gc->irc to the global IRC, but use the one from the struct aim_user.
    158          * This fixes daemon mode breakage where IRC doesn't point to the currently active connection.
    159          */
    160         gc->irc = user->irc;
     153        /* Maybe we should get rid of this memory waste later. ;-) */
     154        g_snprintf( gc->username, sizeof( gc->username ), "%s", acc->user );
     155        g_snprintf( gc->password, sizeof( gc->password ), "%s", acc->pass );
     156       
     157        gc->irc = acc->irc;
     158        gc->acc = acc;
     159        acc->gc = gc;
    161160       
    162161        connections = g_slist_append( connections, gc );
    163        
    164         user->gc = gc;
    165         gc->user = user;
    166        
    167         // Find the account_t so we can set its gc pointer
    168         for( a = gc->irc->accounts; a; a = a->next )
    169                 if( ( struct aim_user * ) a->gc == user )
    170                 {
    171                         a->gc = gc;
    172                         break;
    173                 }
    174162       
    175163        return( gc );
     
    189177       
    190178        connections = g_slist_remove( connections, gc );
    191         g_free( gc->user );
    192179        g_free( gc );
    193180}
     
    226213        /* Try to find a different connection on the same protocol. */
    227214        for( a = gc->irc->accounts; a; a = a->next )
    228                 if( a->prpl == gc->prpl && a->gc != gc )
     215                if( a->prpl == gc->acc->prpl && a->gc != gc )
    229216                        break;
    230217       
    231218        /* If we found one, include the screenname in the message. */
    232219        if( a )
    233                 irc_usermsg( gc->irc, "%s(%s) - %s", gc->prpl->name, gc->username, text );
     220                irc_usermsg( gc->irc, "%s(%s) - %s", gc->acc->prpl->name, gc->username, text );
    234221        else
    235                 irc_usermsg( gc->irc, "%s - %s", gc->prpl->name, text );
     222                irc_usermsg( gc->irc, "%s - %s", gc->acc->prpl->name, text );
    236223       
    237224        g_free( text );
     
    242229        struct gaim_connection *gc = d;
    243230       
    244         if( gc->prpl && gc->prpl->keepalive )
    245                 gc->prpl->keepalive( gc );
     231        if( gc->acc->prpl->keepalive )
     232                gc->acc->prpl->keepalive( gc );
    246233       
    247234        return TRUE;
     
    299286       
    300287        gc->keepalive = 0;
    301         gc->prpl->close( gc );
     288        gc->acc->prpl->close( gc );
    302289        b_event_remove( gc->inpa );
    303290       
     
    379366       
    380367        memset( nick, 0, MAX_NICK_LENGTH + 1 );
    381         strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) );
     368        strcpy( nick, nick_get( gc->irc, handle, gc->acc->prpl, realname ) );
    382369       
    383370        u = user_add( gc->irc, nick );
     
    391378                u->user = g_strndup( handle, s - handle );
    392379        }
    393         else if( gc->user->proto_opt[0] && *gc->user->proto_opt[0] )
     380        else if( *gc->acc->server )
    394381        {
    395382                char *colon;
    396383               
    397                 if( ( colon = strchr( gc->user->proto_opt[0], ':' ) ) )
    398                         u->host = g_strndup( gc->user->proto_opt[0],
    399                                              colon - gc->user->proto_opt[0] );
     384                if( ( colon = strchr( gc->acc->server, ':' ) ) )
     385                        u->host = g_strndup( gc->acc->server,
     386                                             colon - gc->acc->server );
    400387                else
    401                         u->host = g_strdup( gc->user->proto_opt[0] );
     388                        u->host = g_strdup( gc->acc->server );
    402389               
    403390                u->user = g_strdup( handle );
     
    410397        else
    411398        {
    412                 u->host = g_strdup( gc->user->prpl->name );
     399                u->host = g_strdup( gc->acc->prpl->name );
    413400                u->user = g_strdup( handle );
    414401        }
     
    480467void show_got_added_yes( gpointer w, struct show_got_added_data *data )
    481468{
    482         data->gc->prpl->add_buddy( data->gc, data->handle );
     469        data->gc->acc->prpl->add_buddy( data->gc, data->handle );
    483470        add_buddy( data->gc, NULL, data->handle, data->handle );
    484471       
     
    559546        }
    560547       
    561         if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) )
     548        if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "oscar" ) == 0 || strcmp( gc->acc->prpl->name, "icq" ) == 0 ) )
    562549        {
    563550                u->away = g_strdup( "Away" );
    564551        }
    565         else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) )
     552        else if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "jabber" ) == 0 ) )
    566553        {
    567554                if( type & UC_DND )
     
    572559                        u->away = g_strdup( "Away" );
    573560        }
    574         else if( ( type & UC_UNAVAILABLE ) && gc->prpl->get_status_string )
    575         {
    576                 u->away = g_strdup( gc->prpl->get_status_string( gc, type ) );
     561        else if( ( type & UC_UNAVAILABLE ) && gc->acc->prpl->get_status_string )
     562        {
     563                u->away = g_strdup( gc->acc->prpl->get_status_string( gc, type ) );
    577564        }
    578565        else
     
    733720       
    734721        /* Gaim sends own messages through this too. IRC doesn't want this, so kill them */
    735         if( g_strcasecmp( who, gc->user->username ) == 0 )
     722        if( g_strcasecmp( who, gc->username ) == 0 )
    736723                return;
    737724       
     
    791778       
    792779        /* It might be yourself! */
    793         if( b->gc->prpl->cmp_buddynames( handle, b->gc->user->username ) == 0 )
     780        if( b->gc->acc->prpl->cmp_buddynames( handle, b->gc->username ) == 0 )
    794781        {
    795782                u = user_find( b->gc->irc, b->gc->irc->nick );
     
    825812       
    826813        /* It might be yourself! */
    827         if( g_strcasecmp( handle, b->gc->user->username ) == 0 )
     814        if( g_strcasecmp( handle, b->gc->username ) == 0 )
    828815        {
    829816                u = user_find( b->gc->irc, b->gc->irc->nick );
     
    959946        }
    960947       
    961         st = gc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );
     948        st = gc->acc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );
    962949        g_free( buf );
    963950       
     
    976963        }
    977964       
    978         st = gc->prpl->chat_send( gc, id, msg );
     965        st = gc->acc->prpl->chat_send( gc, id, msg );
    979966        g_free( buf );
    980967       
     
    990977       
    991978        if( !away ) away = "";
    992         ms = m = gc->prpl->away_states( gc );
     979        ms = m = gc->acc->prpl->away_states( gc );
    993980       
    994981        while( m )
     
    1011998        if( m )
    1012999        {
    1013                 gc->prpl->set_away( gc, m->data, *away ? away : NULL );
     1000                gc->acc->prpl->set_away( gc, m->data, *away ? away : NULL );
    10141001        }
    10151002        else
     
    10181005                if( s )
    10191006                {
    1020                         gc->prpl->set_away( gc, s, away );
     1007                        gc->acc->prpl->set_away( gc, s, away );
    10211008                        if( set_getint( &gc->irc->set, "debug" ) )
    10221009                                serv_got_crap( gc, "Setting away state to %s", s );
    10231010                }
    10241011                else
    1025                         gc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );
     1012                        gc->acc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );
    10261013        }
    10271014       
     
    10751062void bim_add_allow( struct gaim_connection *gc, char *handle )
    10761063{
    1077         if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL )
     1064        if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )
    10781065        {
    10791066                gc->permit = g_slist_prepend( gc->permit, g_strdup( handle ) );
    10801067        }
    10811068       
    1082         gc->prpl->add_permit( gc, handle );
     1069        gc->acc->prpl->add_permit( gc, handle );
    10831070}
    10841071
     
    10871074        GSList *l;
    10881075       
    1089         if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) )
     1076        if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )
    10901077        {
    10911078                g_free( l->data );
     
    10931080        }
    10941081       
    1095         gc->prpl->rem_permit( gc, handle );
     1082        gc->acc->prpl->rem_permit( gc, handle );
    10961083}
    10971084
    10981085void bim_add_block( struct gaim_connection *gc, char *handle )
    10991086{
    1100         if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL )
     1087        if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )
    11011088        {
    11021089                gc->deny = g_slist_prepend( gc->deny, g_strdup( handle ) );
    11031090        }
    11041091       
    1105         gc->prpl->add_deny( gc, handle );
     1092        gc->acc->prpl->add_deny( gc, handle );
    11061093}
    11071094
     
    11101097        GSList *l;
    11111098       
    1112         if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) )
     1099        if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )
    11131100        {
    11141101                g_free( l->data );
     
    11161103        }
    11171104       
    1118         gc->prpl->rem_deny( gc, handle );
    1119 }
     1105        gc->acc->prpl->rem_deny( gc, handle );
     1106}
  • protocols/nogaim.h

    r5c9512f r0a3c243  
    3939
    4040#include "bitlbee.h"
     41#include "account.h"
    4142#include "proxy.h"
    4243#include "md5.h"
     
    6364struct gaim_connection
    6465{
    65         struct prpl *prpl;
     66        account_t *acc;
    6667        guint32 flags;
    6768       
     
    7879        GSList *deny;
    7980        int permdeny;
    80        
    81         struct aim_user *user;
    8281       
    8382        char username[64];
     
    126125};
    127126
    128 struct aim_user {
    129         char username[64];
    130         char alias[SELF_ALIAS_LEN];
    131         char password[32];
    132         char user_info[2048];
    133         int options;
    134         struct prpl *prpl;
    135         /* prpls can use this to save information about the user,
    136          * like which server to connect to, etc */
    137         char proto_opt[7][256];
    138 
    139         struct gaim_connection *gc;
    140         irc_t *irc;
    141 };
    142 
    143127struct prpl {
    144128        int options;
    145129        const char *name;
    146130
    147         void (* login)          (struct aim_user *);
     131        void (* login)          (account_t *);
    148132        void (* keepalive)      (struct gaim_connection *);
    149133        void (* close)          (struct gaim_connection *);
     
    212196
    213197/* multi.c */
    214 G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( struct aim_user *user );
     198G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( account_t *acc );
    215199G_MODULE_EXPORT void destroy_gaim_conn( struct gaim_connection *gc );
    216200G_MODULE_EXPORT void set_login_progress( struct gaim_connection *gc, int step, char *msg );
  • protocols/oscar/oscar.c

    r5c9512f r0a3c243  
    356356}
    357357
    358 static void oscar_login(struct aim_user *user) {
     358static void oscar_login(account_t *acc) {
    359359        aim_session_t *sess;
    360360        aim_conn_t *conn;
    361361        char buf[256];
    362         struct gaim_connection *gc = new_gaim_conn(user);
     362        struct gaim_connection *gc = new_gaim_conn(acc);
    363363        struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1);
    364364
    365         if (isdigit(*user->username)) {
     365        if (isdigit(acc->user[0])) {
    366366                odata->icq = TRUE;
    367367                /* This is odd but it's necessary for a proper do_import and do_export.
    368368                   We don't do those anymore, but let's stick with it, just in case
    369                    it accidentally fixes something else too... */
     369                   it accidentally fixes something else too... </bitlbee> */
    370370                gc->password[8] = 0;
    371371        } else {
     
    390390        }
    391391       
    392         if (g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.icq.com") != 0 &&
    393             g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.oscar.aol.com") != 0) {
    394                 serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",user->proto_opt[USEROPT_AUTH]);
     392        if (g_strcasecmp(acc->server, "login.icq.com") != 0 &&
     393            g_strcasecmp(acc->server, "login.oscar.aol.com") != 0) {
     394                serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",acc->server);
    395395        }
    396396       
     
    402402
    403403        conn->status |= AIM_CONN_STATUS_INPROGRESS;
    404         conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
    405                                         user->proto_opt[USEROPT_AUTH] : AIM_DEFAULT_LOGIN_SERVER,
    406                                  user->proto_opt[USEROPT_AUTHPORT][0] ?
    407                                         atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
    408                                  oscar_login_connect, gc);
     404        conn->fd = proxy_connect(acc->server, AIM_LOGIN_PORT, oscar_login_connect, gc);
    409405        if (conn->fd < 0) {
    410406                hide_login_progress(gc, _("Couldn't connect to host"));
     
    485481        struct aim_authresp_info *info;
    486482        int i; char *host; int port;
    487         struct aim_user *user;
    488483        aim_conn_t *bosconn;
    489484
    490485        struct gaim_connection *gc = sess->aux_data;
    491486        struct oscar_data *od = gc->proto_data;
    492         user = gc->user;
    493         port = user->proto_opt[USEROPT_AUTHPORT][0] ?
    494                 atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
     487        port = AIM_LOGIN_PORT;
    495488
    496489        va_start(ap, fr);
     
    871864        struct aim_redirect_data *redir;
    872865        struct gaim_connection *gc = sess->aux_data;
    873         struct aim_user *user = gc->user;
    874866        aim_conn_t *tstconn;
    875867        int i;
     
    877869        int port;
    878870
    879         port = user->proto_opt[USEROPT_AUTHPORT][0] ?
    880                 atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT,
    881 
    882871        va_start(ap, fr);
    883872        redir = va_arg(ap, struct aim_redirect_data *);
    884873        va_end(ap);
    885874
     875        port = AIM_LOGIN_PORT;
    886876        for (i = 0; i < (int)strlen(redir->ip); i++) {
    887877                if (redir->ip[i] == ':') {
     
    17231713        odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen;
    17241714
     1715        /* FIXME: It seems we're not really using this, and it broke now that
     1716           struct aim_user is dead.
    17251717        aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, gaim_caps);
    1726 
     1718        */
     1719       
    17271720        return 1;
    17281721}
  • protocols/yahoo/yahoo.c

    r5c9512f r0a3c243  
    121121}
    122122
    123 static void byahoo_login( struct aim_user *user )
    124 {
    125         struct gaim_connection *gc = new_gaim_conn( user );
     123static void byahoo_login( account_t *acc )
     124{
     125        struct gaim_connection *gc = new_gaim_conn( acc );
    126126        struct byahoo_data *yd = gc->proto_data = g_new0( struct byahoo_data, 1 );
    127127       
     
    130130       
    131131        set_login_progress( gc, 1, "Connecting" );
    132         yd->y2_id = yahoo_init( user->username, user->password );
     132        yd->y2_id = yahoo_init( acc->user, acc->pass );
    133133        yahoo_login( yd->y2_id, yd->current_status );
    134134}
     
    425425                yd = gc->proto_data;
    426426               
    427                 if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id )
     427                if( strcmp( gc->acc->prpl->name, "yahoo" ) == 0 && yd->y2_id == id )
    428428                        return( gc );
    429429        }
Note: See TracChangeset for help on using the changeset viewer.