(setf (stream-open-p stream) nil)
t)
-(setf (fdefinition 'close) #'pcl-close)
+(progn
+ ;; KLUDGE: Get in a call to PCL-CLOSE with a string-output-stream before
+ ;; setting it as CLOSE. Otherwise using NAMED-LAMBDAs as DFUNs causes a
+ ;; vicious metacircle from FORMAT NIL somewhere in the compiler. This is
+ ;; enough to get the dispatch settled down before we need it.
+ (pcl-close (make-string-output-stream))
+ (setf (fdefinition 'close) #'pcl-close))
\f
(let ()
(fmakunbound 'input-stream-p)
(loop
(let ((ch (stream-read-char stream)))
(cond ((eq ch :eof)
- (return (values (shrink-vector res index) t)))
+ (return (values (%shrink-vector res index) t)))
(t
(when (char= ch #\newline)
- (return (values (shrink-vector res index) nil)))
+ (return (values (%shrink-vector res index) nil)))
(when (= index len)
(setq len (* len 2))
(let ((new (make-string len)))
(error 'type-error :datum non-stream :expected-type 'stream))
(defgeneric stream-read-sequence (stream seq &optional start end)
+ #+sb-doc
(:documentation
"This is like CL:READ-SEQUENCE, but for Gray streams."))
T)))
(defgeneric stream-write-sequence (stream seq &optional start end)
+ #+sb-doc
(:documentation
"This is like CL:WRITE-SEQUENCE, but for Gray streams."))
(basic-io-type-stream-write-sequence stream seq start end
#'stream-write-byte))
+(defgeneric stream-file-position (stream &optional position-spec)
+ #+sb-doc
+ (:documentation
+ "Used by FILE-POSITION. Returns or changes the current position within STREAM."))
+
+(defmethod stream-file-position ((stream ansi-stream) &optional position-spec)
+ (ansi-stream-file-position stream position-spec))
+
+(defmethod stream-file-position ((stream t) &optional position-spec)
+ (declare (ignore stream position-spec))
+ nil)
+
\f
;;; This is not in the Gray stream proposal, so it is left here
;;; as example code.