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