From 244edc89852ef4c0338438e94c7f3801f289f83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 4 Oct 2001 22:44:26 +0000 Subject: [PATCH] Add chroot call. Implements feature #459267. --- Doc/lib/libos.tex | 6 ++++++ Modules/posixmodule.c | 15 +++++++++++++++ configure | 4 ++-- configure.in | 2 +- pyconfig.h.in | 3 +++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex index 85355a5ee9c..f8804e812a7 100644 --- a/Doc/lib/libos.tex +++ b/Doc/lib/libos.tex @@ -577,6 +577,12 @@ Return a string representing the current working directory. Availability: Macintosh, \UNIX{}, Windows. \end{funcdesc} +\begin{funcdesc}{chroot}{path} +Change the root directory of the current process to \var{path}. +Availability: \UNIX{}. +\versionadded{2.2} +\end{funcdesc} + \begin{funcdesc}{chmod}{path, mode} Change the mode of \var{path} to the numeric \var{mode}. Availability: \UNIX{}, Windows. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 0b4b76562c5..c21f7f85296 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -724,6 +724,18 @@ posix_chmod(PyObject *self, PyObject *args) } +#ifdef HAVE_CHROOT +static char posix_chroot__doc__[] = +"chroot(path) -> None\n\ +Change root directory to path."; + +static PyObject * +posix_chroot(PyObject *self, PyObject *args) +{ + return posix_1str(args, "et:chroot", chroot); +} +#endif + #ifdef HAVE_FSYNC static char posix_fsync__doc__[] = "fsync(fildes) -> None\n\ @@ -5336,6 +5348,9 @@ static PyMethodDef posix_methods[] = { #ifdef HAVE_CHOWN {"chown", posix_chown, METH_VARARGS, posix_chown__doc__}, #endif /* HAVE_CHOWN */ +#ifdef HAVE_CHROOT + {"chroot", posix_chroot, METH_VARARGS, posix_chroot__doc__}, +#endif #ifdef HAVE_CTERMID {"ctermid", posix_ctermid, METH_VARARGS, posix_ctermid__doc__}, #endif diff --git a/configure b/configure index d4af9b2b6c5..51384dff02d 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 1.261 +# From configure.in Revision: 1.262 # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 @@ -4683,7 +4683,7 @@ fi echo "$ac_t""MACHDEP_OBJS" 1>&6 # checks for library functions -for ac_func in alarm chown clock confstr ctermid ctermid_r execv \ +for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \ flock fork fsync fdatasync fpathconf ftime ftruncate \ gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ hstrerror inet_pton kill link lstat mkfifo mktime mremap \ diff --git a/configure.in b/configure.in index d8fffc0a553..c190b70600e 100644 --- a/configure.in +++ b/configure.in @@ -1316,7 +1316,7 @@ fi AC_MSG_RESULT(MACHDEP_OBJS) # checks for library functions -AC_CHECK_FUNCS(alarm chown clock confstr ctermid ctermid_r execv \ +AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \ flock fork fsync fdatasync fpathconf ftime ftruncate \ gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ hstrerror inet_pton kill link lstat mkfifo mktime mremap \ diff --git a/pyconfig.h.in b/pyconfig.h.in index 00dea7503df..e3ce90cd9a6 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -321,6 +321,9 @@ /* Define if you have the chown function. */ #undef HAVE_CHOWN +/* Define if you have the chroot function. */ +#undef HAVE_CHROOT + /* Define if you have the clock function. */ #undef HAVE_CLOCK