[Pm-utils] [PATCH 1/6] Do not actually sleep if one of the hooks failed.
Victor Lowther
victor.lowther at gmail.com
Mon Mar 17 17:35:34 PDT 2008
This patch series aims to improve logging and abort the suspend/resume process
if a hook fails with an unknown error code.
Skips the actual sleep/wake cycle if one of our hooks failed with an
unknown error code.
---
pm/pm-functions.in | 8 ++++++--
src/pm-action.in | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/pm/pm-functions.in b/pm/pm-functions.in
index 2c97848..2966baf 100644
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -97,13 +97,15 @@ remove_suspend_lock()
}
hook_exit_status(){
+ local ret=0
case $1 in
0) log "success." ;;
$NA) log "not applicable." ;;
$NX) log "not executable." ;;
$DX) log "disabled." ;;
- *) log "Returned exit code $1." ;;
+ *) log "Returned exit code $1."; ret=$1 ;;
esac
+ return $ret
}
hook_ok()
@@ -129,6 +131,7 @@ run_hooks() {
local base
local hook
local oifs="${IFS}"
+ local ret=0
# the next two lines are not a typo or a formatting error!
local nifs="
"
@@ -147,9 +150,10 @@ run_hooks() {
IFS="${oifs}"
"${hook}" $2
)
- hook_exit_status $?
+ hook_exit_status $? || ret=$?
done
IFS="${oifs}"
+ return $ret
}
init_logfile()
diff --git a/src/pm-action.in b/src/pm-action.in
index bc4022c..bedfd83 100644
--- a/src/pm-action.in
+++ b/src/pm-action.in
@@ -72,8 +72,8 @@ init_logfile "${PM_LOGFILE}"
# Make sure we are not inhibited before we start.
rm -f "${INHIBIT}"
-# run the sleep hooks
-run_hooks sleep "$ACTION"
+# run the sleep hooks. If run_hooks returns a failure code, inhibit sleeping
+run_hooks sleep "$ACTION" || touch "$INHIBIT"
# Sleep only if we know how and if a hook did not inhibit us.
command_exists "do_$ACTION" && [ ! -e "$INHIBIT" ] && { sync; "do_$ACTION"; }
--
1.5.4.3
More information about the Pm-utils
mailing list