summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWouter Coekaerts <coekie@irssi.org>2005-01-03 18:09:45 +0000
committercoekie <coekie@dbcabf3a-b0e7-0310-adc4-f8d773084564>2005-01-03 18:09:45 +0000
commit1074f0377ed8c89bb81e0b0fa6c84c6075a6f663 (patch)
tree7bc21a8907e8b8f5820769b0d0b7f7e5b1f083fe
parentdf1e690a1e7010c5eb152ac3a125aa194890a8ff (diff)
downloadirssi-1074f0377ed8c89bb81e0b0fa6c84c6075a6f663.zip
Fix recursive ^ prefixed commands blocking all output (Bug 159)
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3695 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r--src/fe-common/core/fe-core-commands.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/fe-common/core/fe-core-commands.c b/src/fe-common/core/fe-core-commands.c
index 13ddc8ac..dd788a91 100644
--- a/src/fe-common/core/fe-core-commands.c
+++ b/src/fe-common/core/fe-core-commands.c
@@ -216,8 +216,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);
@@ -226,8 +226,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);
@@ -317,7 +316,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));