diff options
author | nicm <nicm> | 2014-12-09 19:23:35 +0000 |
---|---|---|
committer | nicm <nicm> | 2014-12-09 19:23:35 +0000 |
commit | 7a0c94b28ab96d32dcbd98cfad54662f67875332 (patch) | |
tree | e3b2d6981f60a3b039698aa119a1637e20a5450d | |
parent | 54ca7b230d08aae0b2028f3f82a259963017c167 (diff) | |
download | rtmux-7a0c94b28ab96d32dcbd98cfad54662f67875332.tar.gz rtmux-7a0c94b28ab96d32dcbd98cfad54662f67875332.tar.bz2 rtmux-7a0c94b28ab96d32dcbd98cfad54662f67875332.zip |
Add pane_dead_status for exit status of dead panes.
-rw-r--r-- | format.c | 8 | ||||
-rw-r--r-- | server.c | 1 | ||||
-rw-r--r-- | tmux.1 | 1 | ||||
-rw-r--r-- | tmux.h | 1 |
4 files changed, 10 insertions, 1 deletions
@@ -17,6 +17,7 @@ */ #include <sys/types.h> +#include <sys/wait.h> #include <ctype.h> #include <errno.h> @@ -581,6 +582,7 @@ format_window_pane(struct format_tree *ft, struct window_pane *wp) unsigned long long size; u_int i, idx; char *cmd; + int status; if (ft->w == NULL) ft->w = wp->window; @@ -604,9 +606,13 @@ format_window_pane(struct format_tree *ft, struct window_pane *wp) format_add(ft, "pane_title", "%s", wp->base.title); format_add(ft, "pane_id", "%%%u", wp->id); format_add(ft, "pane_active", "%d", wp == wp->window->active); - format_add(ft, "pane_dead", "%d", wp->fd == -1); format_add(ft, "pane_input_off", "%d", !!(wp->flags & PANE_INPUTOFF)); + status = wp->status; + if (wp->fd == -1 && WIFEXITED(status)) + format_add(ft, "pane_dead_status", "%d", WEXITSTATUS(status)); + format_add(ft, "pane_dead", "%d", wp->fd == -1); + if (window_pane_visible(wp)) { format_add(ft, "pane_left", "%u", wp->xoff); format_add(ft, "pane_top", "%u", wp->yoff); @@ -441,6 +441,7 @@ server_child_exited(pid_t pid, int status) continue; TAILQ_FOREACH(wp, &w->panes, entry) { if (wp->pid == pid) { + wp->status = status; server_destroy_pane(wp); break; } @@ -3117,6 +3117,7 @@ The following variables are available, where appropriate: .It Li "pane_bottom" Ta "" Ta "Bottom of pane" .It Li "pane_current_command" Ta "" Ta "Current command if available" .It Li "pane_dead" Ta "" Ta "1 if pane is dead" +.It Li "pane_dead_status" Ta "" Ta "Exit status of process in dead pane" .It Li "pane_height" Ta "" Ta "Height of pane" .It Li "pane_id" Ta "#D" Ta "Unique pane ID" .It Li "pane_in_mode" Ta "" Ta "If pane is in a mode" @@ -890,6 +890,7 @@ struct window_pane { pid_t pid; char tty[TTY_NAME_MAX]; + int status; u_int changes; struct event changes_timer; |