1
0
mirror of https://github.com/tmux/tmux.git synced 2025-03-30 03:18:51 +00:00

Preserve exit status from run-shell and pass to the client.

This commit is contained in:
nicm 2020-03-21 13:15:38 +00:00
parent 9a55f65702
commit 5aeab5ab40

View File

@ -160,6 +160,7 @@ cmd_run_shell_callback(struct job *job)
{ {
struct cmd_run_shell_data *cdata = job_get_data(job); struct cmd_run_shell_data *cdata = job_get_data(job);
struct bufferevent *event = job_get_event(job); struct bufferevent *event = job_get_event(job);
struct cmdq_item *item = cdata->item;
char *cmd = cdata->cmd, *msg = NULL, *line; char *cmd = cdata->cmd, *msg = NULL, *line;
size_t size; size_t size;
int retcode, status; int retcode, status;
@ -189,13 +190,17 @@ cmd_run_shell_callback(struct job *job)
} else if (WIFSIGNALED(status)) { } else if (WIFSIGNALED(status)) {
retcode = WTERMSIG(status); retcode = WTERMSIG(status);
xasprintf(&msg, "'%s' terminated by signal %d", cmd, retcode); xasprintf(&msg, "'%s' terminated by signal %d", cmd, retcode);
retcode += 128;
} }
if (msg != NULL) if (msg != NULL)
cmd_run_shell_print(job, msg); cmd_run_shell_print(job, msg);
free(msg); free(msg);
if (cdata->item != NULL) if (item != NULL) {
cmdq_continue(cdata->item); if (item->client != NULL && item->client->session == NULL)
item->client->retval = retcode;
cmdq_continue(item);
}
} }
static void static void