aboutsummaryrefslogtreecommitdiffstats
path: root/account.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-03-17 13:56:52 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2010-03-17 13:56:52 +0000
commit75554d0a484d21f95fcf24394f89c541a650acaf (patch)
tree51d9dc322baeb2e542fc13d9ba69e74f70a87636 /account.c
parente5e795dae28c7871a47040436454a456fb338820 (diff)
parentf9928cb319c2879a56b7280f09723b26035982d0 (diff)
Merging in 1.2.5.
Diffstat (limited to 'account.c')
-rw-r--r--account.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/account.c b/account.c
index 912cba6a..a844d229 100644
--- a/account.c
+++ b/account.c
@@ -1,7 +1,7 @@
/********************************************************************\
* BitlBee -- An IRC to other IM-networks gateway *
* *
- * Copyright 2002-2004 Wilmer van der Gaast and others *
+ * Copyright 2002-2010 Wilmer van der Gaast and others *
\********************************************************************/
/* Account management functions */
@@ -54,6 +54,8 @@ account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )
s = set_add( &a->set, "auto_reconnect", "true", set_eval_bool, a );
+ s = set_add( &a->set, "nick_source", "handle", NULL, a );
+
s = set_add( &a->set, "password", NULL, set_eval_account, a );
s->flags |= ACC_SET_NOSAVE | SET_NULL_OK;
@@ -68,7 +70,16 @@ account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )
if( prpl->init )
prpl->init( a );
- return( a );
+ s = set_add( &a->set, "away", NULL, set_eval_account, a );
+ s->flags |= SET_NULL_OK;
+
+ if( a->flags & ACC_FLAG_STATUS_MESSAGE )
+ {
+ s = set_add( &a->set, "status", NULL, set_eval_account, a );
+ s->flags |= SET_NULL_OK;
+ }
+
+ return a;
}
char *set_eval_account( set_t *set, char *value )
@@ -122,6 +133,21 @@ char *set_eval_account( set_t *set, char *value )
acc->auto_connect = bool2int( value );
return value;
}
+ else if( strcmp( set->key, "away" ) == 0 ||
+ strcmp( set->key, "status" ) == 0 )
+ {
+ if( acc->ic && acc->ic->flags & OPT_LOGGED_IN )
+ {
+ /* If we're currently on-line, set the var now already
+ (bit of a hack) and send an update. */
+ g_free( set->value );
+ set->value = g_strdup( value );
+
+ imc_away_send_update( acc->ic );
+ }
+
+ return value;
+ }
return SET_INVALID;
}
@@ -266,7 +292,7 @@ int account_reconnect_delay_parse( char *value, struct account_reconnect_delay *
/* A whole day seems like a sane "maximum maximum". */
p->max = 86400;
- /* Format: /[0-9]+([*+][0-9]+(<[0-9+]))/ */
+ /* Format: /[0-9]+([*+][0-9]+(<[0-9+])?)?/ */
while( *value && isdigit( *value ) )
p->start = p->start * 10 + *value++ - '0';