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