##########################################################################
# Title      :	incfile - increase/decrease counter in file
# Author     :	Heiner Steven <heiner.steven@odn.de>
# Date       :	1995-01-13
# Requires   :	
# Category   :	File Utilities
# SCCS-Id.   :	@(#) incfile	1.3 04/01/06
##########################################################################
# Description
#	Increases or decreases a numerical counter in a file.
#	Install as both "incfile" and "decfile".
##########################################################################

PN=`basename "$0"`			# Program name - USED BELOW!
VER='1.3'

usage () {
    echo >&2 "$PN - manipulate counter in file, $VER (stv '95)
usage: $PN file [file ...]"
    exit 1
}

msg () {
    for i
    do echo "$PN: $i" >&2
    done
}

fatal () { msg "$@"; exit 1; }

case "$PN" in
    inc*|dec*)	;;
    *)
	fatal "Installation error: illegal script name \"$PN\"" \
	    "Script name must start with 'inc' or 'dec'";;
esac


while [ $# -gt 0 ]
do
    case "$1" in
					# Your flags here
	--)	shift; break;;
	-h)	usage;;
	-*)	usage;;
	*)	break;;			# First file name
    esac
    shift
done

[ $# -lt 1 ] && usage

exitcode=0
for file
do
    if [ -s "$file" ]
    then
	lines=`wc -l < "$file"`
	[ ${lines:-0} -ne 1 ] && {
	    msg "$file: counter file may only contain one line - ignored"
	    exitcode=1
	    continue
	}
	n=`head -1 "$file"`
    else
	case "$PN" in
	    inc*)	n=0;;
	    dec*)	n=1;;
	esac
    fi

    case "$PN" in
	inc*)	n=`expr ${n:-0} + 1`;;
	dec*)	n=`expr ${n:-1} - 1`
		[ ${n:-0} -lt 0 ] && n=0;;	# no negative values
    esac

    # Execute "echo" in subshell, so errors won't terminate this script
    (echo "$n" > "$file") || exitcode=1
    echo "$n"
done
exit $exitcode
