aboutsummaryrefslogtreecommitdiff
path: root/etc/rc.d/wscons
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rc.d/wscons')
-rwxr-xr-xetc/rc.d/wscons135
1 files changed, 135 insertions, 0 deletions
diff --git a/etc/rc.d/wscons b/etc/rc.d/wscons
new file mode 100755
index 000000000000..a8a7398b3705
--- /dev/null
+++ b/etc/rc.d/wscons
@@ -0,0 +1,135 @@
+#!/bin/sh
+#
+# $NetBSD: wscons,v 1.5 2000/08/21 23:02:25 lukem Exp $
+#
+
+# PROVIDE: wscons
+# REQUIRE: mountcritremote
+
+. /etc/rc.subr
+
+name="wscons"
+rcvar=$name
+start_cmd="wscons_start"
+stop_cmd=":"
+
+wscons_start()
+{
+ wscfg=/usr/sbin/wsconscfg
+ wsfld=/usr/sbin/wsfontload
+ config=/etc/wscons.conf
+ usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]"
+ DOIT=
+
+ while [ $# -gt 0 ]; do
+ case $1 in
+ -n)
+ DOIT=echo
+ ;;
+ -f)
+ config=$2
+ shift
+ ;;
+ -font)
+ wsfld=$2
+ shift
+ ;;
+ -screen)
+ wscfg=$2
+ shift
+ ;;
+ *)
+ echo $usage
+ exit 1
+ ;;
+ esac
+ shift
+ done
+
+
+ # args mean:
+ # screen idx scr emul
+ # font name width height enc file
+ ( while read type arg1 arg2 arg3 arg4 arg5; do
+ case "$type" in
+ \#*|"")
+ continue
+ ;;
+ font)
+ name=$arg1
+ width=$arg2
+ height=$arg3
+ enc=$arg4
+ file=$arg5
+ cmd=$wsfld
+
+ case $width in
+ -)
+ ;;
+ *)
+ cmd="$cmd -w $width"
+ ;;
+ esac
+ case $height in
+ -)
+ ;;
+ *)
+ cmd="$cmd -h $height"
+ ;;
+ esac
+ case $enc in
+ -)
+ ;;
+ *)
+ cmd="$cmd -e $enc"
+ ;;
+ esac
+ cmd="$cmd -N $name $file"
+ eval $DOIT $cmd
+ ;;
+ screen)
+ idx=$arg1
+ scr=$arg2
+ emul=$arg3
+ cmd=$wscfg
+
+ case $scr in
+ -)
+ ;;
+ *)
+ cmd="$cmd -t $scr"
+ ;;
+ esac
+ case $emul in
+ -)
+ ;;
+ *)
+ cmd="$cmd -e $emul"
+ ;;
+ esac
+ cmd="$cmd $idx"
+ eval $DOIT $cmd
+ ;;
+ keyboard)
+ kbd=$arg1
+ cmd=$wscfg
+ case $kbd in
+ -|auto)
+ cmd="$cmd -k"
+ ;;
+ *)
+ cmd="$cmd -k $kbd"
+ ;;
+ esac
+ eval $DOIT $cmd
+ ;;
+ mux)
+ cmd="$wscfg -m $arg1"
+ eval $DOIT $cmd
+ ;;
+ esac
+ done ) < $config
+}
+
+load_rc_config $name
+run_rc_command "$1"