include_storage="$0"
LOCK(){
+ local lock timeout block
lock="${1}.lock"
timeout="${2-20}"
if [ \! -w "${lock%/*}" ] || [ -e "$lock" -a \! -d "$lock" ]; then
return 1
fi
- while ! mkdir "$lock"; do
+ while ! mkdir "$lock" 2>&-; do
block="$(cat "$lock/pid" || printf 1)"
if ! { ps -eo pid |grep -qwF "$block"; }; then
printf 'Overriding stale lock: %s\n' "$lock" >&2
}
RELEASE(){
+ local lock
lock="${1}.lock"
if [ "$(cat "$lock/pid")" = "$$" ]; then
rm "$lock/pid"
s;\n;\\n;g;
s;\t;\\t;g;
s;\r;\\r;g;
+ s;\+;\\+;g;
+ s; ;+;g;
'
}
s;((^|[^\\])(\\\\)*)\\n;\1\n;g;
s;((^|[^\\])(\\\\)*)\\t;\1\t;g;
s;((^|[^\\])(\\\\)*)\\r;\1\r;g;
+ s;((^|[^\\])(\\\\)*)\+;\1 ;g;
tX;
+ s;((^|[^\\])(\\\\)*)\\\+;\1+;g;
s;\\\\;\\;g;
'
}