mirror of
https://github.com/limosek/zaf.git
synced 2024-11-24 19:39:08 +01:00
35 lines
639 B
Bash
35 lines
639 B
Bash
#!/bin/sh
|
|
|
|
. $(dirname $0)/preload.sh
|
|
|
|
help() {
|
|
zaf_err "$0 key cmd"
|
|
}
|
|
|
|
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"
|
|
|