Home | History | Annotate | Line # | Download | only in rc.d
wscons revision 1.8
      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