wscons revision 1.10
11.1Slukem#!/bin/sh
21.1Slukem#
31.10Smycroft# $NetBSD: wscons,v 1.10 2004/08/13 18:08:03 mycroft Exp $
41.1Slukem#
51.1Slukem
61.1Slukem# PROVIDE: wscons
71.4Slukem# REQUIRE: mountcritremote
81.8Sthorpej# BEFORE:  LOGIN
91.1Slukem
101.10Smycroft$_rc_subr_loaded . /etc/rc.subr
111.1Slukem
121.1Slukemname="wscons"
131.6Slukemrcvar=$name
141.5Slukemstart_cmd="wscons_start"
151.2Sveegostop_cmd=":"
161.1Slukem
171.5Slukemwscons_start()
181.1Slukem{
191.5Slukem	wscfg=/usr/sbin/wsconscfg
201.5Slukem	wsfld=/usr/sbin/wsfontload
211.7Sdrochner	wsctl=/sbin/wsconsctl
221.5Slukem	config=/etc/wscons.conf
231.5Slukem	usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]"
241.5Slukem	DOIT=
251.5Slukem
261.5Slukem	while [ $# -gt 0 ]; do
271.5Slukem		case $1 in
281.5Slukem			-n)
291.5Slukem				DOIT=echo
301.5Slukem				;;
311.5Slukem			-f)
321.5Slukem				config=$2
331.5Slukem				shift
341.5Slukem				;;
351.5Slukem			-font)
361.5Slukem				wsfld=$2
371.5Slukem				shift
381.5Slukem				;;
391.5Slukem			-screen)
401.5Slukem				wscfg=$2
411.5Slukem				shift
421.5Slukem				;;
431.5Slukem			*)
441.5Slukem				echo $usage
451.5Slukem				exit 1
461.5Slukem				;;
471.5Slukem		esac
481.5Slukem		shift
491.5Slukem	done
501.5Slukem
511.5Slukem
521.5Slukem	# args mean:
531.5Slukem	#	screen idx scr emul
541.5Slukem	#	font   name width height enc file
551.5Slukem	( while read type arg1 arg2 arg3 arg4 arg5; do
561.5Slukem		case "$type" in
571.5Slukem			\#*|"")
581.5Slukem				continue
591.5Slukem				;;
601.9Slukem
611.5Slukem			font)
621.5Slukem				name=$arg1
631.5Slukem				width=$arg2
641.5Slukem				height=$arg3
651.5Slukem				enc=$arg4
661.5Slukem				file=$arg5
671.5Slukem				cmd=$wsfld
681.5Slukem
691.5Slukem				case $width in
701.5Slukem					-)
711.5Slukem						;;
721.5Slukem					*)
731.5Slukem						cmd="$cmd -w $width"
741.5Slukem						;;
751.5Slukem				esac
761.5Slukem				case $height in
771.5Slukem					-)
781.5Slukem						;;
791.5Slukem					*)
801.5Slukem						cmd="$cmd -h $height"
811.5Slukem						;;
821.5Slukem				esac
831.5Slukem				case $enc in
841.5Slukem					-)
851.5Slukem						;;
861.5Slukem					*)
871.5Slukem						cmd="$cmd -e $enc"
881.5Slukem						;;
891.5Slukem				esac
901.5Slukem				cmd="$cmd -N $name $file"
911.5Slukem				eval $DOIT $cmd
921.5Slukem				;;
931.9Slukem
941.5Slukem			screen)
951.5Slukem				idx=$arg1
961.5Slukem				scr=$arg2
971.5Slukem				emul=$arg3
981.5Slukem				cmd=$wscfg
991.5Slukem
1001.5Slukem				case $scr in
1011.5Slukem					-)
1021.5Slukem						;;
1031.5Slukem					*)
1041.5Slukem						cmd="$cmd -t $scr"
1051.5Slukem						;;
1061.5Slukem				esac
1071.5Slukem				case $emul in
1081.5Slukem					-)
1091.5Slukem						;;
1101.5Slukem					*)
1111.5Slukem						cmd="$cmd -e $emul"
1121.5Slukem						;;
1131.5Slukem				esac
1141.5Slukem				cmd="$cmd $idx"
1151.5Slukem				eval $DOIT $cmd
1161.5Slukem				;;
1171.9Slukem
1181.5Slukem			keyboard)
1191.5Slukem				kbd=$arg1
1201.5Slukem				cmd=$wscfg
1211.5Slukem				case $kbd in
1221.5Slukem					-|auto)
1231.5Slukem						cmd="$cmd -k"
1241.5Slukem						;;
1251.5Slukem					*)
1261.5Slukem						cmd="$cmd -k $kbd"
1271.5Slukem						;;
1281.5Slukem				esac
1291.5Slukem				eval $DOIT $cmd
1301.7Sdrochner				;;
1311.9Slukem
1321.7Sdrochner			encoding)
1331.7Sdrochner				map=$arg1
1341.9Slukem				cmd="$wsctl -w \"encoding=$map\""
1351.7Sdrochner				eval $DOIT $cmd
1361.7Sdrochner				;;
1371.9Slukem
1381.7Sdrochner			mapfile)
1391.7Sdrochner				mapfile=$arg1
1401.7Sdrochner				( while read entry; do
1411.7Sdrochner				    case "$entry" in
1421.7Sdrochner					\#*|"")
1431.7Sdrochner					    continue
1441.7Sdrochner					    ;;
1451.7Sdrochner					*)
1461.9Slukem					    cmd="$wsctl -w \"map+=$entry\""
1471.7Sdrochner					    cmd="$cmd >/dev/null"
1481.7Sdrochner					    eval $DOIT $cmd
1491.7Sdrochner					    ;;
1501.7Sdrochner				    esac
1511.7Sdrochner				done ) < $mapfile
1521.5Slukem				;;
1531.9Slukem
1541.5Slukem			mux)
1551.5Slukem				cmd="$wscfg -m $arg1"
1561.5Slukem				eval $DOIT $cmd
1571.5Slukem				;;
1581.9Slukem
1591.9Slukem			setvar)
1601.9Slukem				cmd="$wsctl -w $arg1"
1611.9Slukem				eval $DOIT $cmd
1621.9Slukem				;;
1631.9Slukem
1641.5Slukem		esac
1651.5Slukem	done ) < $config
1661.1Slukem}
1671.1Slukem
1681.3Slukemload_rc_config $name
1691.1Slukemrun_rc_command "$1"
170