[BACK]Return to wscons CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / etc / rc.d

File: [cvs.NetBSD.org] / src / etc / rc.d / wscons (download)

Revision 1.10, Fri Aug 13 18:08:03 2004 UTC (19 years, 8 months ago) by mycroft
Branch: MAIN
CVS Tags: netbsd-3-base, netbsd-3-1-RELEASE, netbsd-3-1-RC4, netbsd-3-1-RC3, netbsd-3-1-RC2, netbsd-3-1-RC1, netbsd-3-1-1-RELEASE, netbsd-3-1, netbsd-3-0-RELEASE, netbsd-3-0-RC6, netbsd-3-0-RC5, netbsd-3-0-RC4, netbsd-3-0-RC3, netbsd-3-0-RC2, netbsd-3-0-RC1, netbsd-3-0-3-RELEASE, netbsd-3-0-2-RELEASE, netbsd-3-0-1-RELEASE, netbsd-3-0, netbsd-3
Changes since 1.9: +2 -2 lines

Add an _rc_subr_loaded variable, set to ":" by rc.subr.  Scripts can use this
for a speedup by doing:
$_rc_subr_loaded . /etc/rc.subr

#!/bin/sh
#
# $NetBSD: wscons,v 1.10 2004/08/13 18:08:03 mycroft Exp $
#

# PROVIDE: wscons
# REQUIRE: mountcritremote
# BEFORE:  LOGIN

$_rc_subr_loaded . /etc/rc.subr

name="wscons"
rcvar=$name
start_cmd="wscons_start"
stop_cmd=":"

wscons_start()
{
	wscfg=/usr/sbin/wsconscfg
	wsfld=/usr/sbin/wsfontload
	wsctl=/sbin/wsconsctl
	config=/etc/wscons.conf
	usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]"
	DOIT=

	while [ $# -gt 0 ]; do
		case $1 in
			-n)
				DOIT=echo
				;;
			-f)
				config=$2
				shift
				;;
			-font)
				wsfld=$2
				shift
				;;
			-screen)
				wscfg=$2
				shift
				;;
			*)
				echo $usage
				exit 1
				;;
		esac
		shift
	done


	# args mean:
	#	screen idx scr emul
	#	font   name width height enc file
	( while read type arg1 arg2 arg3 arg4 arg5; do
		case "$type" in
			\#*|"")
				continue
				;;

			font)
				name=$arg1
				width=$arg2
				height=$arg3
				enc=$arg4
				file=$arg5
				cmd=$wsfld

				case $width in
					-)
						;;
					*)
						cmd="$cmd -w $width"
						;;
				esac
				case $height in
					-)
						;;
					*)
						cmd="$cmd -h $height"
						;;
				esac
				case $enc in
					-)
						;;
					*)
						cmd="$cmd -e $enc"
						;;
				esac
				cmd="$cmd -N $name $file"
				eval $DOIT $cmd
				;;

			screen)
				idx=$arg1
				scr=$arg2
				emul=$arg3
				cmd=$wscfg

				case $scr in
					-)
						;;
					*)
						cmd="$cmd -t $scr"
						;;
				esac
				case $emul in
					-)
						;;
					*)
						cmd="$cmd -e $emul"
						;;
				esac
				cmd="$cmd $idx"
				eval $DOIT $cmd
				;;

			keyboard)
				kbd=$arg1
				cmd=$wscfg
				case $kbd in
					-|auto)
						cmd="$cmd -k"
						;;
					*)
						cmd="$cmd -k $kbd"
						;;
				esac
				eval $DOIT $cmd
				;;

			encoding)
				map=$arg1
				cmd="$wsctl -w \"encoding=$map\""
				eval $DOIT $cmd
				;;

			mapfile)
				mapfile=$arg1
				( while read entry; do
				    case "$entry" in
					\#*|"")
					    continue
					    ;;
					*)
					    cmd="$wsctl -w \"map+=$entry\""
					    cmd="$cmd >/dev/null"
					    eval $DOIT $cmd
					    ;;
				    esac
				done ) < $mapfile
				;;

			mux)
				cmd="$wscfg -m $arg1"
				eval $DOIT $cmd
				;;

			setvar)
				cmd="$wsctl -w $arg1"
				eval $DOIT $cmd
				;;

		esac
	done ) < $config
}

load_rc_config $name
run_rc_command "$1"