aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--account.c1
-rw-r--r--account.h1
-rw-r--r--root_commands.c2
-rw-r--r--storage_xml.c9
4 files changed, 10 insertions, 3 deletions
diff --git a/account.c b/account.c
index 810f3a6f..b75afa51 100644
--- a/account.c
+++ b/account.c
@@ -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 );
diff --git a/account.h b/account.h
index 37cd8814..40efb101 100644
--- a/account.h
+++ b/account.h
@@ -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;