Author: Manuel Jacob <m...@manueljacob.de>
Branch: 
Changeset: r90534:0251b34cb8ee
Date: 2017-03-04 13:30 +0100
http://bitbucket.org/pypy/pypy/changeset/0251b34cb8ee/

Log:    Reuse rposix.c_read in these two places instead of redefining an
        almost identical llexternal.

diff --git a/pypy/module/_file/readinto.py b/pypy/module/_file/readinto.py
--- a/pypy/module/_file/readinto.py
+++ b/pypy/module/_file/readinto.py
@@ -1,16 +1,10 @@
-import sys, errno
+import errno
 from rpython.rlib import rposix
 from rpython.rlib.objectmodel import keepalive_until_here
+from rpython.rlib.rposix import c_read
 from rpython.rtyper.lltypesystem import lltype, rffi
 from pypy.module._file.interp_file import is_wouldblock_error, signal_checker
 
-_WIN32 = sys.platform.startswith('win')
-UNDERSCORE_ON_WIN32 = '_' if _WIN32 else ''
-
-os_read = rffi.llexternal(UNDERSCORE_ON_WIN32 + 'read',
-                          [rffi.INT, rffi.CCHARP, rffi.SIZE_T],
-                          rffi.SSIZE_T, save_err=rffi.RFFI_SAVE_ERRNO)
-
 
 def direct_readinto(self, w_rwbuffer):
     rwbuffer = self.space.writebuf_w(w_rwbuffer)
@@ -56,11 +50,11 @@
             target_pos += len(data)
             size -= len(data)
 
-        # then call os_read() to get the rest
+        # then call c_read() to get the rest
         if size > 0:
             stream.flush()
             while True:
-                got = os_read(fd, rffi.ptradd(target_address, target_pos), 
size)
+                got = c_read(fd, rffi.ptradd(target_address, target_pos), size)
                 got = rffi.cast(lltype.Signed, got)
                 if got > 0:
                     target_pos += got
diff --git a/pypy/module/_io/interp_fileio.py b/pypy/module/_io/interp_fileio.py
--- a/pypy/module/_io/interp_fileio.py
+++ b/pypy/module/_io/interp_fileio.py
@@ -4,7 +4,7 @@
     OperationError, oefmt, wrap_oserror, wrap_oserror2)
 from rpython.rlib.objectmodel import keepalive_until_here
 from rpython.rlib.rarithmetic import r_longlong
-from rpython.rlib.rposix import get_saved_errno
+from rpython.rlib.rposix import c_read, get_saved_errno
 from rpython.rlib.rstring import StringBuilder
 from rpython.rtyper.lltypesystem import lltype, rffi
 from os import O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC
@@ -116,14 +116,6 @@
     return currentsize + SMALLCHUNK
 
 
-_WIN32 = sys.platform.startswith('win')
-UNDERSCORE_ON_WIN32 = '_' if _WIN32 else ''
-
-os_read = rffi.llexternal(UNDERSCORE_ON_WIN32 + 'read',
-                          [rffi.INT, rffi.CCHARP, rffi.SIZE_T],
-                          rffi.SSIZE_T, save_err=rffi.RFFI_SAVE_ERRNO)
-
-
 class W_FileIO(W_RawIOBase):
     def __init__(self, space):
         W_RawIOBase.__init__(self, space)
@@ -402,7 +394,7 @@
         else:
             # optimized case: reading more than 64 bytes into a rwbuffer
             # with a valid raw address
-            got = os_read(self.fd, target_address, length)
+            got = c_read(self.fd, target_address, length)
             keepalive_until_here(rwbuffer)
             got = rffi.cast(lltype.Signed, got)
             if got >= 0:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to