From 5b035fce7d6ebadb1c65b012639b00c0ad765cca Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Thu, 24 Jun 1993 13:48:47 +0000 Subject: [PATCH] Changed stuff to use EOF-OR-LOSE for signalling EOF. --- code/fd-stream.lisp | 57 +++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/code/fd-stream.lisp b/code/fd-stream.lisp index 159f36a76..688c25cc6 100644 --- a/code/fd-stream.lisp +++ b/code/fd-stream.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/fd-stream.lisp,v 1.25 1993/06/08 11:20:31 wlott Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/fd-stream.lisp,v 1.26 1993/06/24 13:48:47 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -510,22 +510,20 @@ (let ((stream-var (gensym)) (element-var (gensym))) `(let ((,stream-var ,stream)) - (if (fd-stream-unread ,stream) - (prog1 - (fd-stream-unread ,stream) - (setf (fd-stream-unread ,stream) nil) - (setf (fd-stream-listen ,stream) nil)) - (let ((,element-var - (catch 'eof-input-catcher - (input-at-least ,stream-var ,bytes) - ,@read-forms))) - (cond (,element-var - (incf (fd-stream-ibuf-head ,stream-var) ,bytes) - ,element-var) - (,eof-error - (error "EOF while reading ~S" stream)) - (t - ,eof-value))))))) + (if (fd-stream-unread ,stream-var) + (prog1 + (fd-stream-unread ,stream-var) + (setf (fd-stream-unread ,stream-var) nil) + (setf (fd-stream-listen ,stream-var) nil)) + (let ((,element-var + (catch 'eof-input-catcher + (input-at-least ,stream-var ,bytes) + ,@read-forms))) + (cond (,element-var + (incf (fd-stream-ibuf-head ,stream-var) ,bytes) + ,element-var) + (t + (eof-or-lose ,stream-var ,eof-error ,eof-value)))))))) ;;; DEF-INPUT-ROUTINE -- internal ;;; @@ -662,16 +660,9 @@ non-server method is also significantly more efficient for large reads. (decf bytes copy)) (when (zerop bytes) (return requested)))))) - (cond (result) - ((not eof-error-p) - (- requested (/ bytes elsize))) - (t - (error "Hit eof on ~S after reading ~D ~D~2:*-bit byte~P~*, ~ - but ~D~2:* ~D-bit byte~P~:* ~[were~;was~:;were~] requested." - stream - (- requested (/ bytes elsize)) - (* elsize 8) - requested))))) + (or result + (eof-or-lose stream eof-error-p + (- requested (/ bytes elsize)))))) |# @@ -741,10 +732,8 @@ non-server method is also significantly more efficient for large reads. (error "Error reading ~S: ~A" stream (unix:get-unix-error-msg err))) (when (< count now-needed) - (if eof-error-p - (when (zerop count) - (error "Unexpected eof on ~S." stream)) - (return (- requested now-needed)))) + (return (eof-or-lose stream eof-error-p + (- requested now-needed)))) (decf now-needed count) (when (zerop now-needed) (return requested)) (incf offset count))))) @@ -759,10 +748,8 @@ non-server method is also significantly more efficient for large reads. (unix:get-unix-error-msg err))) (incf (fd-stream-ibuf-tail stream) count) (when (< count now-needed) - (if eof-error-p - (when (zerop count) - (error "Unexpected eof on ~S." stream)) - (return (- requested now-needed)))) + (return (eof-or-lose stream eof-error-p + (- requested now-needed)))) (let* ((copy (min now-needed count)) (copy-bits (* copy vm:byte-bits)) (buffer-start-bits -- GitLab