diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-07-01 01:18:56 +0200 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-07-01 01:18:56 +0200 | 
| commit | 0a3c243b6659dc10efb227e507f324c2711d6dcd (patch) | |
| tree | bdeca88ab17879014a2b51a031546cf19ca6a36c | |
| parent | 5c9512ffa716f2bc8bbf9e2c31ee40624a0ff842 (diff) | |
Got rid of struct aim_user (now using account_t everywhere). Needs some more
testing though.
| -rw-r--r-- | account.c | 13 | ||||
| -rw-r--r-- | irc.c | 14 | ||||
| -rw-r--r-- | irc_commands.c | 16 | ||||
| -rw-r--r-- | protocols/jabber/jabber.c | 24 | ||||
| -rw-r--r-- | protocols/msn/msn.c | 6 | ||||
| -rw-r--r-- | protocols/nogaim.c | 99 | ||||
| -rw-r--r-- | protocols/nogaim.h | 24 | ||||
| -rw-r--r-- | protocols/oscar/oscar.c | 35 | ||||
| -rw-r--r-- | protocols/yahoo/yahoo.c | 8 | ||||
| -rw-r--r-- | root_commands.c | 35 | ||||
| -rw-r--r-- | user.c | 2 | 
11 files changed, 115 insertions, 161 deletions
| @@ -142,8 +142,6 @@ void account_del( irc_t *irc, account_t *acc )  void account_on( irc_t *irc, account_t *a )  { -	struct aim_user *u; -	  	if( a->gc )  	{  		/* Trying to enable an already-enabled account */ @@ -152,17 +150,8 @@ void account_on( irc_t *irc, account_t *a )  	cancel_auto_reconnect( a ); -	u = g_new0 ( struct aim_user, 1 ); -	u->irc = irc; -	u->prpl = a->prpl; -	strncpy( u->username, a->user, sizeof( u->username ) - 1 ); -	strncpy( u->password, a->pass, sizeof( u->password ) - 1 ); -	if( a->server) strncpy( u->proto_opt[0], a->server, sizeof( u->proto_opt[0] ) - 1 ); -	 -	a->gc = (struct gaim_connection *) u; /* Bit hackish :-/ */  	a->reconnect = 0; -	 -	a->prpl->login( u ); +	a->prpl->login( a );  }  void account_off( irc_t *irc, account_t *a ) @@ -924,19 +924,19 @@ void irc_kick( irc_t *irc, user_t *u, char *channel, user_t *kicker )  void irc_kill( irc_t *irc, user_t *u )  {  	char *nick, *s; -	char reason[64]; +	char reason[128];  	if( u->gc && u->gc->flags & OPT_LOGGING_OUT )  	{ -		if( u->gc->user->proto_opt[0][0] ) +		if( u->gc->acc->server )  			g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost, -			            u->gc->user->proto_opt[0] ); +			            u->gc->acc->server );  		else if( ( s = strchr( u->gc->username, '@' ) ) )  			g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,  			            s + 1 );  		else  			g_snprintf( reason, sizeof( reason ), "%s %s.%s", irc->myhost, -			            u->gc->prpl->name, irc->myhost ); +			            u->gc->acc->prpl->name, irc->myhost );  		/* proto_opt might contain garbage after the : */  		if( ( s = strchr( reason, ':' ) ) ) @@ -1012,13 +1012,13 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags )  		}  		else if( g_strncasecmp( s + 1, "TYPING", 6 ) == 0 )  		{ -			if( u && u->gc && u->gc->prpl->send_typing && strlen( s ) >= 10 ) +			if( u && u->gc && u->gc->acc->prpl->send_typing && strlen( s ) >= 10 )  			{  				time_t current_typing_notice = time( NULL );  				if( current_typing_notice - u->last_typing_notice >= 5 )  				{ -					u->gc->prpl->send_typing( u->gc, u->handle, s[8] == '1' ); +					u->gc->acc->prpl->send_typing( u->gc, u->handle, s[8] == '1' );  					u->last_typing_notice = current_typing_notice;  				}  			} @@ -1051,7 +1051,7 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags )  			return 1;  		}  	} -	else if( c && c->gc && c->gc->prpl ) +	else if( c && c->gc && c->gc->acc && c->gc->acc->prpl )  	{  		return( bim_chat_msg( c->gc, c->id, s ) );  	} diff --git a/irc_commands.c b/irc_commands.c index a3fa0e6e..889de9da 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -149,10 +149,10 @@ static void irc_cmd_part( irc_t *irc, char **cmd )  		irc_part( irc, u, c->channel ); -		if( c->gc && c->gc->prpl ) +		if( c->gc )  		{  			c->joined = 0; -			c->gc->prpl->chat_leave( c->gc, c->id ); +			c->gc->acc->prpl->chat_leave( c->gc, c->id );  		}  	}  	else @@ -172,11 +172,11 @@ static void irc_cmd_join( irc_t *irc, char **cmd )  		{  			user_t *u = user_find( irc, cmd[1] + 1 ); -			if( u && u->gc && u->gc->prpl && u->gc->prpl->chat_open ) +			if( u && u->gc && u->gc->acc->prpl->chat_open )  			{  				irc_reply( irc, 403, "%s :Initializing groupchat in a different channel", cmd[1] ); -				if( !u->gc->prpl->chat_open( u->gc, u->handle ) ) +				if( !u->gc->acc->prpl->chat_open( u->gc, u->handle ) )  				{  					irc_usermsg( irc, "Could not open a groupchat with %s.", u->nick );  				} @@ -204,9 +204,9 @@ static void irc_cmd_invite( irc_t *irc, char **cmd )  	user_t *u = user_find( irc, nick );  	if( u && c && ( u->gc == c->gc ) ) -		if( c->gc && c->gc->prpl && c->gc->prpl->chat_invite ) +		if( c->gc && c->gc->acc->prpl->chat_invite )  		{ -			c->gc->prpl->chat_invite( c->gc, c->id, "", u->handle ); +			c->gc->acc->prpl->chat_invite( c->gc, c->id, "", u->handle );  			irc_reply( irc, 341, "%s %s", nick, channel );  			return;  		} @@ -476,8 +476,8 @@ static void irc_cmd_whois( irc_t *irc, char **cmd )  		irc_reply( irc, 311, "%s %s %s * :%s", u->nick, u->user, u->host, u->realname );  		if( u->gc ) -			irc_reply( irc, 312, "%s %s.%s :%s network", u->nick, u->gc->user->username, -			           *u->gc->user->proto_opt[0] ? u->gc->user->proto_opt[0] : "", u->gc->prpl->name ); +			irc_reply( irc, 312, "%s %s.%s :%s network", u->nick, u->gc->acc->user, +			           *u->gc->acc->server ? u->gc->acc->server : "", u->gc->acc->prpl->name );  		else  			irc_reply( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO ); diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index 029473fd..c8e8ceca 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -560,29 +560,29 @@ static gboolean gjab_connected_ssl(gpointer data, void *source, b_input_conditio  static void gjab_start(gjconn gjc)  { -	struct aim_user *user; +	account_t *acc;  	int port = -1, ssl = 0;  	char *server = NULL, *s;  	if (!gjc || gjc->state != JCONN_STATE_OFF)  		return; -	user = GJ_GC(gjc)->user; -	if (*user->proto_opt[0]) { +	acc = GJ_GC(gjc)->acc; +	if (acc->server) {  		/* If there's a dot, assume there's a hostname in the beginning */ -		if (strchr(user->proto_opt[0], '.')) { -			server = g_strdup(user->proto_opt[0]); +		if (strchr(acc->server, '.')) { +			server = g_strdup(acc->server);  			if ((s = strchr(server, ':')))  				*s = 0;  		}  		/* After the hostname, there can be a port number */ -		s = strchr(user->proto_opt[0], ':'); +		s = strchr(acc->server, ':');  		if (s && isdigit(s[1]))  			sscanf(s + 1, "%d", &port);  		/* And if there's the string ssl, the user wants an SSL-connection */ -		if (strstr(user->proto_opt[0], ":ssl") || g_strcasecmp(user->proto_opt[0], "ssl") == 0) +		if (strstr(acc->server, ":ssl") || g_strcasecmp(acc->server, "ssl") == 0)  			ssl = 1;  	} @@ -615,7 +615,7 @@ static void gjab_start(gjconn gjc)  	g_free(server); -	if (!user->gc || (gjc->fd < 0)) { +	if (!acc->gc || (gjc->fd < 0)) {  		STATE_EVT(JCONN_STATE_OFF)  		return;  	} @@ -1515,18 +1515,18 @@ static void jabber_handlestate(gjconn gjc, int state)  	return;  } -static void jabber_login(struct aim_user *user) +static void jabber_login(account_t *acc)  { -	struct gaim_connection *gc = new_gaim_conn(user); +	struct gaim_connection *gc = new_gaim_conn(acc);  	struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1); -	char *loginname = create_valid_jid(user->username, DEFAULT_SERVER, "BitlBee"); +	char *loginname = create_valid_jid(acc->user, DEFAULT_SERVER, "BitlBee");  	jd->hash = g_hash_table_new(g_str_hash, g_str_equal);  	jd->chats = NULL;	/* we have no chats yet */  	set_login_progress(gc, 1, _("Connecting")); -	if (!(jd->gjc = gjab_new(loginname, user->password, gc))) { +	if (!(jd->gjc = gjab_new(loginname, acc->pass, gc))) {  		g_free(loginname);  		hide_login_progress(gc, _("Unable to connect"));  		signoff(gc); diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index 6393f31d..b00354c9 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -26,9 +26,9 @@  #include "nogaim.h"  #include "msn.h" -static void msn_login( struct aim_user *acct ) +static void msn_login( account_t *acc )  { -	struct gaim_connection *gc = new_gaim_conn( acct ); +	struct gaim_connection *gc = new_gaim_conn( acc );  	struct msn_data *md = g_new0( struct msn_data, 1 );  	set_login_progress( gc, 1, "Connecting" ); @@ -36,7 +36,7 @@ static void msn_login( struct aim_user *acct )  	gc->proto_data = md;  	md->fd = -1; -	if( strchr( acct->username, '@' ) == NULL ) +	if( strchr( acc->user, '@' ) == NULL )  	{  		hide_login_progress( gc, "Invalid account name" );  		signoff( gc ); diff --git a/protocols/nogaim.c b/protocols/nogaim.c index f94d936d..8346f5fa 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -144,33 +144,21 @@ GSList *get_connections() { return connections; }  /* multi.c */ -struct gaim_connection *new_gaim_conn( struct aim_user *user ) +struct gaim_connection *new_gaim_conn( account_t *acc )  {  	struct gaim_connection *gc; -	account_t *a;  	gc = g_new0( struct gaim_connection, 1 ); -	gc->prpl = user->prpl; -	g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username ); -	g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password ); -	/* [MD]	BUGFIX: don't set gc->irc to the global IRC, but use the one from the struct aim_user. -	 * This fixes daemon mode breakage where IRC doesn't point to the currently active connection. -	 */ -	gc->irc = user->irc; -	 -	connections = g_slist_append( connections, gc ); +	/* Maybe we should get rid of this memory waste later. ;-) */ +	g_snprintf( gc->username, sizeof( gc->username ), "%s", acc->user ); +	g_snprintf( gc->password, sizeof( gc->password ), "%s", acc->pass ); -	user->gc = gc; -	gc->user = user; +	gc->irc = acc->irc; +	gc->acc = acc; +	acc->gc = gc; -	// Find the account_t so we can set its gc pointer -	for( a = gc->irc->accounts; a; a = a->next ) -		if( ( struct aim_user * ) a->gc == user ) -		{ -			a->gc = gc; -			break; -		} +	connections = g_slist_append( connections, gc );  	return( gc );  } @@ -188,7 +176,6 @@ void destroy_gaim_conn( struct gaim_connection *gc )  		}  	connections = g_slist_remove( connections, gc ); -	g_free( gc->user );  	g_free( gc );  } @@ -225,14 +212,14 @@ void serv_got_crap( struct gaim_connection *gc, char *format, ... )  	/* Try to find a different connection on the same protocol. */  	for( a = gc->irc->accounts; a; a = a->next ) -		if( a->prpl == gc->prpl && a->gc != gc ) +		if( a->prpl == gc->acc->prpl && a->gc != gc )  			break;  	/* If we found one, include the screenname in the message. */  	if( a ) -		irc_usermsg( gc->irc, "%s(%s) - %s", gc->prpl->name, gc->username, text ); +		irc_usermsg( gc->irc, "%s(%s) - %s", gc->acc->prpl->name, gc->username, text );  	else -		irc_usermsg( gc->irc, "%s - %s", gc->prpl->name, text ); +		irc_usermsg( gc->irc, "%s - %s", gc->acc->prpl->name, text );  	g_free( text );  } @@ -241,8 +228,8 @@ static gboolean send_keepalive( gpointer d, gint fd, b_input_condition cond )  {  	struct gaim_connection *gc = d; -	if( gc->prpl && gc->prpl->keepalive ) -		gc->prpl->keepalive( gc ); +	if( gc->acc->prpl->keepalive ) +		gc->acc->prpl->keepalive( gc );  	return TRUE;  } @@ -298,7 +285,7 @@ void signoff( struct gaim_connection *gc )  	gc->flags |= OPT_LOGGING_OUT;  	gc->keepalive = 0; -	gc->prpl->close( gc ); +	gc->acc->prpl->close( gc );  	b_event_remove( gc->inpa );  	while( u ) @@ -378,7 +365,7 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  	}  	memset( nick, 0, MAX_NICK_LENGTH + 1 ); -	strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) ); +	strcpy( nick, nick_get( gc->irc, handle, gc->acc->prpl, realname ) );  	u = user_add( gc->irc, nick ); @@ -390,15 +377,15 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  		u->host = g_strdup( s + 1 );  		u->user = g_strndup( handle, s - handle );  	} -	else if( gc->user->proto_opt[0] && *gc->user->proto_opt[0] ) +	else if( *gc->acc->server )  	{  		char *colon; -		if( ( colon = strchr( gc->user->proto_opt[0], ':' ) ) ) -			u->host = g_strndup( gc->user->proto_opt[0], -			                     colon - gc->user->proto_opt[0] ); +		if( ( colon = strchr( gc->acc->server, ':' ) ) ) +			u->host = g_strndup( gc->acc->server, +			                     colon - gc->acc->server );  		else -			u->host = g_strdup( gc->user->proto_opt[0] ); +			u->host = g_strdup( gc->acc->server );  		u->user = g_strdup( handle ); @@ -409,7 +396,7 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  	}  	else  	{ -		u->host = g_strdup( gc->user->prpl->name ); +		u->host = g_strdup( gc->acc->prpl->name );  		u->user = g_strdup( handle );  	} @@ -479,7 +466,7 @@ void show_got_added_no( gpointer w, struct show_got_added_data *data )  void show_got_added_yes( gpointer w, struct show_got_added_data *data )  { -	data->gc->prpl->add_buddy( data->gc, data->handle ); +	data->gc->acc->prpl->add_buddy( data->gc, data->handle );  	add_buddy( data->gc, NULL, data->handle, data->handle );  	return show_got_added_no( w, data ); @@ -558,11 +545,11 @@ void serv_got_update( struct gaim_connection *gc, char *handle, int loggedin, in  			remove_chat_buddy_silent( c, handle );  	} -	if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) ) +	if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "oscar" ) == 0 || strcmp( gc->acc->prpl->name, "icq" ) == 0 ) )  	{  		u->away = g_strdup( "Away" );  	} -	else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) ) +	else if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "jabber" ) == 0 ) )  	{  		if( type & UC_DND )  			u->away = g_strdup( "Do Not Disturb" ); @@ -571,9 +558,9 @@ void serv_got_update( struct gaim_connection *gc, char *handle, int loggedin, in  		else // if( type & UC_AWAY )  			u->away = g_strdup( "Away" );  	} -	else if( ( type & UC_UNAVAILABLE ) && gc->prpl->get_status_string ) +	else if( ( type & UC_UNAVAILABLE ) && gc->acc->prpl->get_status_string )  	{ -		u->away = g_strdup( gc->prpl->get_status_string( gc, type ) ); +		u->away = g_strdup( gc->acc->prpl->get_status_string( gc, type ) );  	}  	else  		u->away = NULL; @@ -732,7 +719,7 @@ void serv_got_chat_in( struct gaim_connection *gc, int id, char *who, int whispe  	user_t *u;  	/* Gaim sends own messages through this too. IRC doesn't want this, so kill them */ -	if( g_strcasecmp( who, gc->user->username ) == 0 ) +	if( g_strcasecmp( who, gc->username ) == 0 )  		return;  	u = user_findhandle( gc, who ); @@ -790,7 +777,7 @@ void add_chat_buddy( struct conversation *b, char *handle )  		serv_got_crap( b->gc, "User %s added to conversation %d", handle, b->id );  	/* It might be yourself! */ -	if( b->gc->prpl->cmp_buddynames( handle, b->gc->user->username ) == 0 ) +	if( b->gc->acc->prpl->cmp_buddynames( handle, b->gc->username ) == 0 )  	{  		u = user_find( b->gc->irc, b->gc->irc->nick );  		if( !b->joined ) @@ -824,7 +811,7 @@ void remove_chat_buddy( struct conversation *b, char *handle, char *reason )  		serv_got_crap( b->gc, "User %s removed from conversation %d (%s)", handle, b->id, reason ? reason : "" );  	/* It might be yourself! */ -	if( g_strcasecmp( handle, b->gc->user->username ) == 0 ) +	if( g_strcasecmp( handle, b->gc->username ) == 0 )  	{  		u = user_find( b->gc->irc, b->gc->irc->nick );  		b->joined = 0; @@ -958,7 +945,7 @@ int bim_buddy_msg( struct gaim_connection *gc, char *handle, char *msg, int flag  		msg = buf;  	} -	st = gc->prpl->send_im( gc, handle, msg, strlen( msg ), flags ); +	st = gc->acc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );  	g_free( buf );  	return st; @@ -975,7 +962,7 @@ int bim_chat_msg( struct gaim_connection *gc, int id, char *msg )  		msg = buf;  	} -	st = gc->prpl->chat_send( gc, id, msg ); +	st = gc->acc->prpl->chat_send( gc, id, msg );  	g_free( buf );  	return st; @@ -989,7 +976,7 @@ int bim_set_away( struct gaim_connection *gc, char *away )  	char *s;  	if( !away ) away = ""; -	ms = m = gc->prpl->away_states( gc ); +	ms = m = gc->acc->prpl->away_states( gc );  	while( m )  	{ @@ -1010,19 +997,19 @@ int bim_set_away( struct gaim_connection *gc, char *away )  	if( m )  	{ -		gc->prpl->set_away( gc, m->data, *away ? away : NULL ); +		gc->acc->prpl->set_away( gc, m->data, *away ? away : NULL );  	}  	else  	{  		s = bim_away_alias_find( ms, away );  		if( s )  		{ -			gc->prpl->set_away( gc, s, away ); +			gc->acc->prpl->set_away( gc, s, away );  			if( set_getint( &gc->irc->set, "debug" ) )  				serv_got_crap( gc, "Setting away state to %s", s );  		}  		else -			gc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away ); +			gc->acc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );  	}  	g_list_free( ms ); @@ -1074,46 +1061,46 @@ static char *bim_away_alias_find( GList *gcm, char *away )  void bim_add_allow( struct gaim_connection *gc, char *handle )  { -	if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL ) +	if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )  	{  		gc->permit = g_slist_prepend( gc->permit, g_strdup( handle ) );  	} -	gc->prpl->add_permit( gc, handle ); +	gc->acc->prpl->add_permit( gc, handle );  }  void bim_rem_allow( struct gaim_connection *gc, char *handle )  {  	GSList *l; -	if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) ) +	if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )  	{  		g_free( l->data );  		gc->permit = g_slist_delete_link( gc->permit, l );  	} -	gc->prpl->rem_permit( gc, handle ); +	gc->acc->prpl->rem_permit( gc, handle );  }  void bim_add_block( struct gaim_connection *gc, char *handle )  { -	if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL ) +	if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )  	{  		gc->deny = g_slist_prepend( gc->deny, g_strdup( handle ) );  	} -	gc->prpl->add_deny( gc, handle ); +	gc->acc->prpl->add_deny( gc, handle );  }  void bim_rem_block( struct gaim_connection *gc, char *handle )  {  	GSList *l; -	if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) ) +	if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )  	{  		g_free( l->data );  		gc->deny = g_slist_delete_link( gc->deny, l );  	} -	gc->prpl->rem_deny( gc, handle ); +	gc->acc->prpl->rem_deny( gc, handle );  } diff --git a/protocols/nogaim.h b/protocols/nogaim.h index 4d71da24..8c6519c1 100644 --- a/protocols/nogaim.h +++ b/protocols/nogaim.h @@ -38,6 +38,7 @@  #define _NOGAIM_H  #include "bitlbee.h" +#include "account.h"  #include "proxy.h"  #include "md5.h"  #include "sha.h" @@ -62,7 +63,7 @@  /* ok. now the fun begins. first we create a connection structure */  struct gaim_connection  { -	struct prpl *prpl; +	account_t *acc;  	guint32 flags;  	/* each connection then can have its own protocol-specific data */ @@ -78,8 +79,6 @@ struct gaim_connection  	GSList *deny;  	int permdeny; -	struct aim_user *user; -	  	char username[64];  	char displayname[128];  	char password[32]; @@ -125,26 +124,11 @@ struct buddy {  	struct gaim_connection *gc; /* the connection it belongs to */  }; -struct aim_user { -	char username[64]; -	char alias[SELF_ALIAS_LEN];  -	char password[32]; -	char user_info[2048]; -	int options; -	struct prpl *prpl; -	/* prpls can use this to save information about the user, -	 * like which server to connect to, etc */ -	char proto_opt[7][256]; - -	struct gaim_connection *gc; -	irc_t *irc; -}; -  struct prpl {  	int options;  	const char *name; -	void (* login)		(struct aim_user *); +	void (* login)		(account_t *);  	void (* keepalive)	(struct gaim_connection *);  	void (* close)		(struct gaim_connection *); @@ -211,7 +195,7 @@ gboolean auto_reconnect( gpointer data, gint fd, b_input_condition cond );  void cancel_auto_reconnect( struct account *a );  /* multi.c */ -G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( struct aim_user *user ); +G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( account_t *acc );  G_MODULE_EXPORT void destroy_gaim_conn( struct gaim_connection *gc );  G_MODULE_EXPORT void set_login_progress( struct gaim_connection *gc, int step, char *msg );  G_MODULE_EXPORT void hide_login_progress( struct gaim_connection *gc, char *msg ); diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 7c76533a..d55ce3f2 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -355,18 +355,18 @@ static gboolean oscar_login_connect(gpointer data, gint source, b_input_conditio  	return FALSE;  } -static void oscar_login(struct aim_user *user) { +static void oscar_login(account_t *acc) {  	aim_session_t *sess;  	aim_conn_t *conn;  	char buf[256]; -	struct gaim_connection *gc = new_gaim_conn(user); +	struct gaim_connection *gc = new_gaim_conn(acc);  	struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1); -	if (isdigit(*user->username)) { +	if (isdigit(acc->user[0])) {  		odata->icq = TRUE;  		/* This is odd but it's necessary for a proper do_import and do_export.  		   We don't do those anymore, but let's stick with it, just in case -		   it accidentally fixes something else too... */ +		   it accidentally fixes something else too... </bitlbee> */  		gc->password[8] = 0;  	} else {  		gc->flags |= OPT_CONN_HTML; @@ -389,9 +389,9 @@ static void oscar_login(struct aim_user *user) {  		return;  	} -	if (g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.icq.com") != 0 && -	    g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.oscar.aol.com") != 0) { -		serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",user->proto_opt[USEROPT_AUTH]); +	if (g_strcasecmp(acc->server, "login.icq.com") != 0 && +	    g_strcasecmp(acc->server, "login.oscar.aol.com") != 0) { +		serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",acc->server);  	}  	g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username); @@ -401,11 +401,7 @@ static void oscar_login(struct aim_user *user) {  	aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);  	conn->status |= AIM_CONN_STATUS_INPROGRESS; -	conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ? -					user->proto_opt[USEROPT_AUTH] : AIM_DEFAULT_LOGIN_SERVER, -				 user->proto_opt[USEROPT_AUTHPORT][0] ? -					atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, -				 oscar_login_connect, gc); +	conn->fd = proxy_connect(acc->server, AIM_LOGIN_PORT, oscar_login_connect, gc);  	if (conn->fd < 0) {  		hide_login_progress(gc, _("Couldn't connect to host"));  		signoff(gc); @@ -484,14 +480,11 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_list ap;  	struct aim_authresp_info *info;  	int i; char *host; int port; -	struct aim_user *user;  	aim_conn_t *bosconn;  	struct gaim_connection *gc = sess->aux_data;          struct oscar_data *od = gc->proto_data; -	user = gc->user; -	port = user->proto_opt[USEROPT_AUTHPORT][0] ? -		atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, +	port = AIM_LOGIN_PORT;  	va_start(ap, fr);  	info = va_arg(ap, struct aim_authresp_info *); @@ -870,19 +863,16 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_list ap;  	struct aim_redirect_data *redir;  	struct gaim_connection *gc = sess->aux_data; -	struct aim_user *user = gc->user;  	aim_conn_t *tstconn;  	int i;  	char *host;  	int port; -	port = user->proto_opt[USEROPT_AUTHPORT][0] ? -		atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, -  	va_start(ap, fr);  	redir = va_arg(ap, struct aim_redirect_data *);  	va_end(ap); +	port = AIM_LOGIN_PORT;  	for (i = 0; i < (int)strlen(redir->ip); i++) {  		if (redir->ip[i] == ':') {  			port = atoi(&(redir->ip[i+1])); @@ -1722,8 +1712,11 @@ static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...)  	odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen; +	/* FIXME: It seems we're not really using this, and it broke now that +	   struct aim_user is dead.  	aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, gaim_caps); - +	*/ +	  	return 1;  } diff --git a/protocols/yahoo/yahoo.c b/protocols/yahoo/yahoo.c index 79c0febb..c21779ba 100644 --- a/protocols/yahoo/yahoo.c +++ b/protocols/yahoo/yahoo.c @@ -120,16 +120,16 @@ static char *byahoo_strip( char *in )  	return( g_strndup( in, len ) );  } -static void byahoo_login( struct aim_user *user ) +static void byahoo_login( account_t *acc )  { -	struct gaim_connection *gc = new_gaim_conn( user ); +	struct gaim_connection *gc = new_gaim_conn( acc );  	struct byahoo_data *yd = gc->proto_data = g_new0( struct byahoo_data, 1 );  	yd->logged_in = FALSE;  	yd->current_status = YAHOO_STATUS_AVAILABLE;  	set_login_progress( gc, 1, "Connecting" ); -	yd->y2_id = yahoo_init( user->username, user->password ); +	yd->y2_id = yahoo_init( acc->user, acc->pass );  	yahoo_login( yd->y2_id, yd->current_status );  } @@ -424,7 +424,7 @@ static struct gaim_connection *byahoo_get_gc_by_id( int id )  		gc = l->data;  		yd = gc->proto_data; -		if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id ) +		if( strcmp( gc->acc->prpl->name, "yahoo" ) == 0 && yd->y2_id == id )  			return( gc );  	} diff --git a/root_commands.c b/root_commands.c index 815d618b..3bd80e5e 100644 --- a/root_commands.c +++ b/root_commands.c @@ -399,14 +399,14 @@ static void cmd_add( irc_t *irc, char **cmd )  		}  		else  		{ -			nick_set( irc, cmd[2], a->gc->prpl, cmd[3] ); +			nick_set( irc, cmd[2], a->gc->acc->prpl, cmd[3] );  		}  	}  	/* By making this optional, you can talk to people without having to  	   add them to your *real* (server-side) contact list. */  	if( add_for_real ) -		a->gc->prpl->add_buddy( a->gc, cmd[2] ); +		a->gc->acc->prpl->add_buddy( a->gc, cmd[2] );  	add_buddy( a->gc, NULL, cmd[2], cmd[2] ); @@ -440,13 +440,13 @@ static void cmd_info( irc_t *irc, char **cmd )  		return;  	} -	if( !gc->prpl->get_info ) +	if( !gc->acc->prpl->get_info )  	{  		irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] );  	}  	else  	{ -		gc->prpl->get_info( gc, cmd[2] ); +		gc->acc->prpl->get_info( gc, cmd[2] );  	}  } @@ -481,7 +481,7 @@ static void cmd_rename( irc_t *irc, char **cmd )  		}  		else if( u->send_handler == buddy_send_handler )  		{ -			nick_set( irc, u->handle, u->gc->prpl, cmd[2] ); +			nick_set( irc, u->handle, u->gc->acc->prpl, cmd[2] );  		}  		irc_usermsg( irc, "Nick successfully changed" ); @@ -500,7 +500,7 @@ static void cmd_remove( irc_t *irc, char **cmd )  	}  	s = g_strdup( u->handle ); -	u->gc->prpl->remove_buddy( u->gc, u->handle, NULL ); +	u->gc->acc->prpl->remove_buddy( u->gc, u->handle, NULL );  	user_del( irc, cmd[1] );  	nick_del( irc, cmd[1] ); @@ -557,7 +557,7 @@ static void cmd_block( irc_t *irc, char **cmd )  		return;  	} -	if( !gc->prpl->add_deny || !gc->prpl->rem_permit ) +	if( !gc->acc->prpl->add_deny || !gc->acc->prpl->rem_permit )  	{  		irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] );  	} @@ -616,7 +616,7 @@ static void cmd_allow( irc_t *irc, char **cmd )  		return;  	} -	if( !gc->prpl->rem_deny || !gc->prpl->add_permit ) +	if( !gc->acc->prpl->rem_deny || !gc->acc->prpl->add_permit )  	{  		irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] );  	} @@ -732,7 +732,7 @@ static void cmd_blist( irc_t *irc, char **cmd )  	{  		if( online == 1 )  		{ -			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->acc->prpl->name );  			irc_usermsg( irc, format, u->nick, s, "Online" );  		} @@ -743,7 +743,7 @@ static void cmd_blist( irc_t *irc, char **cmd )  	{  		if( away == 1 )  		{ -			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->acc->prpl->name );  			irc_usermsg( irc, format, u->nick, s, u->away );  		}  		n_away ++; @@ -753,7 +753,7 @@ static void cmd_blist( irc_t *irc, char **cmd )  	{  		if( offline == 1 )  		{ -			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->acc->prpl->name );  			irc_usermsg( irc, format, u->nick, s, "Offline" );  		}  		n_offline ++; @@ -778,7 +778,7 @@ static void cmd_nick( irc_t *irc, char **cmd )  	{  		irc_usermsg( irc, "Your name is `%s'" , a->gc->displayname ? a->gc->displayname : "NULL" );  	} -	else if ( !a->gc->prpl->set_info )  +	else if ( !a->prpl->set_info )   	{  		irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] );  	} @@ -786,7 +786,7 @@ static void cmd_nick( irc_t *irc, char **cmd )  	{  		irc_usermsg( irc, "Setting your name to `%s'", cmd[2] ); -		a->gc->prpl->set_info( a->gc, cmd[2] ); +		a->prpl->set_info( a->gc, cmd[2] );  	}  } @@ -805,7 +805,7 @@ static void cmd_qlist( irc_t *irc, char **cmd )  	for( num = 0; q; q = q->next, num ++ )  		if( q->gc ) /* Not necessary yet, but it might come later */ -			irc_usermsg( irc, "%d, %s(%s): %s", num, q->gc->prpl->name, q->gc->username, q->question ); +			irc_usermsg( irc, "%d, %s(%s): %s", num, q->gc->acc->prpl->name, q->gc->username, q->question );  		else  			irc_usermsg( irc, "%d, BitlBee: %s", num, q->question );  } @@ -833,10 +833,11 @@ static void cmd_import_buddies( irc_t *irc, char **cmd )  		{  			user_t *u; +			/* FIXME: Hmmm, this is actually pretty dangerous code... REMOVEME? :-) */  			for( u = irc->users; u; u = u->next )  				if( u->gc == gc )  				{ -					u->gc->prpl->remove_buddy( u->gc, u->handle, NULL ); +					u->gc->acc->prpl->remove_buddy( u->gc, u->handle, NULL );  					user_del( irc, u->nick );  				} @@ -851,9 +852,9 @@ static void cmd_import_buddies( irc_t *irc, char **cmd )  	for( n = gc->irc->nicks; n; n = n->next )  	{ -		if( n->proto == gc->prpl && !user_findhandle( gc, n->handle ) ) +		if( n->proto == gc->acc->prpl && !user_findhandle( gc, n->handle ) )  		{ -	                gc->prpl->add_buddy( gc, n->handle ); +	                gc->acc->prpl->add_buddy( gc, n->handle );  	                add_buddy( gc, NULL, n->handle, NULL );  		}  	} @@ -146,7 +146,7 @@ user_t *user_findhandle( struct gaim_connection *gc, char *handle )  	while( u )  	{ -		if( u->gc == gc && u->handle && gc->prpl->cmp_buddynames ( u->handle, handle ) == 0 ) +		if( u->gc == gc && u->handle && gc->acc->prpl->cmp_buddynames ( u->handle, handle ) == 0 )  			break;  		u = u->next;  	} | 
