Index: /trunk/ccl/level-1/l1-streams.lisp
===================================================================
--- /trunk/ccl/level-1/l1-streams.lisp	(revision 5255)
+++ /trunk/ccl/level-1/l1-streams.lisp	(revision 5256)
@@ -368,5 +368,5 @@
   (write-char-function 'ioblock-no-char-output)
   (encoding nil)
-  (line-termination nil)
+  (pending-byte-order-mark nil)
   (literal-char-code-limit 256)
   (encode-output-function nil)
@@ -380,6 +380,4 @@
   (write-byte-when-locked-function 'ioblock-no-binary-output)
   (peek-char-function 'ioblock-no-char-input)
-  (input-filter #'false)
-  (output-filter #'false)
   (reserved1 nil)
   (reserved2 nil)
@@ -666,6 +664,6 @@
 )
 
-(declaim (inline %ioblock-read-swapped-u16-element))
-(defun %ioblock-read-swapped-u16-element (ioblock)
+(declaim (inline %ioblock-read-swapped-u16-byte))
+(defun %ioblock-read-swapped-u16-byte (ioblock)
   (declare (optimize (speed 3) (safety 0)))
   (let* ((buf (ioblock-inbuf ioblock))
@@ -675,5 +673,5 @@
     (when (= idx limit)
       (unless (%ioblock-advance ioblock t)
-        (return-from %ioblock-read-swapped-u16-element :eof))
+        (return-from %ioblock-read-swapped-u16-byte :eof))
       (setq idx (io-buffer-idx buf)
             limit (io-buffer-count buf)))
@@ -854,4 +852,33 @@
     (%ioblock-read-u16-encoded-char ioblock)))
 
+(declaim (inline %ioblock-read-swapped-u16-encoded-char))
+(defun %ioblock-read-swapped-u16-encoded-char (ioblock)
+  (declare (optimize (speed 3) (safety 0)))
+  (let* ((ch (ioblock-untyi-char ioblock)))
+    (if ch
+      (prog1 ch
+        (setf (ioblock-untyi-char ioblock) nil))
+      (let* ((1st-unit (%ioblock-read-swapped-u16-byte ioblock)))
+        (if (eq 1st-unit :eof)
+          1st-unit
+          (locally
+              (declare (type (unsigned-byte 16) 1st-unit))
+            (if (< 1st-unit
+                   (the (mod #x110000) (ioblock-literal-char-code-limit ioblock)))
+              (code-char 1st-unit)
+              (funcall (ioblock-decode-input-function ioblock)
+                       1st-unit
+                       #'%ioblock-read-swapped-u16-byte
+                       ioblock))))))))
+
+(defun %private-ioblock-read-swapped-u16-encoded-char (ioblock)
+  (declare (optimize (speed 3) (safety 0)))
+  (check-ioblock-owner ioblock)
+  (%ioblock-read-swapped-u16-encoded-char ioblock))
+
+(defun %locked-ioblock-read-swapped-u16-encoded-char (ioblock)
+  (declare (optimize (speed 3) (safety 0)))
+  (with-ioblock-input-lock-grabbed (ioblock)
+    (%ioblock-read-swapped-u16-encoded-char ioblock)))
 
 (declaim (inline %ioblock-tyi-no-hang))
@@ -2081,5 +2108,4 @@
                             character-p
                             encoding
-                            line-termination
                             &allow-other-keys)
   (declare (ignorable element-shift))
@@ -2103,5 +2129,4 @@
       (setf (ioblock-owner ioblock) *current-process*))
     (setf (ioblock-encoding ioblock) encoding)
-    (setf (ioblock-line-termination ioblock) line-termination)
     (setf (ioblock-literal-char-code-limit ioblock)
           (if encoding
@@ -2215,6 +2240,5 @@
                                            (subtypep element-type 'character)))
                           (basic nil)
-                          encoding
-                          line-termination)
+                          encoding)
   (when basic
     (setq class (map-to-basic-stream-class-name class))
@@ -2242,6 +2266,5 @@
                          :sharing sharing
                          :character-p character-p
-                         :encoding encoding
-                         :line-termination line-termination)))
+                         :encoding encoding)))
   
 ;;;  Fundamental streams.
