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