From: Christophe R. <cr...@us...> - 2009-11-11 18:08:41
|
Update of /cvsroot/sbcl/sbcl/src/code/external-formats In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4468/src/code/external-formats Modified Files: enc-basic.lisp mb-util.lisp ucs-2.lisp Log Message: 1.0.32.23: use :replacement in the external format for standard IO streams For *terminal-io*, a bidirectional stream, we have to make an arbitrary choice on Windows, where in theory the input and output code pages can differ. We arbitrarily choose the output format; I have no idea whether this matters. Index: enc-basic.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/external-formats/enc-basic.lisp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- enc-basic.lisp 11 Nov 2009 17:34:09 -0000 1.3 +++ enc-basic.lisp 11 Nov 2009 18:08:31 -0000 1.4 @@ -383,6 +383,7 @@ (instantiate-octets-definition define-utf8->string) (define-external-format/variable-width (:utf-8 :utf8) t + #!+sb-unicode (code-char #xfffd) #!-sb-unicode #\? (let ((bits (char-code byte))) (cond ((< bits #x80) 1) ((< bits #x800) 2) Index: mb-util.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/external-formats/mb-util.lisp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- mb-util.lisp 11 Nov 2009 13:21:37 -0000 1.6 +++ mb-util.lisp 11 Nov 2009 18:08:31 -0000 1.7 @@ -248,6 +248,12 @@ ;; for fd-stream.lisp (define-external-format/variable-width ,aliases t + ;; KLUDGE: it so happens that at present (2009-10-22) none of + ;; the external formats defined with + ;; define-multibyte-encoding can encode the unicode + ;; replacement character, so we hardcode the preferred + ;; replacement here. + #\? (mb-char-len (or (,ucs-to-mb (char-code byte)) -1)) (let ((mb (,ucs-to-mb bits))) (if (null mb) Index: ucs-2.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/external-formats/ucs-2.lisp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ucs-2.lisp 11 Nov 2009 17:52:39 -0000 1.5 +++ ucs-2.lisp 11 Nov 2009 18:08:31 -0000 1.6 @@ -190,6 +190,7 @@ (instantiate-octets-definition define-ucs-2->string) (define-external-format/variable-width (:ucs-2le :ucs2le #!+win32 :ucs2 #!+win32 :ucs-2) t + (code-char #xfffd) 2 (if (< bits #x10000) (setf (sap-ref-16le sap tail) bits) @@ -200,6 +201,7 @@ string->ucs-2le) (define-external-format/variable-width (:ucs-2be :ucs2be) t + (code-char #xfffd) 2 (if (< bits #x10000) (setf (sap-ref-16be sap tail) bits) |