(wait_reading_process_input): When trying to suck
authorGerd Moellmann <gerd@gnu.org>
Thu, 7 Oct 1999 11:37:40 +0000 (11:37 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 7 Oct 1999 11:37:40 +0000 (11:37 +0000)
input from one process, for accept-process-output,
exit that loop if we get EAGAIN or EWOULDBLOCK.

src/process.c

index cc65840..2cb1dd9 100644 (file)
@@ -2541,15 +2541,26 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
          XSETPROCESS (proc, wait_proc);
 
          /* Read data from the process, until we exhaust it.  */
-         while (XINT (wait_proc->infd) >= 0
-                && (nread
-                    = read_process_output (proc, XINT (wait_proc->infd))))
+         while (XINT (wait_proc->infd) >= 0)
            {
+             nread = read_process_output (proc, XINT (wait_proc->infd));
+
+             if (nread == 0)
+               break;
+
               if (0 < nread) 
                 total_nread += nread;
 #ifdef EIO
              else if (nread == -1 && EIO == errno)
                 break;
+#endif
+#ifdef EAGAIN
+             else if (nread == -1 && EAGAIN == errno)
+                break;
+#endif
+#ifdef EWOULDBLOCK
+             else if (nread == -1 && EWOULDBLOCK == errno)
+                break;
 #endif
            }
          if (total_nread > 0 && do_display)