Author: Matti Picus <matti.pi...@gmail.com> Branch: win32-cleanup2 Changeset: r54446:dba9f63cc754 Date: 2012-04-17 00:29 +0300 http://bitbucket.org/pypy/pypy/changeset/dba9f63cc754/
Log: more cleanup of validate_fd (amaury_) diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py --- a/pypy/module/cpyext/api.py +++ b/pypy/module/cpyext/api.py @@ -26,7 +26,7 @@ from pypy.module.__builtin__.interp_classobj import W_ClassObject from pypy.module.__builtin__.interp_memoryview import W_MemoryView from pypy.rlib.entrypoint import entrypoint -from pypy.rlib.rposix import validate_fd +from pypy.rlib.rposix import _validate_fd from pypy.rlib.unroll import unrolling_iterable from pypy.rlib.objectmodel import specialize from pypy.rlib.exports import export_struct @@ -90,7 +90,7 @@ _fclose = rffi.llexternal('fclose', [FILEP], rffi.INT) def fclose(fp): - if not validate_fd(fileno(fp)): + if not _validate_fd(fileno(fp)): return -1 return _fclose(fp) diff --git a/pypy/rlib/rposix.py b/pypy/rlib/rposix.py --- a/pypy/rlib/rposix.py +++ b/pypy/rlib/rposix.py @@ -5,6 +5,7 @@ from pypy.translator.tool.cbuild import ExternalCompilationInfo from pypy.rlib.rarithmetic import intmask from pypy.rlib.objectmodel import specialize +from pypy.rlib import jit class CConstantErrno(CConstant): # these accessors are used when calling get_errno() or set_errno() @@ -97,10 +98,14 @@ _set_errno(rffi.cast(INT, errno)) if os.name == 'nt': - validate_fd = rffi.llexternal( + _validate_fd = rffi.llexternal( "_PyVerify_fd", [rffi.INT], rffi.INT, compilation_info=eci, ) + @jit.dont_look_inside + def validate_fd(fd): + if not _validate_fd(fd): + raise OSError(get_errno(), 'Bad file descriptor') else: def validate_fd(fd): return 1 @@ -109,7 +114,7 @@ # this behaves like os.closerange() from Python 2.6. for fd in xrange(fd_low, fd_high): try: - if validate_fd(fd): + if _validate_fd(fd): os.close(fd) except OSError: pass diff --git a/pypy/rlib/rwin32.py b/pypy/rlib/rwin32.py --- a/pypy/rlib/rwin32.py +++ b/pypy/rlib/rwin32.py @@ -128,8 +128,7 @@ _get_osfhandle = rffi.llexternal('_get_osfhandle', [rffi.INT], HANDLE) def get_osfhandle(fd): - if not validate_fd(fd): - raise WindowsError(errno.EBADF, 'Bad file descriptor') + validate_fd(fd) handle = _get_osfhandle(fd) if handle == INVALID_HANDLE_VALUE: raise WindowsError(errno.EBADF, "Invalid file handle") diff --git a/pypy/rlib/test/test_rposix.py b/pypy/rlib/test/test_rposix.py --- a/pypy/rlib/test/test_rposix.py +++ b/pypy/rlib/test/test_rposix.py @@ -133,11 +133,11 @@ pass def test_validate_fd(self): - assert rposix.validate_fd(0) == 1 + assert rposix._validate_fd(0) == 1 fid = open(str(udir.join('validate_test.txt')), 'w') fd = fid.fileno() - assert rposix.validate_fd(fd) == 1 + assert rposix._validate_fd(fd) == 1 fid.close() - assert rposix.validate_fd(fd) == 0 + assert rposix._validate_fd(fd) == 0 diff --git a/pypy/rpython/module/ll_os.py b/pypy/rpython/module/ll_os.py --- a/pypy/rpython/module/ll_os.py +++ b/pypy/rpython/module/ll_os.py @@ -916,8 +916,7 @@ def os_write_llimpl(fd, data): count = len(data) - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) buf = rffi.get_nonmovingbuffer(data) try: written = rffi.cast(lltype.Signed, os_write( @@ -942,8 +941,7 @@ rffi.INT, threadsafe=False) def close_llimpl(fd): - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) error = rffi.cast(lltype.Signed, os_close(rffi.cast(rffi.INT, fd))) if error == -1: raise OSError(rposix.get_errno(), "close failed") @@ -979,8 +977,7 @@ rffi.LONGLONG) def lseek_llimpl(fd, pos, how): - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) how = fix_seek_arg(how) res = os_lseek(rffi.cast(rffi.INT, fd), rffi.cast(rffi.LONGLONG, pos), @@ -1006,8 +1003,7 @@ [rffi.INT, rffi.LONGLONG], rffi.INT) def ftruncate_llimpl(fd, length): - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) res = rffi.cast(rffi.LONG, os_ftruncate(rffi.cast(rffi.INT, fd), rffi.cast(rffi.LONGLONG, length))) @@ -1026,8 +1022,7 @@ os_fsync = self.llexternal('_commit', [rffi.INT], rffi.INT) def fsync_llimpl(fd): - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) res = rffi.cast(rffi.SIGNED, os_fsync(rffi.cast(rffi.INT, fd))) if res < 0: raise OSError(rposix.get_errno(), "fsync failed") @@ -1040,8 +1035,7 @@ os_fdatasync = self.llexternal('fdatasync', [rffi.INT], rffi.INT) def fdatasync_llimpl(fd): - if not rposix.validate_fd(fd): - raise OSError(rposix.get_errno(), 'Bad file descriptor') + rposix.validate_fd(fd) res = rffi.cast(rffi.SIGNED, os_fdatasync(rffi.cast(rffi.INT, fd))) if res < 0: raise OSError(rposix.get_errno(), "fdatasync failed") _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit