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