| ... | 
... | 
@@ -604,7 +604,7 @@ | 
| 
604
 | 
604
 | 
 	   :skipped-char-form ()
  | 
| 
605
 | 
605
 | 
 	   :eof-detected-form (eof-or-lose stream eof-errorp eof-value))))))
  | 
| 
606
 | 
606
 | 
 
  | 
| 
607
 | 
 
 | 
-(defun listen (&optional (stream *standard-input* stream-p) (width 1 width-p))
  | 
| 
 
 | 
607
 | 
+(defun listen (&optional (stream *standard-input*) (width 1 width-p))
  | 
| 
608
 | 
608
 | 
   "Returns T if a character is available on the given Stream."
  | 
| 
609
 | 
609
 | 
   (declare (type streamlike stream))
  | 
| 
610
 | 
610
 | 
   (let ((stream (in-synonym-of stream)))
  | 
| ... | 
... | 
@@ -612,26 +612,14 @@ | 
| 
612
 | 
612
 | 
       ;; simple-stream
  | 
| 
613
 | 
613
 | 
       (stream::%listen stream width)
  | 
| 
614
 | 
614
 | 
       ;; lisp-stream
  | 
| 
615
 | 
 
 | 
-      (let ((error-type 'simple-program-error)
  | 
| 
616
 | 
 
 | 
-            (function-name 'listen)
  | 
| 
617
 | 
 
 | 
-            (format-control ())
  | 
| 
618
 | 
 
 | 
-            (format-arguments ()))
  | 
| 
619
 | 
 
 | 
-        (if width-p
  | 
| 
620
 | 
 
 | 
-          ;; since width provided, two possible cases:
  | 
| 
621
 | 
 
 | 
-          (progn
  | 
| 
622
 | 
 
 | 
-            (if stream-p
  | 
| 
623
 | 
 
 | 
-              ;; stream also provided, so too many arguments
  | 
| 
624
 | 
 
 | 
-              (setf format-control (intl:gettext "Invalid number of arguments: ~S")
  | 
| 
625
 | 
 
 | 
-                    format-arguments (list 3))
  | 
| 
626
 | 
 
 | 
-              ;; stream init-form used, so invalid argument
  | 
| 
627
 | 
 
 | 
-              (setf format-control (intl:gettext "Invalid argument: ~D")
  | 
| 
628
 | 
 
 | 
-                    format-arguments (list 'width)))
  | 
| 
629
 | 
 
 | 
-            (error error-type :function-name function-name
  | 
| 
630
 | 
 
 | 
-                   :format-control format-control :format-arguments format-arguments))
  | 
| 
631
 | 
 
 | 
-          ;; width not provided, so return expected value
  | 
| 
632
 | 
 
 | 
-          (or (/= (the fixnum (lisp-stream-in-index stream)) in-buffer-length)
  | 
| 
633
 | 
 
 | 
-            ;; Test for t explicitly since misc methods return :eof sometimes.
  | 
| 
634
 | 
 
 | 
-            (eq (funcall (lisp-stream-misc stream) stream :listen) t))))
  | 
| 
 
 | 
615
 | 
+      (when width-p
  | 
| 
 
 | 
616
 | 
+	(error 'kernel:simple-program-error
  | 
| 
 
 | 
617
 | 
+	       :function-name 'listen
  | 
| 
 
 | 
618
 | 
+	       :format-control (intl:gettext "Invalid number of arguments: ~S")
  | 
| 
 
 | 
619
 | 
+	       :format-arguments (list 3)))
  | 
| 
 
 | 
620
 | 
+      (or (/= (the fixnum (lisp-stream-in-index stream)) in-buffer-length)
  | 
| 
 
 | 
621
 | 
+          ;; Test for t explicitly since misc methods return :eof sometimes.
  | 
| 
 
 | 
622
 | 
+          (eq (funcall (lisp-stream-misc stream) stream :listen) t))
  | 
| 
635
 | 
623
 | 
       ;; fundamental-stream
  | 
| 
636
 | 
624
 | 
       (stream-listen stream))))
  | 
| 
637
 | 
625
 | 
 
  |