summaryrefslogtreecommitdiff
path: root/etc/rc.wscons
blob: 5d853441075fe5f6a6f6b91eb545f87219f0d491 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# $OpenBSD: rc.wscons,v 1.2 2001/02/12 04:26:33 deraadt Exp $
# $NetBSD: rc.wscons,v 1.3 1999/05/15 14:28:14 drochner Exp $

wscfg=/usr/sbin/wsconscfg
wsfld=/usr/sbin/wsfontload
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
		;;
	mux)
		cmd="$wscfg -m $arg1"
		eval $DOIT $cmd
		;;
	esac
done ) < $config