X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Ffe-common%2Fcore%2Ffe-core-commands.c;h=69bab326283165f03ade7d00c87dcbccd8cec981;hb=63ca577177f9f5db8e553372a9793b0c85f10715;hp=b599c8109cbbb79d2c25367f41bd8375957356a5;hpb=60c165f23f8d5553bd8b4fd43366fbf5f24c2832;p=crypto.git diff --git a/apps/irssi/src/fe-common/core/fe-core-commands.c b/apps/irssi/src/fe-common/core/fe-core-commands.c index b599c810..69bab326 100644 --- a/apps/irssi/src/fe-common/core/fe-core-commands.c +++ b/apps/irssi/src/fe-common/core/fe-core-commands.c @@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "core.h" #include "module.h" #include "module-formats.h" #include "signals.h" @@ -47,7 +48,11 @@ static int ret_texts[] = { TXT_CHAN_NOT_FOUND, TXT_CHAN_NOT_SYNCED, TXT_ILLEGAL_PROTO, - TXT_NOT_GOOD_IDEA + TXT_NOT_GOOD_IDEA, + TXT_INVALID_TIME, + TXT_INVALID_CHARSET, + TXT_EVAL_MAX_RECURSE, + TXT_PROGRAM_NOT_FOUND }; int command_hide_output; @@ -190,6 +195,22 @@ static void cmd_join(const char *data, SERVER_REC *server) cmd_params_free(free_arg); } +/* SYNTAX: UPTIME */ +static void cmd_uptime(char *data) +{ + time_t uptime; + + g_return_if_fail(data != NULL); + + if (*data == '\0') { + uptime = time(NULL) - client_start_time; + printtext(NULL, NULL, MSGLEVEL_CLIENTNOTICE, + "Uptime: %ldd %ldh %ldm %lds", + uptime/3600/24, uptime/3600%24, + uptime/60%60, uptime%60); + } +} + static void sig_stop(void) { signal_stop(); @@ -214,8 +235,8 @@ static void event_command(const char *data) cmdchar = *data == '\0' ? NULL : strchr(settings_get_str("cmdchars"), *data); if (cmdchar != NULL && (data[1] == '^' || - (data[1] == *cmdchar && data[2] == '^'))) { - command_hide_output = TRUE; + (data[1] == *cmdchar && data[2] == '^')) + && !command_hide_output++) { signal_add_first("print starting", (SIGNAL_FUNC) sig_stop); signal_add_first("print format", (SIGNAL_FUNC) sig_stop); signal_add_first("print text", (SIGNAL_FUNC) sig_stop); @@ -224,8 +245,7 @@ static void event_command(const char *data) static void event_command_last(const char *data) { - if (command_hide_output) { - command_hide_output = FALSE; + if (command_hide_output && !--command_hide_output) { signal_remove("print starting", (SIGNAL_FUNC) sig_stop); signal_remove("print format", (SIGNAL_FUNC) sig_stop); signal_remove("print text", (SIGNAL_FUNC) sig_stop); @@ -315,7 +335,7 @@ static void event_list_subcommands(const char *command) void fe_core_commands_init(void) { - command_hide_output = FALSE; + command_hide_output = 0; command_cmd = FALSE; memset(&time_command_now, 0, sizeof(GTimeVal)); @@ -324,6 +344,7 @@ void fe_core_commands_init(void) command_bind("version", NULL, (SIGNAL_FUNC) cmd_version); command_bind("cat", NULL, (SIGNAL_FUNC) cmd_cat); command_bind("beep", NULL, (SIGNAL_FUNC) cmd_beep); + command_bind("uptime", NULL, (SIGNAL_FUNC) cmd_uptime); command_bind_first("nick", NULL, (SIGNAL_FUNC) cmd_nick); command_bind_first("join", NULL, (SIGNAL_FUNC) cmd_join); @@ -342,6 +363,7 @@ void fe_core_commands_deinit(void) command_unbind("version", (SIGNAL_FUNC) cmd_version); command_unbind("cat", (SIGNAL_FUNC) cmd_cat); command_unbind("beep", (SIGNAL_FUNC) cmd_beep); + command_unbind("uptime", (SIGNAL_FUNC) cmd_uptime); command_unbind("nick", (SIGNAL_FUNC) cmd_nick); command_unbind("join", (SIGNAL_FUNC) cmd_join);