Merged revisions 76636 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76636 | antoine.pitrou | 2009-12-02 21:37:54 +0100 (mer., 02 déc. 2009) | 5 lines

  Issue #7333: The `posix` module gains an `initgroups()` function providing
  access to the initgroups(3) C library call on Unix systems which implement
  it.  Patch by Jean-Paul Calderone.
........
This commit is contained in:
Antoine Pitrou 2009-12-02 20:46:48 +00:00
parent 8a10ecc051
commit b7572f08f4
7 changed files with 69 additions and 3 deletions

View file

@ -3979,6 +3979,30 @@ posix_getgroups(PyObject *self, PyObject *noargs)
}
#endif
#ifdef HAVE_INITGROUPS
PyDoc_STRVAR(posix_initgroups__doc__,
"initgroups(username, gid) -> None\n\n\
Call the system initgroups() to initialize the group access list with all of\n\
the groups of which the specified username is a member, plus the specified\n\
group id.");
static PyObject *
posix_initgroups(PyObject *self, PyObject *args)
{
char *username;
long gid;
if (!PyArg_ParseTuple(args, "sl:initgroups", &username, &gid))
return NULL;
if (initgroups(username, (gid_t) gid) == -1)
return PyErr_SetFromErrno(PyExc_OSError);
Py_INCREF(Py_None);
return Py_None;
}
#endif
#ifdef HAVE_GETPGID
PyDoc_STRVAR(posix_getpgid__doc__,
"getpgid(pid) -> pgid\n\n\
@ -7184,6 +7208,9 @@ static PyMethodDef posix_methods[] = {
#ifdef HAVE_SETGROUPS
{"setgroups", posix_setgroups, METH_O, posix_setgroups__doc__},
#endif /* HAVE_SETGROUPS */
#ifdef HAVE_INITGROUPS
{"initgroups", posix_initgroups, METH_VARARGS, posix_initgroups__doc__},
#endif /* HAVE_INITGROUPS */
#ifdef HAVE_GETPGID
{"getpgid", posix_getpgid, METH_VARARGS, posix_getpgid__doc__},
#endif /* HAVE_GETPGID */