forked from lix-project/lix
libutil: don't save cwd fd, use path instead
Saving the cwd fd didn't actually work well -- prior to this commit, the following would happen: : ~/w/vc/nix ; doas outputs/out/bin/nix --experimental-features 'nix-command flakes' run nixpkgs#coreutils -- --coreutils-prog=pwd pwd: couldn't find directory entry in ‘../../../..’ with matching i-node : ~/w/vc/nix ; doas outputs/out/bin/nix --experimental-features 'nix-command flakes' develop -c pwd pwd: couldn't find directory entry in ‘../../../..’ with matching i-node
This commit is contained in:
parent
10b9c1b2b2
commit
56009b2639
|
@ -1709,13 +1709,11 @@ void restoreMountNamespace()
|
|||
{
|
||||
#if __linux__
|
||||
try {
|
||||
AutoCloseFD fdSavedCwd = open("/proc/self/cwd", O_RDONLY);
|
||||
if (!fdSavedCwd) {
|
||||
throw SysError("saving cwd");
|
||||
}
|
||||
auto savedCwd = absPath(".");
|
||||
|
||||
if (fdSavedMountNamespace && setns(fdSavedMountNamespace.get(), CLONE_NEWNS) == -1)
|
||||
throw SysError("restoring parent mount namespace");
|
||||
if (fdSavedCwd && fchdir(fdSavedCwd.get()) == -1) {
|
||||
if (chdir(savedCwd.c_str()) == -1) {
|
||||
throw SysError("restoring cwd");
|
||||
}
|
||||
} catch (Error & e) {
|
||||
|
|
Loading…
Reference in a new issue