#!/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="/tmp/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

[ -n "$*" ] && $@ 2>"$lockfile"
[ -s "$lockfile" ] && zaf_wrn <"$lockfile"