diff --git a/CHANGELOG.md b/CHANGELOG.md index a8f6e059..f25814b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,8 +61,13 @@ * config: ARGB color values now default to opaque, rather than transparent, when the alpha component has been left out ([#1526][1526]). +* The `foot` process now changes CWD to `/` after spawning the shell + process. This ensures the terminal itself does not "lock" a + directory; for example, preventing a mount point from being + unmounted ([#1528][1528]). [1526]: https://codeberg.org/dnkl/foot/issues/1526 +[1528]: https://codeberg.org/dnkl/foot/issues/1528 ### Deprecated diff --git a/slave.c b/slave.c index ecfce7e6..1184d0c2 100644 --- a/slave.c +++ b/slave.c @@ -401,6 +401,14 @@ slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv, break; default: { + + /* + * Don't stay in CWD, since it may be an ephemeral path. For + * example, it may be a mount point of, say, a thumb drive. Us + * keeping it open will prevent the user from unmounting it. + */ + chdir("/"); + close(fork_pipe[1]); /* Close write end */ LOG_DBG("slave has PID %d", pid);