* shared.h (class pinfo): New members root' and rootlen'.

* syscalls.cc (chroot): Set new root for process.
        * path.cc (getcwd_inner): Add parameter to force use of
        new root from chroot() call.
        (ischrootpath): New macro.
        (normalize_posix_path): Care for changed root dir.
        (normalize_win32_path): Ditto.
        (getcwd_inner): Ditto.
        (chdir): Eliminate trailing path component consisting
        entirely of dots.
        * fork.cc (fork): Copy pinfo members regarding chroot().
        * spawn.cc (_spawnve): Ditto.
        * dir.cc (opendir): Don't use computed win32 path if
        chroot() took place.
This commit is contained in:
Corinna Vinschen
2000-07-19 20:14:24 +00:00
parent 7a2fc2a415
commit a67f4165ae
7 changed files with 148 additions and 16 deletions

View File

@@ -67,7 +67,8 @@ opendir (const char *dirname)
goto failed;
}
if (stat (real_dirname.get_win32 (), &statbuf) == -1)
if (stat (myself->rootlen ? dirname : real_dirname.get_win32 (),
&statbuf) == -1)
goto failed;
if (!(statbuf.st_mode & S_IFDIR))