summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-freebsd/freebsd-sbin/files/devd_queue')
-rw-r--r--sys-freebsd/freebsd-sbin/files/devd_queue50
1 files changed, 50 insertions, 0 deletions
diff --git a/sys-freebsd/freebsd-sbin/files/devd_queue b/sys-freebsd/freebsd-sbin/files/devd_queue
new file mode 100644
index 0000000..d42cb83
--- /dev/null
+++ b/sys-freebsd/freebsd-sbin/files/devd_queue
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# Notify the rc system that we're in the background
+export IN_BACKGROUND=true
+
+arg1="$1"
+if [ -z "$arg1" ] ; then
+ echo "Command required" > /dev/stderr
+ exit 1
+fi
+shift
+
+case "$arg1" in
+ add)
+ if [ -z "$1" ] ; then
+ echo "Command missing!" > /dev/stderr
+ exit 1
+ fi
+
+ # If we don't have a queue then just run
+ if [ ! -d /var/run/devd ] ; then
+ "$@"
+ exit $?
+ fi
+
+ cmd="$1"
+ args="$*"
+ if [ "$cmd" = "env" ] ; then
+ shift
+ while echo "$1" | grep -q "="; do
+ shift
+ [ "$1" = "--" ] && shift && break
+ done
+ cmd="$1"
+ fi
+ echo "$args" > /var/run/devd/$(basename "$cmd")
+ ;;
+ flush)
+ while ! rmdir /var/run/devd 2>/dev/null ; do
+ for cmd in $(cd /var/run/devd; ls) ; do
+ args=$(cat /var/run/devd/$cmd)
+ rm -f /var/run/devd/$cmd
+ $args
+ done
+ done
+ ;;
+ *)
+ echo "Unknown command $arg1"
+ ;;
+esac