summaryrefslogtreecommitdiff
path: root/init.d.NetBSD/wscons.in
diff options
context:
space:
mode:
Diffstat (limited to 'init.d.NetBSD/wscons.in')
-rw-r--r--init.d.NetBSD/wscons.in100
1 files changed, 100 insertions, 0 deletions
diff --git a/init.d.NetBSD/wscons.in b/init.d.NetBSD/wscons.in
new file mode 100644
index 0000000..6fee03d
--- /dev/null
+++ b/init.d.NetBSD/wscons.in
@@ -0,0 +1,100 @@
+#!/sbin/runscript
+# Copyright 2008 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+depend()
+{
+ need localmount
+ keyword noprefix
+}
+
+start()
+{
+ wscfg=/usr/sbin/wsconscfg
+ wsfld=/usr/sbin/wsfontload
+ wsctl=/sbin/wsconsctl
+ config=/etc/wscons.conf
+
+ # 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)
+ cmd=${wsfld}
+ [ "${arg2}" != "-" ] && cmd="${cmd} -w ${arg2}"
+ [ "${arg3}" != "-" ] && cmd="${cmd} -h ${arg3}"
+ [ "${arg4}" != "-" ] && cmd="${cmd} -e ${arg4}"
+ cmd="${cmd} -N ${arg1} ${arg5}"
+ eval "${cmd}"
+ ;;
+
+ screen)
+ cmd=${wscfg}
+ [ "${arg2}" != "-" ] && cmd="${cmd} -t ${arg2}"
+ [ "${arg3}" != "-" ] && cmd="${cmd} -e ${arg3}"
+ cmd="${cmd} ${arg1}"
+ eval "${cmd}"
+ ;;
+
+ keyboard)
+ cmd=${wscfg}
+ case "${arg1}" in
+ -|auto)
+ cmd="${cmd} -k"
+ ;;
+ *)
+ cmd="${cmd} -k ${arg1}"
+ ;;
+ esac
+ ${cmd}
+ ;;
+
+ encoding)
+ eval ${wsctl} -w "\"encoding=${arg1}\""
+ ;;
+
+ mapfile)
+ local entry=
+ while read entry; do
+ case "${entry}" in
+ \#*|"")
+ continue
+ ;;
+ *)
+ cmd="${wsctl} -w \"map+=${entry}\""
+ eval "${cmd} >/dev/null"
+ ;;
+ esac
+ done < "${arg1}"
+ ;;
+
+ mux)
+ eval "${wscfg} -m ${arg1}"
+ ;;
+
+ setvar)
+ case "${arg1}" in
+ keyboard)
+ cmd="${wsctl} -kw ${arg2}"
+ ;;
+ display)
+ cmd="${wsctl} -dw ${arg2}"
+ ;;
+ mouse)
+ cmd="${wsctl} -mw ${arg2}"
+ ;;
+ *)
+ cmd="${wsctl} -w ${arg1}"
+ ;;
+ esac
+ eval "${cmd}"
+ ;;
+
+ esac
+ done < "${config}"
+}