[Pm-utils] [PATCH 2/6] Add logic to skip hooks if a hook fails when running forwards.
Victor Lowther
victor.lowther at gmail.com
Mon Mar 17 17:35:39 PDT 2008
Yes, there are syntax errors that yield logic errors.. These are fixed a
few patches later.
This change adds the following behaviour:
* When running hooks forward, keep track of the last hook that ran sucessfully.
* If a hook fails with an unrecognized error code when running hooks forwards,
do not run the rest of the hooks.
* When running hooks backwards, skip over hooks we did not run when we ran
the hooks in normal order.
All these changes are implemented at the run_hooks level. No other code is
involved.
---
pm/pm-functions.in | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/pm/pm-functions.in b/pm/pm-functions.in
index 2966baf..4fa1ad1 100644
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -140,6 +140,8 @@ run_hooks() {
for base in $(IFS="${oifs}"; for f in "$syshooks/"*[!~] "$phooks/"*[!~];
do [ -O "$f" ] && echo ${f##*/} ; done | $sort | uniq) ;
do
+ # Skip any hooks we did not run when running going forward.
+ [ "$3" -a "$LAST_HOOK" -a "$base" > "$LAST_HOOK" ] && continue
if [ -f "$syshooks/$base" ]; then
hook="$syshooks/$base"
elif [ -f "$phooks/$base" ]; then
@@ -150,7 +152,14 @@ run_hooks() {
IFS="${oifs}"
"${hook}" $2
)
- hook_exit_status $? || ret=$?
+ if hook_exit_status $?; then
+ # save the name of this hook if we are not
+ # running in reverse.
+ [ -z "$3" ] && LAST_HOOK="$base"
+ else
+ ret=$?
+ [ -z "$3" ] && break
+ fi
done
IFS="${oifs}"
return $ret
--
1.5.4.3
More information about the Pm-utils
mailing list