[pypy-commit] pypy use-file-star-for-file: check signals in rfile

bdkearns noreply at buildbot.pypy.org
Thu Sep 11 12:40:42 CEST 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73458:c95e690fc570
Date: 2014-09-11 06:36 -0400
http://bitbucket.org/pypy/pypy/changeset/c95e690fc570/

Log:	check signals in rfile

diff --git a/pypy/module/_file/interp_file.py b/pypy/module/_file/interp_file.py
--- a/pypy/module/_file/interp_file.py
+++ b/pypy/module/_file/interp_file.py
@@ -57,6 +57,7 @@
             raise OperationError(space.w_IOError, w_error)
 
     def fdopenstream(self, stream, mode, w_name=None):
+        stream._signal_checker = signal_checker(self.space)
         self.stream = stream
         self.mode = mode
         self.binary = "b" in mode
diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -209,6 +209,7 @@
 
 
 class RFile(object):
+    _signal_checker = None
     _readable = True
     _writable = True
     _setbuf = lltype.nullptr(rffi.CCHARP.TO)
@@ -382,7 +383,8 @@
                                rposix.get_errno() == errno.EINTR)
                 if interrupted:
                     c_clearerr(ll_file)
-                    # XXX check signals
+                    if self._signal_checker is not None:
+                        self._signal_checker()
                 if chunksize == 0:
                     if interrupted:
                         continue
@@ -414,7 +416,8 @@
         result = c_fgets(raw_buf, BASE_LINE_SIZE, ll_file)
         if not result:
             c_clearerr(ll_file)
-            # XXX check signals
+            if self._signal_checker is not None:
+                self._signal_checker()
             return 0
 
         # Assume that fgets() works as documented, and additionally


More information about the pypy-commit mailing list