summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2000-07-13 01:26:58 (GMT)
committerAndrew M. Kuchling <amk@amk.ca>2000-07-13 01:26:58 (GMT)
commit8d2f2b2db21bddfad17a0a52b4fdded558adf7fb (patch)
treedaa866d3736fed70a600813a475a86b8c75418f1 /Modules
parent4d5d5bf5ae26fe820301ad175560192af372716c (diff)
downloadcpython-8d2f2b2db21bddfad17a0a52b4fdded558adf7fb.zip
cpython-8d2f2b2db21bddfad17a0a52b4fdded558adf7fb.tar.gz
cpython-8d2f2b2db21bddfad17a0a52b4fdded558adf7fb.tar.bz2
From Sam Rushing's Medusa, via SF patch #100858: add & document
os.seteuid(), os.setegid(), os.setreuid(), os.setregid().
Diffstat (limited to 'Modules')
-rw-r--r--Modules/posixmodule.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index d879837..5b4a867 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2618,6 +2618,82 @@ posix_setuid(PyObject *self, PyObject *args)
#endif /* HAVE_SETUID */
+#ifdef HAVE_SETEUID
+static char posix_seteuid__doc__[] =
+"seteuid(uid) -> None\n\
+Set the current process's effective user id.";
+static PyObject *
+posix_seteuid (PyObject *self, PyObject *args)
+{
+ int euid;
+ if (!PyArg_ParseTuple(args, "i", &euid)) {
+ return NULL;
+ } else if (seteuid(euid) < 0) {
+ return posix_error();
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+}
+#endif /* HAVE_SETEUID */
+
+#ifdef HAVE_SETEGID
+static char posix_setegid__doc__[] =
+"setegid(gid) -> None\n\
+Set the current process's effective group id.";
+static PyObject *
+posix_setegid (PyObject *self, PyObject *args)
+{
+ int egid;
+ if (!PyArg_ParseTuple(args, "i", &egid)) {
+ return NULL;
+ } else if (setegid(egid) < 0) {
+ return posix_error();
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+}
+#endif /* HAVE_SETEGID */
+
+#ifdef HAVE_SETREUID
+static char posix_setreuid__doc__[] =
+"seteuid(ruid, euid) -> None\n\
+Set the current process's real and effective user ids.";
+static PyObject *
+posix_setreuid (PyObject *self, PyObject *args)
+{
+ int ruid, euid;
+ if (!PyArg_ParseTuple(args, "ii", &ruid, &euid)) {
+ return NULL;
+ } else if (setreuid(ruid, euid) < 0) {
+ return posix_error();
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+}
+#endif /* HAVE_SETREUID */
+
+#ifdef HAVE_SETREGID
+static char posix_setregid__doc__[] =
+"setegid(rgid, egid) -> None\n\
+Set the current process's real and effective group ids.";
+static PyObject *
+posix_setregid (PyObject *self, PyObject *args)
+{
+ int rgid, egid;
+ if (!PyArg_ParseTuple(args, "ii", &rgid, &egid)) {
+ return NULL;
+ } else if (setregid(rgid, egid) < 0) {
+ return posix_error();
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+}
+#endif /* HAVE_SETREGID */
+
#ifdef HAVE_SETGID
static char posix_setgid__doc__[] =
"setgid(gid) -> None\n\
@@ -4898,6 +4974,18 @@ static PyMethodDef posix_methods[] = {
#ifdef HAVE_SETUID
{"setuid", posix_setuid, METH_VARARGS, posix_setuid__doc__},
#endif /* HAVE_SETUID */
+#ifdef HAVE_SETEUID
+ {"seteuid", posix_seteuid, METH_VARARGS, posix_seteuid__doc__},
+#endif /* HAVE_SETEUID */
+#ifdef HAVE_SETEGID
+ {"setegid", posix_setegid, METH_VARARGS, posix_setegid__doc__},
+#endif /* HAVE_SETEGID */
+#ifdef HAVE_SETREUID
+ {"setreuid", posix_setreuid, METH_VARARGS, posix_setreuid__doc__},
+#endif /* HAVE_SETREUID */
+#ifdef HAVE_SETREGID
+ {"setregid", posix_setregid, METH_VARARGS, posix_setregid__doc__},
+#endif /* HAVE_SETREGID */
#ifdef HAVE_SETGID
{"setgid", posix_setgid, METH_VARARGS, posix_setgid__doc__},
#endif /* HAVE_SETGID */