# HG changeset patch # User Kenichi Handa # Date 1244791368 0 # Node ID 24af3ac0cac128bca583150b7c6112fe0993c942 # Parent a2e7830524d41423def7b1dfeb3ffa1572db6720 Mostly re-written to handle "gzip"ed input files. diff -r a2e7830524d4 -r 24af3ac0cac1 admin/charsets/mapconv --- a/admin/charsets/mapconv Fri Jun 12 07:22:28 2009 +0000 +++ b/admin/charsets/mapconv Fri Jun 12 07:22:48 2009 +0000 @@ -30,34 +30,42 @@ # $1: source map file # $2: address pattern for sed (optionally with substitution command) # $3: format of source map file -# GLIBC-1 GLIBC-2 GLIBC-2-7 CZYBORRA IANA UNICODE YASUOKA MICROSOFT +# GLIBC-1 GLIBC-2 GLIBC-2-7 CZYBORRA IANA UNICODE YASUOKA # $4: awk script -BASE=`basename $1` +FILE="admin/charsets/$1" +BASE=`basename $1 .gz` case "$3" in GLIBC*) - SOURCE="glibc-2.3.2/localedata/charmaps/${BASE}";; + FILE="$BASE in localedate/charmaps of glibc"; + SOURCE="";; CZYBORRA) + BASE="$BASE.gz"; SOURCE="http://czyborra.com/charsets/${BASE}";; IANA) SOURCE="http://www.iana.org/assignments/charset-reg/${BASE}";; UNICODE) - SOURCE="http://www.unicode.org/Public/MAPPINGS/.../${BASE}";; + SOURCE="http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/${BASE}";; UNICODE2) - SOURCE="http://www.unicode.org/Public/MAPPINGS/.../${BASE}";; + SOURCE="http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/${BASE}";; YASUOKA) - SOURCE="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/.../${BASE}";; - MICROSOFT) - SOURCE="http://www.microsoft.com/globaldev/reference/oem/${BASE}";; + BASE="$BASE.Z"; + SOURCE="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/ftp/CJKtable/${BASE}";; KANJI-DATABASE) - SOURCE="data at http://sourceforge.net/cvs/?group_id=26261";; + SOURCE="http://kanji-database.cvs.sourceforge.net/viewvc/*checkout*/kanji-database/kanji-database/data/cns2ucsdkw.txt?revision=1.4";; *) echo "Unknown file type: $3"; exit 1;; esac -echo "# Generated from $SOURCE" +if [ -n "$SOURCE" ] ; then + echo "# Generated from $FILE which is a copy of"; + echo "# $SOURCE" +else + echo "# Generated from $FILE" +fi + if [ -n "$4" ] ; then if [ -f "$4" ] ; then @@ -70,72 +78,66 @@ AWKPROG=cat fi -if [ "$3" == "GLIBC-1" ] ; then +if [ "$3" = "GLIBC-1" ] ; then # Source format is: # /xXX - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's,]*\)>[ ]*/x\(..\).*,0x\2 0x\1,' \ | sort | ${AWKPROG} -elif [ "$3" == "GLIBC-2" ] ; then +elif [ "$3" = "GLIBC-2" ] ; then # Source format is: # /xXX/xZZ - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's,]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ | sort | ${AWKPROG} -elif [ "$3" == "GLIBC-2-7" ] ; then +elif [ "$3" = "GLIBC-2-7" ] ; then # Source format is: # /xXX/xZZ # We must drop MSBs of XX and ZZ - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \ -e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \ -e 's,]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ | tee temp \ | sort | ${AWKPROG} -elif [ "$3" == "CZYBORRA" ] ; then +elif [ "$3" = "CZYBORRA" ] ; then # Source format is: # =XX U+YYYY zcat $1 | sed -n -e "$2 p" \ | sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \ | sort | ${AWKPROG} -elif [ "$3" == "IANA" ] ; then +elif [ "$3" = "IANA" ] ; then # Source format is: # 0xXX 0xYYYY - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ | sort | ${AWKPROG} -elif [ "$3" == "UNICODE" ] ; then +elif [ "$3" = "UNICODE" ] ; then # Source format is: # YYYY XX - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \ | sort | ${AWKPROG} -elif [ "$3" == "UNICODE2" ] ; then +elif [ "$3" = "UNICODE2" ] ; then # Source format is: # 0xXXXX 0xYYYY # ... - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \ | ${AWKPROG} | sort -n -k 4,4 -elif [ "$3" == "YASUOKA" ] ; then +elif [ "$3" = "YASUOKA" ] ; then # Source format is: # YYYY 0-XXXX (XXXX is a Kuten code) - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \ | sort | ${AWKPROG} -elif [ "$3" == "MICROSOFT" ] ; then - # Source format is: - # XX = U+YYYY - sed -n -e "$2 p" < $1 \ - | sed -e 's/\([0-9A-F]*\).*U+\([0-9A-F]*\).*/0x\1 0x\2/' \ - | sort | ${AWKPROG} -elif [ "$3" == "KANJI-DATABASE" ] ; then +elif [ "$3" = "KANJI-DATABASE" ] ; then # Source format is: # C?-XXXX U+YYYYY ..... - sed -n -e "$2 p" < $1 \ + zcat $1 | sed -n -e "$2 p" \ | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \ | sort | ${AWKPROG} else - echo "Invalid arguments" + echo "Invalid arguments: $3" exit 1 fi