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