#!/bin/sh # lock a file holding a number, increment it, return new number. PATH=/usr/local/bin:/bin:/usr/bin export PATH die () { echo "$*" >& 2 exit 1 } case "$1" in "") die "usage: `basename $0` file" ;; *) inc=$1; name=`echo $inc | tr -s '/' '.'` ;; esac lock=/tmp/LCK..$name trap "rm -f $lock" 0 1 2 3 15 if shlock -f $lock -p $$ then test -f $inc || echo 0 > $inc test -f $inc || die "$inc not a regular file" n=`cat $inc` n=`expr $n + 1` echo $n > $inc echo $n fi exit 0