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