Author: Amaury Forgeot d'Arc <[email protected]>
Branch: more-rposix
Changeset: r74362:b25e33df35a3
Date: 2014-11-06 21:53 +0100
http://bitbucket.org/pypy/pypy/changeset/b25e33df35a3/
Log: Move os.getlogin()
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -152,6 +152,8 @@
c_execv = external('execv', [rffi.CCHARP, rffi.CCHARPP], rffi.INT)
c_execve = external('execve',
[rffi.CCHARP, rffi.CCHARPP, rffi.CCHARPP], rffi.INT)
+c_getlogin = external('getlogin', [], rffi.CCHARP, releasegil=False)
+
# Win32 specific functions
c_spawnv = external('spawnv',
[rffi.INT, rffi.CCHARP, rffi.CCHARPP], rffi.INT)
@@ -386,6 +388,13 @@
rffi.free_charpp(l_env)
rffi.free_charpp(l_args)
if childpid == -1:
- raise OSError(rposix.get_errno(), "os_spawnve failed")
+ raise OSError(get_errno(), "os_spawnve failed")
return intmask(childpid)
+@register_replacement_for(getattr(os, 'getlogin', None),
+ sandboxed_name='ll_os.ll_os_getlogin')
+def getlogin():
+ result = c_getlogin()
+ if not result:
+ raise OSError(get_errno(), "getlogin failed")
+ return rffi.charp2str(result)
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
@@ -247,20 +247,6 @@
return extdef([int], int, llimpl=c_func_llimpl,
export_name='ll_os.ll_os_' + name)
- @registering_if(os, "getlogin", condition=not _WIN32)
- def register_os_getlogin(self):
- os_getlogin = self.llexternal('getlogin', [], rffi.CCHARP,
releasegil=False)
-
- def getlogin_llimpl():
- result = os_getlogin()
- if not result:
- raise OSError(rposix.get_errno(), "getlogin failed")
-
- return rffi.charp2str(result)
-
- return extdef([], str, llimpl=getlogin_llimpl,
- export_name="ll_os.ll_os_getlogin")
-
@registering_str_unicode(os.utime)
def register_os_utime(self, traits):
UTIMBUFP = lltype.Ptr(self.UTIMBUF)
diff --git a/rpython/rtyper/module/test/test_ll_os.py
b/rpython/rtyper/module/test/test_ll_os.py
--- a/rpython/rtyper/module/test/test_ll_os.py
+++ b/rpython/rtyper/module/test/test_ll_os.py
@@ -44,7 +44,7 @@
expected = os.getlogin()
except OSError, e:
py.test.skip("the underlying os.getlogin() failed: %s" % e)
- data = getllimpl(os.getlogin)()
+ data = rposix.getlogin()
assert data == expected
def test_statvfs():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit