Hi, I'm checking termwrap in base-config and found some fixes are needed. I created a patch. Can I commit this, Joey? (when alioth come back :-) ) This patch fixes: 1. unset_lang_language unsets LANG and LANGUAGES, but need to unset LC_ALL (and maybe ENCODING) also. 2. prebaseconfig.udeb removed for inserting FB module. As Pere said, base-config should cover it only if LANG needs (try_load_fb). 3. WRAPPER check routine is broken. New variable, WRAPPER_OPTION is needed (Bug#225865). 4. When WRAPPER goes fail, LANGs which use special terminal should unset its LANG (fallback to English). TODO: - I checked for mainly Japanese. I don't so similar with Russian/Korean/Chinese. Is this code OK for them? - Is there other language needs special terminal? - I think try_load_fb is i386 specific. What's FrameBuffer module name on another arch? --- termwrap.old 2003-12-19 05:01:52.000000000 +0900 +++ termwrap 2004-01-02 19:33:24.000000000 +0900 @@ -66,6 +66,8 @@ if [ "$LANG" ] ; then warning "Disabling unsupported locale '$LANG'." unset LANG + unset LC_ALL + unset ENCODING fi if [ "$LANGUAGE" ] ; then warning "Disabling unsupported language list '$LANGUAGE'." @@ -92,6 +94,11 @@ esac } +try_load_fb() { + # Load framebuffer module + modprobe -q vesafb || modprobe -q vga16fb || true +} + ###################################################################### ## Generate the locale data files if missing ###################################################################### @@ -217,6 +224,7 @@ ## Select suitable terminal as wrapper. ###################################################################### WRAPPER="" +WRAPPER_OPTION="" # For this to work, the current locale must be valid. The block # generating the locale should have taken care of that. If it isn't @@ -246,19 +254,58 @@ case $TERMINAL in x) #WRAPPER="/usr/X11R6/bin/kterm -e" - WRAPPER="/usr/X11R6/bin/krxvt -e" + WRAPPER="/usr/X11R6/bin/krxvt" + WRAPPER_OPTION="-e" ;; console) if [ "$SUBARCH" != pc9800 -a "$TERMINAL" = console ]; then # Any platform except PC9800 require jfbterm # to display japanese fonts on console. - WRAPPER="/usr/bin/jfbterm -c other,EUC-JP,iconv.UTF-8 -e" + try_load_fb + WRAPPER="/usr/bin/jfbterm" + WRAPPER_OPTION="-q -c other,EUC-JP,iconv,UTF-8 -e" fi ;; # On pseudo and serial, we can't tell # if the terminal can display japanese fonts... esac ;; +eucKR|euc-KR) + case $TERMINAL in + console) + try_load_fb + WRAPPER="/usr/bin/jfbterm" + WRAPPER_OPTION="-q -c other,EUC-KR,iconv,UTF-8 -e" + ;; + esac + ;; +zh_CN|GB2312) + case $TERMINAL in + console) + try_load_fb + WRAPPER="/usr/bin/jfbterm" + WRAPPER_OPTION="-q -c other,GB2312,iconv,UTF-8 -e" + ;; + esac + ;; +zh_TW|BIG5) + case $TERMINAL in + console) + try_load_fb + WRAPPER="/usr/bin/jfbterm" + WRAPPER_OPTION="-q -c other,BIG5,iconv,UTF-8 -e" + ;; + esac + ;; +KOI8-R) + case $TERMINAL in + console) + try_load_fb + WRAPPER="/usr/bin/jfbterm" + WRAPPER_OPTION="-q -c other,KOI8-R,iconv,UTF-8 -e" + ;; + esac + ;; UTF-8) # Enable UTF-8 in console if [ "$TERMINAL" = console ] ; then @@ -284,7 +331,17 @@ ## Execute Wrapper. ###################################################################### if [ ! -z "$WRAPPER" -a -x "$WRAPPER" ]; then - $WRAPPER /bin/true && exec $WRAPPER $@ + $WRAPPER $WRAPPER_OPTION /bin/true && exec $WRAPPER $WRAPPER_OPTION $@ + + case $ENCODING in + eucJP|EUC-JP|ujis|EUC-KR|zh_CN|zh_TW|KOI8-R) + # Unset LANG + unset_lang_language + ;; + *) + # Nothing to do + ;; + esac fi $@ @@ -305,7 +362,7 @@ # Unload ISO-8859-15 charset mapping, by loading ISO-8859-1 instead try_load_charset "$ENCODING" iso01 ;; -eucJP|EUC-JP|ujis) +eucJP|EUC-JP|ujis|EUC-KR|zh_CN|zh_TW|KOI8-R) # Nothing to do, using wrapper error "Should never end up here when using '$ENCODING'" ;;
Attachment:
pgpA22WoolF4N.pgp
Description: PGP signature