On Thu, Mar 15, 2012 at 07:12:22PM -0600, Matthew Monaco wrote:
This has *not* been tested. I just wanted to see if there'd be any interest.
"cleanup_hook" is run in the reverse order of run_hooks, if available.
This would be useful to the dropbear hook in AUR. I know systemd is killing off processes automatically, but even if initcpio/initscripts started doing this, dropbear still sets up a network interface. Unlike the net hook, dropbear's setup is meant to be undone.
diff --git i/init w/init index 1f5f865..e9a6924 100644 --- i/init +++ w/init @@ -43,33 +43,48 @@ 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 + + for h in $(echo -n "${HOOKS} " | tac -s' '); do + TST="" + eval "TST=\$hook_${h}" + if [ "${TST}" != "disabled" ]; then + unset cleanup_hook + if [ -e "/hooks/${h}" ]; then + . /hooks/${h} + if [ "$(type -t foo 2>/dev/null)" == function ]; then + msg ":: Running Hook Cleanup [${h}]" + cleanup_hook + fi + fi + fi + done
I might be convinced that this is a decent idea if there was more than one use case for it (in particular, one that existed in the repos). Riffing on the theme, I'd rather see cleanup hook collection done when hooks are run, and not make a full second pass over the hooks... might look something like: for h in $HOOKS; do 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 if type run_cleanup >/dev/null; then CLEANUP_HOOKS="$hook $CLEANUP_HOOKS" fi fi fi done for h in $CLEANUP_HOOKS; do msg ":: Running Cleanup [$h]" . /hooks/$h run_cleanup done
fi
# honor the old behavior of break=y as a synonym for break=premount