1
0
mirror of https://github.com/limosek/zaf.git synced 2024-09-21 05:11:38 +02:00
limosek-zaf/lib/zaflock

35 lines
639 B
Plaintext
Raw Normal View History

2016-03-24 15:46:42 +01:00
#!/bin/sh
. $(dirname $0)/preload.sh
2016-03-24 15:46:42 +01:00
help() {
zaf_err "$0 key cmd"
2016-03-24 15:46:42 +01:00
}
lkey="$1"
[ -z "$lkey" ] && help
shift
[ -z "${ZAF_LOCK_SECONDS}" ] && seconds=5
[ -z "${ZAF_LOCK_FORCE}" ] && force=1
lockfile="${ZAF_TMP_DIR}/zaflock_${lkey}"
i=0
while [ -f "$lockfile" ] && [ $i -lt $seconds ]; do
sleep 1
i=$(expr $i + 1)
done
if [ -f "$lockfile" ] && [ -n "$force" ]; then
logger -s -t "zlock" -p daemon.warn "Releasing $lockfile!"
rm -f "$lockfile"
fi
if [ -f "$lockfile" ] && [ -z "$force" ]; then
logger -s -t "zlock" -p daemon.err "Could not get lock for $lockfile!"
exit 1
fi
touch "$lockfile"
[ -n "$*" ] && $@
rm -f "$lockfile"