X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Foctets.lisp;h=247f685798a5c5942ff2a9bddda5259796f1eeaa;hb=fb76e3acd8b8a53cdadaa65bce1d090d99e004a0;hp=f743a4b5b0c3b9600819af0b251f20510c057782;hpb=7fb597b585fc715537ea644f7d84440eca217ca1;p=sbcl.git diff --git a/src/code/octets.lisp b/src/code/octets.lisp index f743a4b..247f685 100644 --- a/src/code/octets.lisp +++ b/src/code/octets.lisp @@ -221,6 +221,7 @@ one-past-the-end" (defun get-latin-bytes (mapper external-format string pos end) (declare (ignore end)) (let ((code (funcall mapper (char-code (char string pos))))) + (declare (type (or null char-code) code)) (values (cond ((and code (< code 256)) code) (t @@ -640,19 +641,38 @@ one-past-the-end" (defun default-external-format () (or *default-external-format* - (let ((external-format (intern (or #!-win32 (sb!alien:alien-funcall - (extern-alien - "nl_langinfo" - (function c-string int)) - sb!unix:codeset) - "LATIN-1") - "KEYWORD"))) + ;; On non-unicode, use iso-8859-1 instead of detecting it from + ;; the locale settings. Defaulting to an external-format which + ;; can represent characters that the CHARACTER type can't + ;; doesn't seem very sensible. + #!-sb-unicode + (setf *default-external-format* :latin-1) + (let ((external-format #!-win32 (intern (or (sb!alien:alien-funcall + (extern-alien + "nl_langinfo" + (function (c-string :external-format :latin-1) + int)) + sb!unix:codeset) + "LATIN-1") + "KEYWORD") + #!+win32 (sb!win32::ansi-codepage))) (/show0 "cold-printing defaulted external-format:") #!+sb-show (cold-print external-format) (/show0 "matching to known aliases") (dolist (entry *external-formats* (progn + ;;; FIXME! This WARN would try to do printing + ;;; before the streams have been initialized, + ;;; causing an infinite erroring loop. We should + ;;; either print it by calling to C, or delay the + ;;; warning until later. Since we're in freeze + ;;; right now, and the warning isn't really + ;;; essential, I'm doing what's least likely to + ;;; cause damage, and commenting it out. This + ;;; should be revisited after 0.9.17. -- JES, + ;;; 2006-09-21 + #+nil (warn "Invalid external-format ~A; using LATIN-1" external-format) (setf external-format :latin-1)))