mirror of
https://github.com/tmux/tmux.git
synced 2026-10-14 23:15:50 +00:00
Add a utmp option if built with utempter, GitHub issue 5657 from Damian Nowak.
This commit is contained in:
45
window.c
45
window.c
@@ -1579,6 +1579,46 @@ window_pane_scrollbar_redraw_visibility(struct window_pane *wp)
|
||||
server_redraw_window(wp->window);
|
||||
}
|
||||
|
||||
#ifdef HAVE_UTEMPTER
|
||||
void
|
||||
window_pane_utmp_add(struct window_pane *wp)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
if (wp->fd == -1 ||
|
||||
(wp->flags & (PANE_EMPTY|PANE_EXITED|PANE_UTMP)) ||
|
||||
!options_get_number(global_options, "utmp"))
|
||||
return;
|
||||
xasprintf(&cp, "tmux(%lu).%%%u", (long)getpid(), wp->id);
|
||||
utempter_add_record(wp->fd, cp);
|
||||
kill(getpid(), SIGCHLD);
|
||||
wp->flags |= PANE_UTMP;
|
||||
free(cp);
|
||||
}
|
||||
#else
|
||||
void
|
||||
window_pane_utmp_add(__unused struct window_pane *wp)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UTEMPTER
|
||||
void
|
||||
window_pane_utmp_remove(struct window_pane *wp)
|
||||
{
|
||||
if (~wp->flags & PANE_UTMP)
|
||||
return;
|
||||
utempter_remove_record(wp->fd);
|
||||
kill(getpid(), SIGCHLD);
|
||||
wp->flags &= ~PANE_UTMP;
|
||||
}
|
||||
#else
|
||||
void
|
||||
window_pane_utmp_remove(__unused struct window_pane *wp)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
window_pane_destroy(struct window_pane *wp)
|
||||
{
|
||||
@@ -1597,10 +1637,7 @@ window_pane_destroy(struct window_pane *wp)
|
||||
wp->event = NULL;
|
||||
}
|
||||
if (wp->fd != -1) {
|
||||
#ifdef HAVE_UTEMPTER
|
||||
utempter_remove_record(wp->fd);
|
||||
kill(getpid(), SIGCHLD);
|
||||
#endif
|
||||
window_pane_utmp_remove(wp);
|
||||
close(wp->fd);
|
||||
wp->fd = -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user