Michael Biebl wrote:
 > Regarding your patch: I discussed that with my co-maintainer. His opinion is,
> that your proposed patch is rather a hack then a proper solution, as you would
> be unable to suspend for a whole day in case of stale lockfile. His suggestion
> was, to use /usr/bin/flock.

Attached is a proposed patch which uses flock.


-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
diff --git a/src/pm-action.in b/src/pm-action.in
index e148585..cff96d7 100755
--- a/src/pm-action.in
+++ b/src/pm-action.in
@@ -47,15 +47,9 @@ if [ "$(id -u)" != "0" ]; then
 	exit 1
 fi
 
-remove_suspend_lock()
-{
-	release_lock "${STASHNAME}.lock"
-}
-
-try_lock "${STASHNAME}.lock" || exit 1
-
-# make sure we release the lock no matter how we exit
-trap remove_suspend_lock 0
+touch "${STASHNAME}.lock"
+exec 3<"${STASHNAME}.lock"
+flock -w 0.1 3 || { echo "Lock taken already. Exiting now."; exit 1; }
 
 # clean up from the last run
 rm -rf "${STORAGEDIR}"
diff --git a/src/pm-powersave.in b/src/pm-powersave.in
index dff1f64..335dfff 100644
--- a/src/pm-powersave.in
+++ b/src/pm-powersave.in
@@ -27,14 +27,10 @@
 export STASHNAME=pm-powersave
 . "@PM-UTILS-LIBDIR@/pm-functions"
 
-remove_powersave_lock() {
-    release_lock "${STASHNAME}.lock"
-}
+touch "${STASHNAME}.lock"
+exec 3<"${STASHNAME}.lock"
+flock -w 0.1 3 || { echo "Lock taken already. Exiting now."; exit 1; }
 
-# take the powersave lock.
-# ensure it gets released no matter how we exit.
-try_lock "${STASHNAME}.lock" || exit 1
-trap remove_powersave_lock 0
 mkdir -p "${STORAGEDIR}"
 rm -f "${INHIBIT}"
 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to