[pypy-commit] pypy use-file-star-for-file: fix large seek/tell offsets
bdkearns
noreply at buildbot.pypy.org
Fri Sep 12 22:20:16 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73514:9190ab687bde
Date: 2014-09-12 13:19 -0700
http://bitbucket.org/pypy/pypy/changeset/9190ab687bde/
Log: fix large seek/tell offsets
diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -112,8 +112,11 @@
c_ftruncate = llexternal(ftruncate, [rffi.INT, OFF_T], rffi.INT, macro=True)
-c_fseek = llexternal('fseek', [FILEP, rffi.LONG, rffi.INT], rffi.INT)
-c_ftell = llexternal('ftell', [FILEP], rffi.LONG)
+c_fseek = llexternal('fseeko', [FILEP, OFF_T, rffi.INT], rffi.INT)
+c_ftell = llexternal('ftello', [FILEP], OFF_T)
+if os.name == 'nt':
+ c_fseek = llexternal('_fseeki64', [FILEP, rffi.LONGLONG, rffi.INT], rffi.INT)
+ c_ftell = llexternal('_ftelli64', [FILEP], rffi.LONGLONG)
c_fileno = llexternal(fileno, [FILEP], rffi.INT, releasegil=False)
c_feof = llexternal('feof', [FILEP], rffi.INT, releasegil=False)
@@ -592,7 +595,7 @@
self._check_closed()
self._check_writable()
ll_file = self._ll_file
- pos = intmask(c_ftell(ll_file))
+ pos = c_ftell(ll_file)
if pos == -1:
c_clearerr(ll_file)
raise _from_errno(IOError)
@@ -628,7 +631,7 @@
def tell(self):
self._check_closed()
- res = intmask(c_ftell(self._ll_file))
+ res = c_ftell(self._ll_file)
if res == -1:
c_clearerr(self._ll_file)
raise _from_errno(IOError)
More information about the pypy-commit
mailing list