home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- usage()
- {
- echo >&2 "Usage: $(basename $0) [-v] G0|G1 [ cp437 | iso01 | vt100 | user | <acm_name> ]"
- }
-
- usage_exit()
- {
- usage
- exit 1
- }
-
- tty_out()
- {
- # echo "Sending \`$*'"
- echo -en >/dev/tty $*
- }
-
- verbose()
- {
- test $VERBOSE = 1 && echo >&2 $*
- }
-
- error()
- {
- echo >&2 $*
- }
-
- activate_charset()
- {
- verbose "Switching to $1 charset"
- case $1 in
- G0)
- tty_out "\017"
- ;;
- G1)
- tty_out "\016"
- ;;
- esac
- }
-
- # parse command-line
-
- CHARSET=
- ACM=
- INTERNAL_ACM=
- ACM_NAME=
-
- VERBOSE=0
-
- GOT_CHARSET=0
- GOT_ACM=0
-
- while [ $# -gt 0 ]
- do
- case $1 in
- -v)
- VERBOSE=1
- shift
- ;;
- G0|G1)
- if [ ${GOT_CHARSET} = 1 ] ; then usage_exit; fi
- CHARSET=$1
- GOT_CHARSET=1
- shift
- ;;
- iso01)
- if [ ${GOT_ACM} = 1 ] ; then usage_exit; fi
- INTERNAL_ACM=B
- ACM_NAME=$1
- GOT_ACM=1
- shift
- ;;
- vt100)
- if [ ${GOT_ACM} = 1 ] ; then usage_exit; fi
- INTERNAL_ACM=0
- ACM_NAME=$1
- GOT_ACM=1
- shift
- ;;
- cp437)
- if [ ${GOT_ACM} = 1 ] ; then usage_exit; fi
- INTERNAL_ACM=U
- ACM_NAME=$1
- GOT_ACM=1
- shift
- ;;
- user)
- if [ ${GOT_ACM} = 1 ] ; then usage_exit; fi
- INTERNAL_ACM=K
- ACM_NAME="user-defined"
- GOT_ACM=1
- shift
- ;;
- *)
- if [ ${GOT_ACM} = 1 ] ; then usage_exit; fi
- INTERNAL_ACM=K
- ACM_NAME="user-defined"
- ACM=$1
- GOT_ACM=1
- shift
- ;;
- esac
- done
-
- # if specified ACM is not available internally, get it from file
- if [ "$ACM" != "" ]
- then
- case $CHARSET in
- G0)
- OPT=
- ;;
- G1)
- OPT=--g1
- ;;
- esac
-
- verbose -n "Loading $ACM ACM into user-defined slot..."
- consolechars $OPT -m $ACM && verbose "done."
- fi
-
- if [ "$INTERNAL_ACM" != "" -a "$CHARSET" != "" ]
- then # make $CHARSET point to $INTERNAL_ACM
- if [ "$ACM" != "" ]
- then
- verbose "Making $CHARSET point to $ACM_NAME ACM (file $ACM)"
- else
- verbose "Making $CHARSET point to internal ACM $ACM_NAME"
- fi
- case $CHARSET in
- G0)
- tty_out "\033($INTERNAL_ACM"
- ;;
- G1)
- tty_out "\033)$INTERNAL_ACM"
- ;;
- esac
- activate_charset $CHARSET
- elif [ "$INTERNAL_ACM" = "" -a "$CHARSET" != "" ]
- then # make $CHARSET current
- activate_charset $CHARSET
- elif [ "$INTERNAL_ACM" != "" -a "$CHARSET" = "" ]
- then # set current charset to $ACM
- error "Don't know (yet ?) how to determine current charset."
- error "Please specify G0 or G1"
- exit 1
- else
- usage
- fi
-