aboutsummaryrefslogtreecommitdiffstats
path: root/account.c
diff options
context:
space:
mode:
Diffstat (limited to 'account.c')
-rw-r--r--account.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/account.c b/account.c
index 2c6e1069..cfe04c40 100644
--- a/account.c
+++ b/account.c
@@ -233,3 +233,39 @@ void account_off( irc_t *irc, account_t *a )
cancel_auto_reconnect( a );
}
}
+
+char *set_eval_account_reconnect_delay( set_t *set, char *value )
+{
+ int start;
+ char op;
+ int step;
+
+ if( sscanf( value, "%d%c%d", &start, &op, &step ) == 3 &&
+ step > 0 && ( op == '+' || op == '*' ) )
+ return value;
+ else
+ return set_eval_int( set, value );
+}
+
+int account_reconnect_delay( account_t *a )
+{
+ char *setting = set_getstr( &a->irc->set, "auto_reconnect_delay" );
+ int start, step;
+ char op;
+
+ if( sscanf( setting, "%d%c%d", &start, &op, &step ) == 3 && step > 0 )
+ {
+ if( a->auto_reconnect_delay == 0 )
+ return a->auto_reconnect_delay = start;
+ else if( op == '+' )
+ return a->auto_reconnect_delay += step;
+ else if( op == '*' )
+ return a->auto_reconnect_delay *= step;
+ }
+ else if( sscanf( setting, "%d", &start ) == 1 )
+ {
+ return a->auto_reconnect_delay = start;
+ }
+
+ return 0;
+}