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 12 name="wscons" 13 rcvar=$name 14 start_cmd="wscons_start" 15 stop_cmd=":" 16 17 wscons_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 158 load_rc_config $name 159 run_rc_command "$1" 160