diff options
| -rw-r--r-- | account.c | 1 | ||||
| -rw-r--r-- | account.h | 1 | ||||
| -rw-r--r-- | root_commands.c | 2 | ||||
| -rw-r--r-- | storage_xml.c | 9 | 
4 files changed, 10 insertions, 3 deletions
| @@ -44,6 +44,7 @@ account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )  	a->prpl = prpl;  	a->user = g_strdup( user );  	a->pass = g_strdup( pass ); +	a->auto_connect = 1;  	a->irc = irc;  	return( a ); @@ -33,6 +33,7 @@ typedef struct account  	char *pass;  	char *server; +	int auto_connect;  	int reconnect;  	struct irc *irc; diff --git a/root_commands.c b/root_commands.c index 225912b7..d263bb84 100644 --- a/root_commands.c +++ b/root_commands.c @@ -306,7 +306,7 @@ static void cmd_account( irc_t *irc, char **cmd )  				irc_usermsg( irc, "Trying to get all accounts connected..." );  				for( a = irc->accounts; a; a = a->next ) -					if( !a->gc ) +					if( !a->gc && a->auto_connect )  						account_on( irc, a );  			}   			else diff --git a/storage_xml.c b/storage_xml.c index 737f2091..69e991d2 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -125,12 +125,13 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  	}  	else if( g_strcasecmp( element_name, "account" ) == 0 )  	{ -		char *protocol, *handle, *server, *password; +		char *protocol, *handle, *server, *password, *autoconnect;  		struct prpl *prpl = NULL;  		handle = xml_attr( attr_names, attr_values, "handle" );  		password = xml_attr( attr_names, attr_values, "password" );  		server = xml_attr( attr_names, attr_values, "server" ); +		autoconnect = xml_attr( attr_names, attr_values, "autoconnect" );  		protocol = xml_attr( attr_names, attr_values, "protocol" );  		if( protocol ) @@ -147,6 +148,10 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  			xd->current_account = account_add( irc, prpl, handle, password );  			if( server )  				xd->current_account->server = g_strdup( server ); +			if( autoconnect ) +				/* Return value doesn't matter, since account_add() already sets +				   a default! */ +				sscanf( autoconnect, "%d", &xd->current_account->auto_connect );  		}  	}  	else if( g_strcasecmp( element_name, "setting" ) == 0 ) @@ -384,7 +389,7 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  	for( acc = irc->accounts; acc; acc = acc->next )  	{ -		if( !xml_printf( fd, "\t<account protocol=\"%s\" handle=\"%s\" password=\"%s\" autoconnect=\"%s\"", acc->prpl->name, acc->user, acc->pass, "yes" ) ) +		if( !xml_printf( fd, "\t<account protocol=\"%s\" handle=\"%s\" password=\"%s\" autoconnect=\"%d\"", acc->prpl->name, acc->user, acc->pass, acc->auto_connect ) )  			goto write_error;  		if( acc->server && acc->server[0] && !xml_printf( fd, " server=\"%s\"", acc->server ) )  			goto write_error; | 
