wscons revision 1.8
1#!/bin/sh
2#
3# $NetBSD: wscons,v 1.8 2002/03/22 04:34:00 thorpej Exp $
4#
5
6# PROVIDE: wscons
7# REQUIRE: mountcritremote
8# BEFORE:  LOGIN
9
10. /etc/rc.subr
11
12name="wscons"
13rcvar=$name
14start_cmd="wscons_start"
15stop_cmd=":"
16
17wscons_start()
18{
19	wscfg=/usr/sbin/wsconscfg
20	wsfld=/usr/sbin/wsfontload
21	wsctl=/sbin/wsconsctl
22	config=/etc/wscons.conf
23	usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]"
24	DOIT=
25
26	while [ $# -gt 0 ]; do
27		case $1 in
28			-n)
29				DOIT=echo
30				;;
31			-f)
32				config=$2
33				shift
34				;;
35			-font)
36				wsfld=$2
37				shift
38				;;
39			-screen)
40				wscfg=$2
41				shift
42				;;
43			*)
44				echo $usage
45				exit 1
46				;;
47		esac
48		shift
49	done
50
51
52	# args mean:
53	#	screen idx scr emul
54	#	font   name width height enc file
55	( while read type arg1 arg2 arg3 arg4 arg5; do
56		case "$type" in
57			\#*|"")
58				continue
59				;;
60			font)
61				name=$arg1
62				width=$arg2
63				height=$arg3
64				enc=$arg4
65				file=$arg5
66				cmd=$wsfld
67
68				case $width in
69					-)
70						;;
71					*)
72						cmd="$cmd -w $width"
73						;;
74				esac
75				case $height in
76					-)
77						;;
78					*)
79						cmd="$cmd -h $height"
80						;;
81				esac
82				case $enc in
83					-)
84						;;
85					*)
86						cmd="$cmd -e $enc"
87						;;
88				esac
89				cmd="$cmd -N $name $file"
90				eval $DOIT $cmd
91				;;
92			screen)
93				idx=$arg1
94				scr=$arg2
95				emul=$arg3
96				cmd=$wscfg
97
98				case $scr in
99					-)
100						;;
101					*)
102						cmd="$cmd -t $scr"
103						;;
104				esac
105				case $emul in
106					-)
107						;;
108					*)
109						cmd="$cmd -e $emul"
110						;;
111				esac
112				cmd="$cmd $idx"
113				eval $DOIT $cmd
114				;;
115			keyboard)
116				kbd=$arg1
117				cmd=$wscfg
118				case $kbd in
119					-|auto)
120						cmd="$cmd -k"
121						;;
122					*)
123						cmd="$cmd -k $kbd"
124						;;
125				esac
126				eval $DOIT $cmd
127				;;
128			encoding)
129				map=$arg1
130				cmd=$wsctl
131				cmd="$cmd -w \"encoding=$map\""
132				eval $DOIT $cmd
133				;;
134			mapfile)
135				mapfile=$arg1
136				( while read entry; do
137				    case "$entry" in
138					\#*|"")
139					    continue
140					    ;;
141					*)
142					    cmd=$wsctl
143					    cmd="$cmd -w \"map+=$entry\""
144					    cmd="$cmd >/dev/null"
145					    eval $DOIT $cmd
146					    ;;
147				    esac
148				done ) < $mapfile
149				;;
150			mux)
151				cmd="$wscfg -m $arg1"
152				eval $DOIT $cmd
153				;;
154		esac
155	done ) < $config
156}
157
158load_rc_config $name
159run_rc_command "$1"
160