Index: level-1/l1-reader.lisp =================================================================== --- level-1/l1-reader.lisp (revision 12400) +++ level-1/l1-reader.lisp (working copy) @@ -3157,7 +3157,11 @@ (let* ((cur-pos (file-position stream)) (noctets (- end-offset start-offset)) (vec (make-array noctets :element-type '(unsigned-byte 8))) - (index 0)) + (index 0) + (crlfp (eq :crlf + (cdr (assoc (external-format-line-termination + (stream-external-format stream)) + *canonical-line-termination-conventions*))))) (declare (type fixnum end-offset noctets index) (type (simple-array (unsigned-byte 8) (*)) vec)) (macrolet ((out (code) @@ -3168,7 +3172,10 @@ (loop (let ((code (char-code (stream-read-char stream)))) (declare (fixnum code)) - (cond ((< code #x80) + (cond ((= code #x0a) ; lf + (when crlfp (out #x0d)) ; out cr + (out code)) ; out lf + ((< code #x80) (out code)) ((< code #x800) (out (logior #xc0 (ldb (byte 5 6) code)))