mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-04 07:15:29 -04:00
term: don't shutdown terminal when PTY is closed, unless --pty was used
Unless --pty has been used, we do *not* want to shutdown the terminal when the PTY is closed by the client application; we want to wait for the client application to actually terminate. This was the behavior before the --pty patch. This was changed in the --pty patch, since then, we don't *have* a client application. That is, foot has not forked+exec:ed anything. The only way to trigger a shutdown (from the client side) is to close the PTY. This patch restores the old behavior, when --pty is *not* used. Closes #1666
This commit is contained in:
parent
88a3b54ca3
commit
c7848c4e75
2 changed files with 18 additions and 1 deletions
|
|
@ -58,6 +58,11 @@
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
* Log-level not respected by syslog.
|
* Log-level not respected by syslog.
|
||||||
|
* Regression: terminal shutting down when the PTY is closed by the
|
||||||
|
client application, which may be earlier than when the client
|
||||||
|
application exits ([#1666][1666]).
|
||||||
|
|
||||||
|
[1666]: https://codeberg.org/dnkl/foot/issues/1666
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
||||||
14
terminal.c
14
terminal.c
|
|
@ -364,8 +364,20 @@ fdm_ptmx(struct fdm *fdm, int fd, int events, void *data)
|
||||||
del_utmp_record(term->conf, term->reaper, term->ptmx);
|
del_utmp_record(term->conf, term->reaper, term->ptmx);
|
||||||
fdm_del(fdm, fd);
|
fdm_del(fdm, fd);
|
||||||
term->ptmx = -1;
|
term->ptmx = -1;
|
||||||
if (!term->conf->hold_at_exit)
|
|
||||||
|
/*
|
||||||
|
* Normally, we do *not* want to shutdown when the PTY is
|
||||||
|
* closed. Instead, we want to wait for the client application
|
||||||
|
* to exit.
|
||||||
|
*
|
||||||
|
* However, when we're using a pre-existing PTY (the --pty
|
||||||
|
* option), there _is_ no client application. That is, foot
|
||||||
|
* does *not* fork+exec anything, and thus the only way to
|
||||||
|
* shutdown is to wait for the PTY to be closed.
|
||||||
|
*/
|
||||||
|
if (term->slave < 0 && !term->conf->hold_at_exit) {
|
||||||
term_shutdown(term);
|
term_shutdown(term);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue