diff options
Diffstat (limited to 'window.c')
-rw-r--r-- | window.c | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -29,8 +29,6 @@ #include <termios.h> #include <time.h> #include <unistd.h> -#include <util.h> -#include <vis.h> #include "tmux.h" @@ -858,6 +856,9 @@ window_pane_destroy(struct window_pane *wp) free(wp->searchstr); if (wp->fd != -1) { +#ifdef HAVE_UTEMPTER + utempter_remove_record(wp->fd); +#endif bufferevent_free(wp->event); close(wp->fd); } @@ -894,6 +895,9 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv, char *argv0, *cmd, **argvp; const char *ptr, *first, *home; struct termios tio2; +#ifdef HAVE_UTEMPTER + char s[32]; +#endif int i; sigset_t set, oldset; @@ -954,6 +958,9 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv, if (tio != NULL) memcpy(tio2.c_cc, tio->c_cc, sizeof tio2.c_cc); tio2.c_cc[VERASE] = '\177'; +#ifdef IUTF8 + tio2.c_iflag |= IUTF8; +#endif if (tcsetattr(STDIN_FILENO, TCSANOW, &tio2) != 0) fatal("tcgetattr failed"); @@ -999,6 +1006,12 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv, fatal("execl failed"); } +#ifdef HAVE_UTEMPTER + xsnprintf(s, sizeof s, "tmux(%lu).%%%u", (long) getpid(), wp->id); + utempter_add_record(wp->fd, s); + kill(getpid(), SIGCHLD); +#endif + sigprocmask(SIG_SETMASK, &oldset, NULL); setblocking(wp->fd, 0); |