(index 0) ; current index in current buffer
(total 0)) ; total characters
(declare (type simple-stream encap)
- (type simple-base-string cbuf)
+ (type simple-string cbuf)
(type cons bufs tail)
(type sb-int:index index total))
(loop
(do ((list bufs (cdr list)))
((eq list tail))
(let ((buf (car list)))
- (declare (type simple-base-string buf))
+ (declare (type simple-string buf))
(replace cbuf buf :start1 idx)
(incf idx (length buf)))))
(return (values (sb-kernel:shrink-vector cbuf total)
(index 0))
(declare (type sb-int:index index))
(dolist (buf bufs)
- (declare (type simple-base-string buf))
+ (declare (type simple-string buf))
(replace string buf :start1 index)
(incf index (length buf)))
(return (values string (eq done :eof)))))
(if (not (or (eql width 1) (null width)))
(funcall-stm-handler j-listen (sm melded-stream stream))
(or (< (sm buffpos stream) (sm buffer-ptr stream))
- (when (or (not (any-stream-instance-flags stream :dual :string))
- (>= (sm mode stream) 0)) ;; device-connected @@ single-channel
- (let ((lcrs (sm last-char-read-size stream)))
- (unwind-protect
- (progn
- (setf (sm last-char-read-size stream) (1+ lcrs))
- (plusp (refill-buffer stream nil)))
- (setf (sm last-char-read-size stream) lcrs))))))))
+ ;; Attempt buffer refill
+ (let ((lcrs (sm last-char-read-size stream)))
+ (when (and (not (any-stream-instance-flags stream :dual :string))
+ (>= (sm mode stream) 0))
+ ;; single-channel stream dirty -> write data before reading
+ (flush-buffer stream nil))
+ (>= (refill-buffer stream nil) width))))))
(defun %clear-input (stream buffer-only)
(declare (type simple-stream stream))
:output-handle - a stream or Unix file descriptor to write to"
(declare (ignore element-type external-format input-handle output-handle
if-exists if-does-not-exist))
- (let ((class (or class 'sb-sys::file-stream))
+ (let ((class (or class 'sb-sys:fd-stream))
(options (copy-list options))
(filespec (merge-pathnames filename)))
- (cond ((eq class 'sb-sys::file-stream)
+ (cond ((eq class 'sb-sys:fd-stream)
(remf options :class)
(remf options :mapped)
(remf options :input-handle)
(synonym-stream
(wait-for-input-available (symbol-value (synonym-stream-symbol stream))
timeout))
- (sb-sys::file-stream
+ (sb-sys:fd-stream
(or (< (sb-impl::fd-stream-in-index stream)
(length (sb-impl::fd-stream-in-buffer stream)))
(wait-for-input-available (sb-sys:fd-stream-fd stream) timeout))))))
(%file-rename stream new-name))
(t
(%file-name stream)))))
- (sb-sys::file-stream
+ (sb-sys:fd-stream
(cond (new-name
(setf (sb-impl::fd-stream-pathname stream) new-name)
(setf (sb-impl::fd-stream-file stream)