From a470a1a8901b25a226b49bebe63560a4220b886c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 3 Apr 2014 12:24:20 +0200 Subject: [PATCH] exec: kill all processes using an exec buffer that is being closed --- src/plugins/exec/exec-buffer.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/exec/exec-buffer.c b/src/plugins/exec/exec-buffer.c index 0ddbc8dbe..52c541ea5 100644 --- a/src/plugins/exec/exec-buffer.c +++ b/src/plugins/exec/exec-buffer.c @@ -72,9 +72,24 @@ exec_buffer_input_cb (void *data, struct t_gui_buffer *buffer, int exec_buffer_close_cb (void *data, struct t_gui_buffer *buffer) { + const char *full_name; + struct t_exec_cmd *ptr_exec_cmd; + /* make C compiler happy */ (void) data; - (void) buffer; + + /* kill any command whose output is on this buffer */ + full_name = weechat_buffer_get_string (buffer, "full_name"); + for (ptr_exec_cmd = exec_cmds; ptr_exec_cmd; + ptr_exec_cmd = ptr_exec_cmd->next_cmd) + { + if (ptr_exec_cmd->hook + && ptr_exec_cmd->buffer_full_name + && (strcmp (ptr_exec_cmd->buffer_full_name, full_name) == 0)) + { + weechat_hook_set (ptr_exec_cmd->hook, "signal", "kill"); + } + } return WEECHAT_RC_OK; }