Don't depend on read to return a full buffer from a pipe.
authorChris Hanson <org/chris-hanson/cph>
Mon, 27 Jan 1992 11:04:42 +0000 (11:04 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 27 Jan 1992 11:04:42 +0000 (11:04 +0000)
v7/src/edwin/process.scm

index 43c9f22f817baddd5d5f073a661bb147f9482c88..1c353c40aeda71df6a12175018433781e7293f3c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/process.scm,v 1.16 1992/01/24 23:13:51 cph Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/process.scm,v 1.17 1992/01/27 11:04:42 cph Exp $
 ;;;
 ;;;    Copyright (c) 1991-92 Massachusetts Institute of Technology
 ;;;
@@ -549,8 +549,7 @@ after the listing is made.)"
                  (if (> n 0)
                      (begin
                        (insert-substring buffer 0 n output-mark)
-                       (if (= n 512)
-                           (loop))))))))
+                       (loop)))))))
        (subprocess-wait process))))
 \f
 (define (call-with-output-copier process output-mark receiver)
@@ -560,11 +559,10 @@ after the listing is made.)"
             (lambda ()
               (let loop ()
                 (let ((n (channel-read channel buffer 0 512)))
-                  (if (and n (positive? n))
+                  (if (and n (> n 0))
                       (begin
                         (insert-substring buffer 0 n output-mark)
-                        (if (= n 512)
-                            (loop))))))))))
+                        (loop)))))))))
       (channel-nonblocking channel)
       (let ((status (receiver copy-output)))
        (channel-blocking channel)