[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