Update of /project/cxml/cvsroot/closure-common
In directory clnet:/tmp/cvs-serv4575
Modified Files:
xstream.lisp
Log Message:
allow Microsoft BOM (thanks to Ivan Shvedunov)
--- /project/cxml/cvsroot/closure-common/xstream.lisp 2007/12/22 15:19:25 1.9
+++ /project/cxml/cvsroot/closure-common/xstream.lisp 2008/02/24 20:38:35 1.10
@@ -342,7 +342,6 @@
(defun make-rod-xstream (string &key name)
(unless (typep string 'simple-array)
(setf string (coerce string 'simple-string)))
- ;; XXX encoding is mis-handled by this kind of stream
(let ((n (length string)))
(let ((buffer (make-array (1+ n) :element-type 'buffer-byte)))
(declare (type (simple-array buffer-byte (*)) buffer))
@@ -375,6 +374,11 @@
(t
(cond ((and (= c0 #xFE) (= c1 #xFF)) (values :utf-16-big-endian nil))
((and (= c0 #xFF) (= c1 #xFE)) (values :utf-16-little-endian nil))
+ ((and (= c0 #xEF) (= c1 #xBB))
+ (let ((c2 (read-byte stream nil :eof)))
+ (if (= c2 #xBF)
+ (values :utf-8 nil)
+ (values :utf-8 (list c0 c1 c2)))))
(t
(values :utf-8 (list c0 c1)))))))))))