[pypy-commit] pypy use-file-star-for-file: simplify
bdkearns
noreply at buildbot.pypy.org
Thu Sep 11 11:15:14 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73455:216182f96c93
Date: 2014-09-11 05:14 -0400
http://bitbucket.org/pypy/pypy/changeset/216182f96c93/
Log: simplify
diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -369,19 +369,11 @@
self._check_readable()
ll_file = self._ll_file
- bytesrequested = size
- if bytesrequested < 0:
- buffersize = self._new_buffersize(0)
- else:
- buffersize = bytesrequested
- bytesread = 0
-
s = StringBuilder()
+ buffersize = size if size >= 0 else self._new_buffersize(0)
buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
try:
while True:
- if bytesrequested >= 0:
- buffersize = bytesrequested - bytesread
assert buffersize >= 0
chunksize = intmask(self._fread(buf, buffersize, ll_file))
interrupted = (c_ferror(ll_file) and
@@ -395,20 +387,18 @@
if not c_ferror(ll_file):
break
c_clearerr(ll_file)
- if bytesread > 0 and rposix.get_errno() == errno.EAGAIN:
+ if s.getlength() > 0 and rposix.get_errno() == errno.EAGAIN:
break
raise _from_errno(IOError)
s.append_charpsize(buf, chunksize)
- bytesread += chunksize
if chunksize < buffersize and not interrupted:
c_clearerr(ll_file)
break
- if bytesrequested >= 0:
+ if size >= 0:
break
- else:
- buffersize = self._new_buffersize(buffersize)
- lltype.free(buf, flavor='raw')
- buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
+ buffersize = self._new_buffersize(buffersize)
+ lltype.free(buf, flavor='raw')
+ buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
finally:
lltype.free(buf, flavor='raw')
return s.build()
More information about the pypy-commit
mailing list