From 996343fc1d572b26f3c90a5b1295903bfd15368f Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Tue, 21 Dec 2004 19:35:09 +0000 Subject: Added server_command_delay config option (delay in seconds after startup command) --- src/common/command.c | 2 +- src/common/weechat.c | 2 +- src/common/weeconfig.c | 8 +++++++- src/irc/irc-recv.c | 4 ++++ src/irc/irc-server.c | 6 ++++-- src/irc/irc.h | 5 +++-- 6 files changed, 20 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/common/command.c b/src/common/command.c index 23a5226f8..1c2af058c 100644 --- a/src/common/command.c +++ b/src/common/command.c @@ -1607,7 +1607,7 @@ weechat_cmd_server (int argc, char **argv) server.address, server.port, server.password, server.nick1, server.nick2, server.nick3, server.username, server.realname, - server.command, server.autojoin, 1); + server.command, 1, server.autojoin, 1); if (new_server) { irc_display_prefix (NULL, PREFIX_INFO); diff --git a/src/common/weechat.c b/src/common/weechat.c index 9c0ef260f..c22d8201e 100644 --- a/src/common/weechat.c +++ b/src/common/weechat.c @@ -232,7 +232,7 @@ wee_parse_args (int argc, char *argv[]) server_tmp.address, server_tmp.port, server_tmp.password, server_tmp.nick1, server_tmp.nick2, server_tmp.nick3, - NULL, NULL, NULL, server_tmp.autojoin, 1)) + NULL, NULL, NULL, 0, server_tmp.autojoin, 1)) fprintf (stderr, _("%s unable to create server ('%s'), ignored\n"), WEECHAT_WARNING, argv[i]); server_destroy (&server_tmp); diff --git a/src/common/weeconfig.c b/src/common/weeconfig.c index 38bf40427..7569b7079 100644 --- a/src/common/weeconfig.c +++ b/src/common/weeconfig.c @@ -570,6 +570,10 @@ t_config_option weechat_options_server[] = N_("first command to run when connected to server"), OPTION_TYPE_STRING, 0, 0, 0, "", NULL, NULL, &(cfg_server.command), NULL }, + { "server_command_delay", N_("delay (in seconds) after command was executed"), + N_("delay (in seconds) after command was executed (example: give some time for authentication)"), + OPTION_TYPE_INT, 0, 3600, 1, + NULL, NULL, &(cfg_server.command_delay), NULL, NULL }, { "server_autojoin", N_("list of channels to join when connected to server"), N_("comma separated list of channels to join when connected to server"), OPTION_TYPE_STRING, 0, 0, 0, @@ -814,7 +818,8 @@ config_allocate_server (char *filename, int line_number) cfg_server.autoconnect, 0, cfg_server.address, cfg_server.port, cfg_server.password, cfg_server.nick1, cfg_server.nick2, cfg_server.nick3, cfg_server.username, cfg_server.realname, - cfg_server.command, cfg_server.autojoin, cfg_server.autorejoin)) + cfg_server.command, cfg_server.command_delay, cfg_server.autojoin, + cfg_server.autorejoin)) { server_free_all (); gui_printf (NULL, @@ -1380,6 +1385,7 @@ config_write (char *config_name) fprintf (file, "server_realname=%s\n", ptr_server->realname); fprintf (file, "server_command=%s\n", (ptr_server->command) ? ptr_server->command : ""); + fprintf (file, "server_command_delay=%d\n", ptr_server->command_delay); fprintf (file, "server_autojoin=%s\n", (ptr_server->autojoin) ? ptr_server->autojoin : ""); fprintf (file, "server_autorejoin=%s\n", diff --git a/src/irc/irc-recv.c b/src/irc/irc-recv.c index c328cbcbc..1edfea76c 100644 --- a/src/irc/irc-recv.c +++ b/src/irc/irc-recv.c @@ -1500,7 +1500,11 @@ irc_cmd_recv_004 (t_irc_server *server, char *host, char *arguments) /* execute command once connected */ if (server->command && server->command[0]) + { user_command(server, server->command); + if (server->command_delay > 0) + sleep (server->command_delay); + } /* autojoin */ if (server->autojoin && server->autojoin[0]) diff --git a/src/irc/irc-server.c b/src/irc/irc-server.c index b02111cc0..59c03bfa8 100644 --- a/src/irc/irc-server.c +++ b/src/irc/irc-server.c @@ -70,6 +70,7 @@ server_init (t_irc_server *server) server->username = NULL; server->realname = NULL; server->command = NULL; + server->command_delay = 1; server->autojoin = NULL; server->nick = NULL; server->is_connected = 0; @@ -292,8 +293,8 @@ server_free_all () t_irc_server * server_new (char *name, int autoconnect, int command_line, char *address, int port, char *password, char *nick1, char *nick2, char *nick3, - char *username, char *realname, char *command, char *autojoin, - int autorejoin) + char *username, char *realname, char *command, int command_delay, + char *autojoin, int autorejoin) { t_irc_server *new_server; @@ -328,6 +329,7 @@ server_new (char *name, int autoconnect, int command_line, char *address, (realname) ? strdup (realname) : strdup ("realname"); new_server->command = (command) ? strdup (command) : NULL; + new_server->command_delay = command_delay; new_server->autojoin = (autojoin) ? strdup (autojoin) : NULL; new_server->autorejoin = autorejoin; diff --git a/src/irc/irc.h b/src/irc/irc.h index 4f75db621..dbbcce649 100644 --- a/src/irc/irc.h +++ b/src/irc/irc.h @@ -126,6 +126,7 @@ struct t_irc_server char *username; /* user name */ char *realname; /* real name */ char *command; /* command to run once connected */ + int command_delay; /* delay after execution of command */ char *autojoin; /* channels to automatically join */ int autorejoin; /* auto rejoin channels when kicked */ @@ -214,8 +215,8 @@ extern void server_destroy (t_irc_server *); extern void server_free (t_irc_server *); extern void server_free_all (); extern t_irc_server *server_new (char *, int, int, char *, int, char *, char *, - char *, char *, char *, char *, char *, char *, - int); + char *, char *, char *, char *, char *, int, + char *, int); extern int server_send (t_irc_server *, char *, int); extern void server_sendf (t_irc_server *, char *, ...); extern void server_recv (t_irc_server *); -- cgit v1.2.3