Added time, size and level setting types. Breaks some settings - I'll add

automatic converter to these settings later. Meanwhile you CVS users can
fix your config files yourself :)

Time settings allow using "days", "hours", "minutes", "seconds" and
"milliseconds" or several of their abbreviations. For example "5d 4h
5msecs".

Size settings allow using "gbytes", "mbytes", "kbytes" and "bytes" or their
abbrevations. For example "5MB".

Level settings are currently handled pretty much the way they were before.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3080 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2002-12-28 17:54:13 +00:00 committed by cras
commit bd6fe052bc
35 changed files with 526 additions and 186 deletions

View file

@ -736,7 +736,7 @@ static int knockout_timeout(void)
return 1;
}
/* SYNTAX: KNOCKOUT [<seconds>] <nicks> <reason> */
/* SYNTAX: KNOCKOUT [<time>] <nicks> <reason> */
static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
IRC_CHANNEL_REC *channel)
{
@ -753,20 +753,21 @@ static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
if (!channel->wholist)
cmd_return_error(CMDERR_CHAN_NOT_SYNCED);
if (is_numeric(data, ' ')) {
if (i_isdigit(*data)) {
/* first argument is the timeout */
if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST,
&timeoutstr, &nicks, &reason))
return;
timeleft = atoi(timeoutstr);
if (!parse_time_interval(timeoutstr, &timeleft))
cmd_param_error(CMDERR_INVALID_TIME);
} else {
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST,
&nicks, &reason))
return;
timeleft = 0;
timeleft = settings_get_time("knockout_time");
}
if (timeleft == 0) timeleft = settings_get_int("knockout_time");
if (*nicks == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
nicklist = g_strsplit(nicks, ",", -1);
@ -797,7 +798,7 @@ static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
else {
/* create knockout record */
rec = g_new(KNOCKOUT_REC, 1);
rec->unban_time = time(NULL)+timeleft;
rec->unban_time = time(NULL)+timeleft/1000;
rec->channel = channel;
rec->ban = banmasks;
@ -916,7 +917,7 @@ void irc_commands_init(void)
tmpstr = g_string_new(NULL);
settings_add_str("misc", "part_message", "");
settings_add_int("misc", "knockout_time", 300);
settings_add_time("misc", "knockout_time", "5min");
settings_add_str("misc", "wall_format", "[Wall/$0] $1-");
settings_add_bool("misc", "kick_first_on_kickban", FALSE);

View file

@ -88,7 +88,7 @@ static void event_nick_collision(IRC_SERVER_REC *server, const char *data)
don't connect to the server more than once in every 10 seconds. */
new_connect = server->connect_time+10 -
settings_get_int("server_reconnect_time");
settings_get_time("server_reconnect_time")/1000;
if (server->connect_time > new_connect)
server->connect_time = new_connect;

View file

@ -46,7 +46,7 @@
#define DEFAULT_MAX_MSGS 1
#define DEFAULT_USER_MODE "+i"
#define DEFAULT_CMD_QUEUE_SPEED 2200
#define DEFAULT_CMD_QUEUE_SPEED "2200msec"
#define DEFAULT_CMDS_MAX_AT_ONCE 5
#define DEFAULT_MAX_QUERY_CHANS 1 /* more and more IRC networks are using stupid ircds.. */
@ -180,7 +180,7 @@ SERVER_REC *irc_server_init_connect(SERVER_CONNECT_REC *conn)
}
server->cmd_queue_speed = ircconn->cmd_queue_speed > 0 ?
ircconn->cmd_queue_speed : settings_get_int("cmd_queue_speed");
ircconn->cmd_queue_speed : settings_get_time("cmd_queue_speed");
server->max_cmds_at_once = ircconn->max_cmds_at_once > 0 ?
ircconn->max_cmds_at_once : settings_get_int("cmds_max_at_once");
server->max_query_chans = ircconn->max_query_chans > 0 ?
@ -587,7 +587,7 @@ static void event_empty(void)
void irc_servers_init(void)
{
settings_add_str("misc", "usermode", DEFAULT_USER_MODE);
settings_add_int("flood", "cmd_queue_speed", DEFAULT_CMD_QUEUE_SPEED);
settings_add_time("flood", "cmd_queue_speed", DEFAULT_CMD_QUEUE_SPEED);
settings_add_int("flood", "cmds_max_at_once", DEFAULT_CMDS_MAX_AT_ONCE);
cmd_tag = g_timeout_add(500, (GSourceFunc) servers_cmd_timeout, NULL);

View file

@ -88,8 +88,8 @@ static int sig_check_lag(void)
time_t now;
int lag_check_time, max_lag;
lag_check_time = settings_get_int("lag_check_time");
max_lag = settings_get_int("lag_max_before_disconnect");
lag_check_time = settings_get_time("lag_check_time")/1000;
max_lag = settings_get_time("lag_max_before_disconnect")/1000;
if (lag_check_time <= 0)
return 1;
@ -122,8 +122,8 @@ static int sig_check_lag(void)
void lag_init(void)
{
settings_add_int("misc", "lag_check_time", 60);
settings_add_int("misc", "lag_max_before_disconnect", 300);
settings_add_time("misc", "lag_check_time", "1min");
settings_add_time("misc", "lag_max_before_disconnect", "5min");
timeout_tag = g_timeout_add(1000, (GSourceFunc) sig_check_lag, NULL);
signal_add_first("lag pong", (SIGNAL_FUNC) lag_event_pong);