[pypy-commit] pypy more-rposix: Move more functions: os.setresuid() &co
amauryfa
noreply at buildbot.pypy.org
Fri Nov 7 14:52:24 CET 2014
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: more-rposix
Changeset: r74368:f5baa8e21fdd
Date: 2014-11-07 08:42 +0100
http://bitbucket.org/pypy/pypy/changeset/f5baa8e21fdd/
Log: Move more functions: os.setresuid() &co
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -615,11 +615,11 @@
@replace_os_function('setuid')
def setuid(uid):
- return handle_posix_error('setuid', c_setuid(uid))
+ handle_posix_error('setuid', c_setuid(uid))
@replace_os_function('seteuid')
def seteuid(uid):
- return handle_posix_error('seteuid', c_seteuid(uid))
+ handle_posix_error('seteuid', c_seteuid(uid))
@replace_os_function('getgid')
def getgid():
@@ -631,8 +631,57 @@
@replace_os_function('setgid')
def setgid(gid):
- return handle_posix_error('setgid', c_setgid(gid))
+ handle_posix_error('setgid', c_setgid(gid))
@replace_os_function('setegid')
def setegid(gid):
- return handle_posix_error('setegid', c_setegid(gid))
+ handle_posix_error('setegid', c_setegid(gid))
+
+c_setreuid = external('setreuid', [rffi.INT, rffi.INT], rffi.INT)
+c_setregid = external('setregid', [rffi.INT, rffi.INT], rffi.INT)
+
+ at replace_os_function('setreuid')
+def setreuid(ruid, euid):
+ handle_posix_error('setreuid', c_setreuid(ruid, euid))
+
+ at replace_os_function('setregid')
+def setregid(rgid, egid):
+ handle_posix_error('setregid', c_setregid(rgid, egid))
+
+c_getresuid = external('getresuid', [rffi.INTP] * 3, rffi.INT)
+c_getresgid = external('getresgid', [rffi.INTP] * 3, rffi.INT)
+c_setresuid = external('setresuid', [rffi.INT] * 3, rffi.INT)
+c_setresgid = external('setresgid', [rffi.INT] * 3, rffi.INT)
+
+ at replace_os_function('getresuid')
+def getresuid():
+ out = lltype.malloc(rffi.INTP.TO, 3, flavor='raw')
+ try:
+ handle_posix_error('getresuid',
+ c_getresuid(rffi.ptradd(out, 0),
+ rffi.ptradd(out, 1),
+ rffi.ptradd(out, 2)))
+ return (intmask(out[0]), intmask(out[1]), intmask(out[2]))
+ finally:
+ lltype.free(out, flavor='raw')
+
+ at replace_os_function('getresgid')
+def getresgid():
+ out = lltype.malloc(rffi.INTP.TO, 3, flavor='raw')
+ try:
+ handle_posix_error('getresgid',
+ c_getresgid(rffi.ptradd(out, 0),
+ rffi.ptradd(out, 1),
+ rffi.ptradd(out, 2)))
+ return (intmask(out[0]), intmask(out[1]), intmask(out[2]))
+ finally:
+ lltype.free(out, flavor='raw')
+
+ at replace_os_function('setresuid')
+def setresuid(ruid, euid, suid):
+ handle_posix_error('setresuid', c_setresuid(ruid, euid, suid))
+
+ at replace_os_function('setresgid')
+def setresgid(rgid, egid, sgid):
+ handle_posix_error('setresgid', c_setresgid(rgid, egid, sgid))
+
diff --git a/rpython/rtyper/module/ll_os.py b/rpython/rtyper/module/ll_os.py
--- a/rpython/rtyper/module/ll_os.py
+++ b/rpython/rtyper/module/ll_os.py
@@ -500,84 +500,6 @@
def register_os_setpgid(self):
return self.extdef_for_os_function_accepting_2int('setpgid')
- @registering_if(os, 'setreuid')
- def register_os_setreuid(self):
- return self.extdef_for_os_function_accepting_2int('setreuid')
-
- @registering_if(os, 'setregid')
- def register_os_setregid(self):
- return self.extdef_for_os_function_accepting_2int('setregid')
-
- @registering_if(os, 'getresuid')
- def register_os_getresuid(self):
- c_getresuid = self.llexternal('getresuid', [rffi.INTP] * 3, rffi.INT)
-
- def c_getresuid_llimpl():
- out = lltype.malloc(rffi.INTP.TO, 3, flavor='raw')
- try:
- res = c_getresuid(rffi.ptradd(out, 0),
- rffi.ptradd(out, 1),
- rffi.ptradd(out, 2))
- res = rffi.cast(lltype.Signed, res)
- if res == -1:
- raise OSError(rposix.get_errno(), "getresuid failed")
- return (rffi.cast(lltype.Signed, out[0]),
- rffi.cast(lltype.Signed, out[1]),
- rffi.cast(lltype.Signed, out[2]))
- finally:
- lltype.free(out, flavor='raw')
-
- return extdef([], (int, int, int), llimpl=c_getresuid_llimpl,
- export_name='ll_os.ll_os_getresuid')
-
- @registering_if(os, 'getresgid')
- def register_os_getresgid(self):
- c_getresgid = self.llexternal('getresgid', [rffi.INTP] * 3, rffi.INT)
-
- def c_getresgid_llimpl():
- out = lltype.malloc(rffi.INTP.TO, 3, flavor='raw')
- try:
- res = c_getresgid(rffi.ptradd(out, 0),
- rffi.ptradd(out, 1),
- rffi.ptradd(out, 2))
- res = rffi.cast(lltype.Signed, res)
- if res == -1:
- raise OSError(rposix.get_errno(), "getresgid failed")
- return (rffi.cast(lltype.Signed, out[0]),
- rffi.cast(lltype.Signed, out[1]),
- rffi.cast(lltype.Signed, out[2]))
- finally:
- lltype.free(out, flavor='raw')
-
- return extdef([], (int, int, int), llimpl=c_getresgid_llimpl,
- export_name='ll_os.ll_os_getresgid')
-
- @registering_if(os, 'setresuid')
- def register_os_setresuid(self):
- c_setresuid = self.llexternal('setresuid', [rffi.INT] * 3, rffi.INT)
-
- def c_setresuid_llimpl(ruid, euid, suid):
- res = c_setresuid(ruid, euid, suid)
- res = rffi.cast(lltype.Signed, res)
- if res == -1:
- raise OSError(rposix.get_errno(), "setresuid failed")
-
- return extdef([int, int, int], None, llimpl=c_setresuid_llimpl,
- export_name='ll_os.ll_os_setresuid')
-
- @registering_if(os, 'setresgid')
- def register_os_setresgid(self):
- c_setresgid = self.llexternal('setresgid', [rffi.INT] * 3, rffi.INT)
-
- def c_setresgid_llimpl(rgid, egid, sgid):
- res = c_setresgid(rgid, egid, sgid)
- res = rffi.cast(lltype.Signed, res)
- if res == -1:
- raise OSError(rposix.get_errno(), "setresgid failed")
-
- return extdef([int, int, int], None, llimpl=c_setresgid_llimpl,
- export_name='ll_os.ll_os_setresgid')
-
@registering_if(os, 'getloadavg')
def register_os_getloadavg(self):
AP = rffi.CArrayPtr(lltype.Float)
More information about the pypy-commit
mailing list