koi8rxterm revision d522f475
1d522f475Smrg#!/bin/sh 2d522f475Smrg# $XTermId: koi8rxterm,v 1.3 2007/12/30 16:33:06 tom Exp $ 3d522f475Smrg# This is a wrapper script to set up xterm with a KOI8-R locale; based on 4d522f475Smrg# uxterm. 5d522f475Smrg 6d522f475Smrgwhoami=koi8rxterm 7d522f475Smrg 8d522f475Smrg: ${XTERM_PROGRAM=xterm} 9d522f475Smrg 10d522f475Smrg# Check if there is a workable locale program. If there is not, we will read 11d522f475Smrg# something via the standard error. Ignore whatever is written to the 12d522f475Smrg# standard output. 13d522f475Smrglocale=`sh -c "LC_ALL=C LC_CTYPE=C LANG=C locale >/dev/null" 2>&1` 14d522f475Smrgfound=no 15d522f475Smrg 16d522f475Smrg# Check for -version and -help options, to provide a simple return without 17d522f475Smrg# requiring the program to create a window: 18d522f475Smrgif test $# = 1 19d522f475Smrgthen 20d522f475Smrg case $1 in 21d522f475Smrg -v|-ver*|-h|-he*) 22d522f475Smrg $XTERM_PROGRAM "$@" 23d522f475Smrg exit $? 24d522f475Smrg ;; 25d522f475Smrg esac 26d522f475Smrgfi 27d522f475Smrg 28d522f475Smrg# Check environment variables that xterm does, in the same order: 29d522f475Smrgfor name in LC_ALL LC_CTYPE LANG 30d522f475Smrgdo 31d522f475Smrg eval 'value=$'$name 32d522f475Smrg if test -n "$value" ; then 33d522f475Smrg case $value in 34d522f475Smrg *.koi8r|*.KOI8R|*.koi8-r|*.KOI8-R) 35d522f475Smrg found=yes 36d522f475Smrg ;; 37d522f475Smrg *.koi8r@*|*.KOI8R@*|*.koi8-r@*|*.KOI8-R*) 38d522f475Smrg found=yes 39d522f475Smrg ;; 40d522f475Smrg *) 41d522f475Smrg # The user may not have configured his or her 42d522f475Smrg # locale; try to muddle through anyway. 43d522f475Smrg value=ru_RU.KOI8-R 44d522f475Smrg ;; 45d522f475Smrg esac 46d522f475Smrg break 47d522f475Smrg fi 48d522f475Smrgdone 49d522f475Smrg 50d522f475Smrg# If we didn't find one that uses KOI8-R, modify the safest one. Not everyone 51d522f475Smrg# has a KOI8-R locale installed (and there appears to be no trivial/portable 52d522f475Smrg# way to determine whether it is, from a shell script). We could check if the 53d522f475Smrg# user's shell does not reset unknown locale specifiers, but not all shells do. 54d522f475Smrgif test $found != yes ; then 55d522f475Smrg if test -n "$value" ; then 56d522f475Smrg value=`echo ${value} |sed -e 's/[.@].*//'`.KOI8-R 57d522f475Smrg else 58d522f475Smrg name="LC_CTYPE" 59d522f475Smrg value="ru_RU.KOI8-R" 60d522f475Smrg fi 61d522f475Smrg eval save=\$${name} 62d522f475Smrg eval ${name}=${value} 63d522f475Smrg eval export ${name} 64d522f475Smrg if test -z "$locale" ; then 65d522f475Smrg # The 'locale' program tries to do a sanity check. 66d522f475Smrg check=`sh -c "locale >/dev/null" 2>&1` 67d522f475Smrg if test -n "$check" ; then 68d522f475Smrg eval ${name}=${save} 69d522f475Smrg eval export ${name} 70d522f475Smrg 71d522f475Smrg echo "$whoami tried to use locale $value by setting \$$name" >&2 72d522f475Smrg xmessage -file - <<EOF 73d522f475Smrg$whoami tried unsuccessfully to use locale $value 74d522f475Smrgby setting \$$name to "${value}". 75d522f475SmrgEOF 76d522f475Smrg exit 1 77d522f475Smrg fi 78d522f475Smrg fi 79d522f475Smrgfi 80d522f475Smrg 81d522f475Smrg# for testing: 82d522f475Smrg#test -f ./xterm && XTERM_PROGRAM=./xterm 83d522f475Smrg 84d522f475Smrgexec $XTERM_PROGRAM -class KOI8RXTerm -title $whoami -k8 "$@" 85