[pypy-svn] r61015 - in pypy/trunk/pypy: module/posix rpython/module
fijal at codespeak.net
fijal at codespeak.net
Thu Jan 15 18:46:38 CET 2009
Author: fijal
Date: Thu Jan 15 18:46:37 2009
New Revision: 61015
Modified:
pypy/trunk/pypy/module/posix/__init__.py
pypy/trunk/pypy/module/posix/interp_posix.py
pypy/trunk/pypy/rpython/module/ll_os.py
Log:
A couple of missing os.*
Modified: pypy/trunk/pypy/module/posix/__init__.py
==============================================================================
--- pypy/trunk/pypy/module/posix/__init__.py (original)
+++ pypy/trunk/pypy/module/posix/__init__.py Thu Jan 15 18:46:37 2009
@@ -86,23 +86,12 @@
interpleveldefs['sysconf_names'] = 'space.wrap(os.sysconf_names)'
if hasattr(os, 'ttyname'):
interpleveldefs['ttyname'] = 'interp_posix.ttyname'
- if hasattr(os, 'setsid'):
- interpleveldefs['setsid'] = 'interp_posix.setsid'
- if hasattr(os, 'getuid'):
- interpleveldefs['getuid'] = 'interp_posix.getuid'
- interpleveldefs['geteuid'] = 'interp_posix.geteuid'
- if hasattr(os, 'getgid'):
- interpleveldefs['getgid'] = 'interp_posix.getgid'
- if hasattr(os, 'getegid'):
- interpleveldefs['getegid'] = 'interp_posix.getegid'
- if hasattr(os, 'setuid'):
- interpleveldefs['setuid'] = 'interp_posix.setuid'
- if hasattr(os, 'seteuid'):
- interpleveldefs['seteuid'] = 'interp_posix.seteuid'
- if hasattr(os, 'setgid'):
- interpleveldefs['setgid'] = 'interp_posix.setgid'
- if hasattr(os, 'setegid'):
- interpleveldefs['setegid'] = 'interp_posix.setegid'
+
+ for name in ['setsid', 'getuid', 'geteuid', 'getgid', 'getegid', 'setuid',
+ 'seteuid', 'setgid', 'setegid', 'getpgrp', 'setpgrp',
+ 'getppid', 'getpgid', 'setpgid', 'setreuid', 'setregid']:
+ if hasattr(os, name):
+ interpleveldefs[name] = 'interp_posix.%s' % (name,)
# not visible via os, inconsistency in nt:
if hasattr(posix, '_getfullpathname'):
interpleveldefs['_getfullpathname'] = 'interp_posix._getfullpathname'
Modified: pypy/trunk/pypy/module/posix/interp_posix.py
==============================================================================
--- pypy/trunk/pypy/module/posix/interp_posix.py (original)
+++ pypy/trunk/pypy/module/posix/interp_posix.py Thu Jan 15 18:46:37 2009
@@ -651,6 +651,78 @@
return space.wrap(os.geteuid())
geteuid.unwrap_spec = [ObjSpace]
+def getpgrp(space):
+ """ getpgrp() -> pgrp
+
+ Return the current process group id.
+ """
+ return space.wrap(os.getpgrp())
+getpgrp.unwrap_spec = [ObjSpace]
+
+def setpgrp(space):
+ """ setpgrp()
+
+ Make this process a session leader.
+ """
+ try:
+ os.setpgrp()
+ except OSError, e:
+ raise wrap_oserror(space, e)
+ return space.w_None
+setpgrp.unwrap_spec = [ObjSpace]
+
+def getppid(space):
+ """ getppid() -> ppid
+
+ Return the parent's process id.
+ """
+ return space.wrap(os.getppid())
+getppid.unwrap_spec = [ObjSpace]
+
+def getpgid(space, pid):
+ """ getpgid(pid) -> pgid
+
+ Call the system call getpgid().
+ """
+ return space.wrap(os.getpgid(pid))
+getpgid.unwrap_spec = [ObjSpace, int]
+
+def setpgid(space, pid, pgrp):
+ """ setpgid(pid, pgrp)
+
+ Call the system call setpgid().
+ """
+ try:
+ os.setpgid(pid, pgrp)
+ except OSError, e:
+ raise wrap_oserror(space, e)
+ return space.w_None
+setpgid.unwrap_spec = [ObjSpace, int, int]
+
+def setreuid(space, ruid, euid):
+ """ setreuid(ruid, euid)
+
+ Set the current process's real and effective user ids.
+ """
+ try:
+ os.setreuid(ruid, euid)
+ except OSError, e:
+ raise wrap_oserror(space, e)
+ return space.w_None
+setreuid.unwrap_spec = [ObjSpace, int, int]
+
+def setregid(space, rgid, egid):
+ """ setregid(rgid, egid)
+
+ Set the current process's real and effective group ids.
+ """
+ try:
+ os.setregid(rgid, egid)
+ except OSError, e:
+ raise wrap_oserror(space, e)
+ return space.w_None
+setregid.unwrap_spec = [ObjSpace, int, int]
+
def declare_new_w_star(name):
if name in RegisterOs.w_star_returning_int:
def WSTAR(space, status):
Modified: pypy/trunk/pypy/rpython/module/ll_os.py
==============================================================================
--- pypy/trunk/pypy/rpython/module/ll_os.py (original)
+++ pypy/trunk/pypy/rpython/module/ll_os.py Thu Jan 15 18:46:37 2009
@@ -119,7 +119,7 @@
return extdef([], int, llimpl=c_func_llimpl,
export_name='ll_os.ll_os_' + name)
- def extdef_for_function_int_to_int(self, name, **kwds):
+ def extdef_for_function_accepting_int(self, name, **kwds):
c_func = self.llexternal(name, [rffi.INT], rffi.INT, **kwds)
def c_func_llimpl(arg):
res = rffi.cast(rffi.LONG, c_func(arg))
@@ -131,6 +131,31 @@
return extdef([int], None, llimpl=c_func_llimpl,
export_name='ll_os.ll_os_' + name)
+ def extdef_for_function_accepting_2int(self, name, **kwds):
+ c_func = self.llexternal(name, [rffi.INT, rffi.INT], rffi.INT, **kwds)
+ def c_func_llimpl(arg, arg2):
+ res = rffi.cast(rffi.LONG, c_func(arg, arg2))
+ if res == -1:
+ raise OSError(rposix.get_errno(), "%s failed" % name)
+
+ c_func_llimpl.func_name = name + '_llimpl'
+
+ return extdef([int, int], None, llimpl=c_func_llimpl,
+ export_name='ll_os.ll_os_' + name)
+
+ def extdef_for_function_int_to_int(self, name, **kwds):
+ c_func = self.llexternal(name, [rffi.INT], rffi.INT, **kwds)
+ def c_func_llimpl(arg):
+ res = rffi.cast(rffi.LONG, c_func(arg))
+ if res == -1:
+ raise OSError(rposix.get_errno(), "%s failed" % name)
+ return res
+
+ c_func_llimpl.func_name = name + '_llimpl'
+
+ return extdef([int], int, llimpl=c_func_llimpl,
+ export_name='ll_os.ll_os_' + name)
+
@registering_if(os, 'execv')
def register_os_execv(self):
eci = self.gcc_profiling_bug_workaround(
@@ -465,19 +490,19 @@
@registering_if(os, 'setuid')
def register_os_setuid(self):
- return self.extdef_for_function_int_to_int('setuid')
+ return self.extdef_for_function_accepting_int('setuid')
@registering_if(os, 'seteuid')
def register_os_seteuid(self):
- return self.extdef_for_function_int_to_int('seteuid')
+ return self.extdef_for_function_accepting_int('seteuid')
@registering_if(os, 'setgid')
def register_os_setgid(self):
- return self.extdef_for_function_int_to_int('setgid')
+ return self.extdef_for_function_accepting_int('setgid')
@registering_if(os, 'setegid')
def register_os_setegid(self):
- return self.extdef_for_function_int_to_int('setegid')
+ return self.extdef_for_function_accepting_int('setegid')
@registering_if(os, 'getpid')
def register_os_getpid(self):
@@ -490,7 +515,34 @@
@registering_if(os, 'getegid')
def register_os_getegid(self):
return self.extdef_for_os_function_returning_int('getegid')
-
+
+ @registering_if(os, 'getpgrp')
+ def register_os_getpgrp(self):
+ return self.extdef_for_os_function_returning_int('getpgrp')
+
+ @registering_if(os, 'setpgrp')
+ def register_os_setpgrp(self):
+ return self.extdef_for_os_function_returning_int('setpgrp')
+
+ @registering_if(os, 'getppid')
+ def register_os_getppid(self):
+ return self.extdef_for_os_function_returning_int('getppid')
+
+ @registering_if(os, 'getpgid')
+ def register_os_getpgid(self):
+ return self.extdef_for_function_int_to_int('getpgid')
+
+ @registering_if(os, 'setpgid')
+ def register_os_setpgid(self):
+ return self.extdef_for_function_accepting_2int('setpgid')
+
+ @registering_if(os, 'setreuid')
+ def register_os_setreuid(self):
+ return self.extdef_for_function_accepting_2int('setreuid')
+
+ @registering_if(os, 'setregid')
+ def register_os_setregid(self):
+ return self.extdef_for_function_accepting_2int('setregid')
@registering(os.open)
def register_os_open(self):
More information about the Pypy-commit
mailing list