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