;;;; Utility functions (misc routines, etc)
(defparameter *stream-encoding-file-attribute-translations*
- '(;; Emacs specific codings.
- ((:iso-8859-1 :unix)
- "latin-1" "latin-1-unix" "iso-latin-1-unix" "iso-8859-1-unix")
- ((:iso-8859-1 :dos)
- "latin-1" "latin-1-dos" "iso-latin-1-dos" "iso-8859-1-dos")
- ((:iso-8859-1 :max)
- "latin-1" "latin-1-mac" "iso-latin-1-mac" "iso-8859-1-mac")
- ((:utf-8 :unix) "utf-8-unix")
- ((:utf-8 :dos) "utf-8-dos")
- ((:utf-8 :mac) "utf-8-mac")
- ((:euc-jp :unix) "euc-jp-unix")
- ((:euc-jp :dos) "euc-jp-dos")
- ((:euc-jp :mac) "euc-jp-mac")
- )
+ (flet ((emacs-coding (target &rest list)
+ (flet ((add-suffix (list suffix)
+ (let ((list* nil))
+ (dolist (coding list)
+ (push (format nil "~A-~A" coding suffix) list*))
+ (nreverse list*))))
+ `((,target ,@list)
+ ((,target :unix) ,@(add-suffix list "unix"))
+ ((,target :dos) ,@(add-suffix list "dos"))
+ ((,target :mac) ,@(add-suffix list "mac"))))))
+ `(;; Emacs specific codings.
+ ,@(emacs-coding :utf-8 "utf-8" "utf-8-with-signature" "mule-utf-8")
+ ,@(emacs-coding :utf-16le "utf-16le" "utf-16-le")
+ ,@(emacs-coding :utf-16be "utf-16be" "utf-16-be")
+ ,@(emacs-coding :utf-16 "utf-16" "utf-16le-with-signature" "utf-16be-with-signature")
+ ,@(emacs-coding :us-ascii "us-ascii" "iso-safe")
+ ,@(emacs-coding :iso-8859-1 "iso-8859-1" "latin-1" "iso-latin-1")
+ ,@(emacs-coding :iso-8859-1 "binary" "no-conversion" "raw-text")
+ ,@(emacs-coding :iso-8859-2 "iso-8859-2" "latin-2" "iso-latin-2")
+ ,@(emacs-coding :iso-8859-3 "iso-8859-3" "latin-3" "iso-latin-3")
+ ,@(emacs-coding :iso-8859-4 "iso-8859-4" "latin-4" "iso-latin-4")
+ ,@(emacs-coding :iso-8859-5 "iso-8859-5" "cyrillic-iso-8bit")
+ ,@(emacs-coding :iso-8859-6 "iso-8859-6")
+ ,@(emacs-coding :iso-8859-7 "iso-8859-7" "greek-iso-8bit")
+ ,@(emacs-coding :iso-8859-8 "iso-8859-8" "hebrew-iso-8bit")
+ ,@(emacs-coding :iso-8859-9 "iso-8859-9" "latin-5" "iso-latin-5")
+ ,@(emacs-coding :iso-8859-10 "iso-8859-10" "latin-6" "iso-latin-6")
+ ,@(emacs-coding :iso-8859-11 "iso-8859-11")
+ ,@(emacs-coding :iso-8859-13 "iso-8859-13" "latin-7" "iso-latin-7")
+ ,@(emacs-coding :iso-8859-14 "iso-8859-14" "latin-8" "iso-latin-8")
+ ,@(emacs-coding :iso-8859-15 "iso-8859-15" "latin-9" "iso-latin-9" "latin-0")
+ ,@(emacs-coding :iso-8859-16 "iso-8859-16" "latin-10" "iso-latin-10")
+ ,@(emacs-coding :cp437 "cp437" "ibm437")
+ ,@(emacs-coding :cp850 "cp850" "ibm850")
+ ,@(emacs-coding :cp852 "cp852" "ibm852")
+ ,@(emacs-coding :cp857 "cp857" "ibm857")
+ ,@(emacs-coding :cp858 "cp858")
+ ,@(emacs-coding :cp860 "cp860" "ibm860")
+ ,@(emacs-coding :cp861 "cp861" "ibm861")
+ ,@(emacs-coding :cp862 "cp862" "ibm862")
+ ,@(emacs-coding :cp863 "cp863" "ibm863")
+ ,@(emacs-coding :cp865 "cp865" "ibm865")
+ ,@(emacs-coding :roman8 "roman8" "hp-roman8")
+ ,@(emacs-coding :macintosh "mac-roman")
+ ,@(emacs-coding :utf-7 "utf-7")
+ ,@(emacs-coding :cp1250 "cp1250" "windows-1250")
+ ,@(emacs-coding :cp1251 "cp1251" "windows-1251")
+ ,@(emacs-coding :cp1252 "cp1252" "windows-1252")
+ ,@(emacs-coding :cp1253 "cp1253" "windows-1253")
+ ,@(emacs-coding :cp1254 "cp1254" "windows-1254")
+ ,@(emacs-coding :cp1255 "cp1255" "windows-1255")
+ ,@(emacs-coding :cp1256 "cp1256" "windows-1256")
+ ,@(emacs-coding :cp1257 "cp1257" "windows-1257")
+ ,@(emacs-coding :cp1258 "cp1258" "windows-1258")
+ ,@(emacs-coding :cp851 "cp851" "ibm851")
+ ,@(emacs-coding :cp737 "cp737")
+ ,@(emacs-coding :cp869 "cp869" "ibm869")
+ ,@(emacs-coding :cp866 "cp866")
+ ,@(emacs-coding :koi8 "koi8" "koi8-r" "cyrillic-koi8" "cp878")
+ ,@(emacs-coding :koi8-u "koi8-u")
+ ,@(emacs-coding :koi8-t "koi8-t")
+ ,@(emacs-coding :cp1125 "cp1125" "ruscii" "cp866u")
+ ,@(emacs-coding :cp855 "cp855" "ibm855")
+ ,@(emacs-coding :mik "mik")
+ ,@(emacs-coding :pt154 "pt154")
+ ,@(emacs-coding :ebcdic-us "ebcdic-us")
+ ,@(emacs-coding :ebcdic-uk "ebcdic-uk")
+ ,@(emacs-coding :cp1047 "cp1047" "ibm1047")
+ ,@(emacs-coding :iso-2022-cn "iso-2022-cn" "chinese-iso-7bit")
+ ,@(emacs-coding :iso-2022-cn-ext "iso-2022-cn-ext")
+ ,@(emacs-coding :gb2312 "gb2312" "cn-gb" "euc-cn" "euc-china"
+ "cn-gb-2312" "chinese-iso-8bit")
+ ,@(emacs-coding :big5 "big5" "cp950" "cn-big5" "chinese-big5")
+ ,@(emacs-coding :big5hkscs "big5-hkscs" "cn-big5-hkscs" "chinese-big5-hkscs")
+ ,@(emacs-coding :euc-tw "euc-tw" "euc-taiwan")
+ ,@(emacs-coding :cp936 "cp936" "windows-936" "gbk" "chinese-gbk")
+ ,@(emacs-coding :gb18030 "gb18030" "chinese-gb18003")
+ ,@(emacs-coding :cp874 "ibm874" "cp874")
+ ,@(emacs-coding :tis-620 "tis-620" "tis620" "th-tis620" "thai-tis620")
+ ,@(emacs-coding :viscii "viscii" "vietnamese-viscii")
+ ,@(emacs-coding :tcvn "tcvn-5712" "tcvn" "vietnamese-tcvn")
+ ,@(emacs-coding :georgian-ps "georgian-ps")
+ ,@(emacs-coding :georgian-academy "georgian-academy")
+ ,@(emacs-coding :iso-2022-jp "iso-2022-jp" "junet")
+ ,@(emacs-coding :iso-2022-jp-2 "iso-2022-jp-2")
+ ,@(emacs-coding :shift-jis "shift_jis" "sjis" "japanese-shift-jis")
+ ,@(emacs-coding :cp932 "cp932" "japanese-cp932")
+ ,@(emacs-coding :euc-jp "euc-jp" "euc-japan" "euc-japan-1990" "japanese-iso-8bit")
+ ,@(emacs-coding :euc-ms "eucjp-ms")
+ ,@(emacs-coding :iso-2022-jp-3 "iso-2022-jp-3" "iso-2022-jp-2004")
+ ,@(emacs-coding :euc-jisx0213 "euc-jisx0213" "euc-jis-2004")
+ ,@(emacs-coding :euc-korea "euc-korea" "euc-kr" "korean-iso-8bit")
+ ,@(emacs-coding :iso-2022-kr "iso-2022-kr" "korean-iso-7bit-lock")
+ ,@(emacs-coding :cp949 "cp949" "korean-cp949")
+ ))
"List of coding translations used by 'stream-encoding-file-attribute to map
the read file coding into a native external-format. Each element is a list of
a native external-format followed by a list of coding strings that are to be