summaryrefslogtreecommitdiffstats
path: root/src/boot-env/pbs/uclib-rootfs/bin/handleEvents
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot-env/pbs/uclib-rootfs/bin/handleEvents')
-rwxr-xr-xsrc/boot-env/pbs/uclib-rootfs/bin/handleEvents38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/boot-env/pbs/uclib-rootfs/bin/handleEvents b/src/boot-env/pbs/uclib-rootfs/bin/handleEvents
new file mode 100755
index 00000000..9bb78951
--- /dev/null
+++ b/src/boot-env/pbs/uclib-rootfs/bin/handleEvents
@@ -0,0 +1,38 @@
+#!/bin/hush
+
+# wait for lock
+while [ -f /tmp/bbinit.lock ]
+do
+ sleep 0.1
+done
+
+# lock eventhandler
+touch /tmp/bbinit.lock
+
+# source list of finished events
+[ -f /tmp/events ] && . /tmp/events
+
+# go through all unhandled events
+for f in $( ls -1 /etc/events.d/ )
+do
+ . /etc/events.d/$f
+
+ # check dependencies
+ eval dep=\$${f}_depends
+ havealldeps=1
+ for d in $dep
+ do
+ eval havedep=\$have${d}
+ [ "x$havedep" == "x1" ] || havealldeps=0
+ done
+
+ # if nothing is missing execute script
+ if [ "x$havealldeps" == "x1" ]; then
+ echo executing $f
+ /etc/bbinit.d/$f &
+ rm /etc/events.d/$f
+ fi
+done
+
+# unlock eventhandler
+rm /tmp/bbinit.lock