#!/bin/ash
# counter by A. Costa
# 8/27/00

# Functions

Error()		# usage: Error string
{
	echo "$0: Error, $1" >& 2
	exit 2
}

IsNumber()	# usage: IsNumber string
{		#  returns: flag
	[ $1 -eq $1 ] 2> /dev/null
}

IsWhole()	# usage same as previous...
{
	[ $1 -gt 0 ] 2> /dev/null
}

# Main
# set and check parameters

convert=%s	seperator=" "	inc=1

case $# in
	0)	echo -e " $0 -- output a series of numbers\n"\
			" Usage:	$0 end#"
		for f in "start# end#" "step#" prefix suffix format seperator
		do
			string="$string $f"
			echo "		$0$string"
		done
		exit;;
	1)	start=1		end=$1;;
	2)	start=$1	end=$2;;
	3|4|5)	start=$1	end=$2		inc=$3;;
	6)	start=$1	end=$2		inc=$3	convert="$6";; 
	7)	start=$1	end=$2		inc=$3	convert="$6" \
		seperator="$7";;
	*)	Error "$# is too many parameters.";;
esac

for f in $start $end $inc
do
	IsNumber $f || Error "\"$f\" is not a number"
done

IsWhole $inc ||  Error "bad increment, \"$f\" is less than 1."

# set up AWK code

if [ $start -gt $end ]
then
    inc="-$inc"
    op='>'
else
    op='<'
fi	


awk 'BEGIN \
	{ i='"$start"'
	s="'"$seperator"'"
	a="'"$4"'"
	z="'"$5"'"
	printf("%s'"$convert"'", a, i, i ,i )
	printf("%s", z)
	for ( i+='"$inc"'; i'"$op= $end"'; i+='"$inc"' )
		{ printf("%s%s'"$convert"'", s, a, i, i, i)
		printf("%s", z) } 
	print}' 2> /dev/null

[ $? -ne 0 ] && Error "in $0's inner awk script.  Maybe the conversion string?"