#!/bin/bash

# countdir

# counts entries in a directory periodically
# displays number and how long it has been unchanged

# wernigm@post.ch 07-05-2000

########################################################

# Functions

usage() {
	echo
	echo $1
	echo
	echo "Usage: $0 <DIRNAME> [INTERVAL]"
	echo
	exit 1
}
# check command line

if [ $# -lt 1 ]; then
	usage "No directory specified"
fi

if [ ! $1 -o ! -d $1 ]; then
	usage "$1 does not appear to be a directory"
fi

DIR=$1
INTERVAL=60
if [ $2 -a -n $2 ]; then
	if ! expr $2 + 0 >/dev/null 2>&1; then
		usage "Interval must be numeric"
	fi
fi 
if expr $2 + 0 >/dev/null 2>&1; then
	if [ $2 -gt 0 ]; then
		INTERVAL=$2
	fi
fi

cnt=`ls -A $DIR | wc -l`
cnt2=$cnt
cnt3=-1

echo
echo "Counting files in $DIR every $INTERVAL seconds"
echo
while [ $cnt -gt 0 ]
	do
	cnt=`ls -A $DIR | wc -l`
	if [ $cnt -eq $cnt2 ]; then
		cnt3=`expr $cnt3 + 1`
	else  cnt3=0
	fi
#	if [ $cnt3 -gt 0 ]; then
#		secs=`expr \( $cnt3 - 1 \) \* $INTERVAL`
#	else secs=$cnt3
#	fi

	secs=`expr $cnt3 \* $INTERVAL`

	if [ $secs -lt 60 ]; 
		then TIME="$secs sec."
	elif [ $secs -ge 60 -a $secs -lt 3600 ];
		then
			MIN=`expr $secs / 60`
			SEC=`expr $secs % 60`
			TIME="$MIN min. $SEC sec."
	elif [ $secs -ge 3600 -a $secs -lt 86400 ];
		then
			HOUR=`expr $secs / 3600`
			TMP=`expr $secs / 60`
			MIN=`expr $TMP % 60`
			SEC=`expr $secs % 60`
			TIME="$HOUR hrs. $MIN min. $SEC sec."
	else
			DAY=`expr $secs / 86400`
			TMP=`expr $secs / 3600`
			HOUR=`expr $TMP % 24`
			TMP=`expr $secs / 60`
			MIN=`expr $TMP % 60`
			SEC=`expr $secs % 60`
			TIME="$DAY days $HOUR hrs. $MIN min. $SEC sec."
			
	fi
	
	echo "$cnt files ($TIME)"
	cnt2=$cnt
	sleep $INTERVAL
	done
