Author: Amaury Forgeot d'Arc <amaur...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit