/[cmucl]/src/code/stream.lisp
ViewVC logotype

Diff of /src/code/stream.lisp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.28 by dtc, Sun Mar 1 21:46:16 1998 UTC revision 1.29 by pw, Mon Apr 27 10:06:43 1998 UTC
# Line 1458  Line 1458 
1458               (setf (first rem) el)))))               (setf (first rem) el)))))
1459        (vector        (vector
1460         (with-array-data ((data seq) (offset-start start) (offset-end end))         (with-array-data ((data seq) (offset-start start) (offset-end end))
1461           (typecase data           (if (or (typep data '(simple-array (unsigned-byte 8) (*)))
1462             ((or simple-string (simple-array (unsigned-byte 8) (*))                   #+signed-array
1463                  #+signed-array (simple-array (signed-byte 8) (*)))                   (typep data '(simple-array (signed-byte 8) (*)))
1464              (let* ((numbytes (- end start))                   (and (simple-string-p data) (fd-stream-p stream)))
1465                     (bytes-read (system:read-n-bytes               (let* ((numbytes (- end start))
1466                                  stream data offset-start numbytes nil)))                      (bytes-read (system:read-n-bytes
1467                (if (< bytes-read numbytes)                                   stream data offset-start numbytes nil)))
1468                    (+ start bytes-read)                 (if (< bytes-read numbytes)
1469                    end)))                     (+ start bytes-read)
1470             (t                     end))
1471              (let ((read-function               (let ((read-function
1472                     (if (subtypep (stream-element-type stream) 'character)                      (if (subtypep (stream-element-type stream) 'character)
1473                         #'read-char                          #'read-char
1474                         #'read-byte)))                          #'read-byte)))
1475                (do ((i offset-start (1+ i)))                 (do ((i offset-start (1+ i)))
1476                    ((>= i offset-end) end)                     ((>= i offset-end) end)
1477                  (declare (type index i))                   (declare (type index i))
1478                  (let ((el (funcall read-function stream nil '%%RWSEQ-EOF%%)))                   (let ((el (funcall read-function stream nil '%%RWSEQ-EOF%%)))
1479                    (when (eq el '%%RWSEQ-EOF%%)                     (when (eq el '%%RWSEQ-EOF%%)
1480                      (return (- i offset-start)))                       (return (- i offset-start)))
1481                    (setf (aref data i) el)))))))))))                     (setf (aref data i) el))))))))))
1482    
1483  ;;; WRITE-SEQUENCE -- Public  ;;; WRITE-SEQUENCE -- Public
1484  ;;;  ;;;

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

  ViewVC Help
Powered by ViewVC 1.1.5