summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--init17
-rw-r--r--init_functions16
2 files changed, 18 insertions, 15 deletions
diff --git a/init b/init
index 7cd812f..3c852d9 100644
--- a/init
+++ b/init
@@ -23,7 +23,7 @@ else
fi
for d in ${disablehooks//,/ }; do
- eval "hook_${d}=disabled"
+ [ -e "/hooks/$d" ] && chmod 644 "/hooks/$d"
done
[ -n "${earlymodules//[[:space:]]}" ] && modprobe -qab ${earlymodules//,/ }
@@ -37,20 +37,7 @@ if [ -z "${rootdelay}" ] || ! [ "${rootdelay}" -ge 0 ]; then
rootdelay=10
fi
-if [ -e "/hooks" ]; then
- for h in ${HOOKS}; do
- TST=""
- eval "TST=\$hook_${h}"
- if [ "${TST}" != "disabled" ]; then
- run_hook () { msg "${h}: no run function defined"; }
- if [ -e "/hooks/${h}" ]; then
- . /hooks/${h}
- msg ":: Running Hook [${h}]"
- run_hook
- fi
- fi
- done
-fi
+run_hookfunctions 'run_hook' 'hook' $HOOKS
# honor the old behavior of break=y as a synonym for break=premount
if [ "${break}" = "y" ] || [ "${break}" = "premount" ]; then
diff --git a/init_functions b/init_functions
index 60532d2..1bebf45 100644
--- a/init_functions
+++ b/init_functions
@@ -44,6 +44,22 @@ major_minor_to_device() {
return 1
}
+run_hookfunctions() {
+ local hook fn=$1 desc=$2
+
+ shift 2
+ for hook in "$@"; do
+ [ -x "/hooks/$hook" ] || continue
+
+ unset "$fn"
+ . "/hooks/$hook"
+ type "$fn" >/dev/null || continue
+
+ msg ":: running $desc [$hook]"
+ "$fn"
+ done
+}
+
parse_cmdline() {
local w in_quotes lhs rhs
in_quotes=0