#!/bin/sh

# usage: version [-M] [-m] <source file>...

if [ $1 = "-M" ] ; then
	inc_major=TRUE
	shift
fi
if [ $1 = "-m" ] ; then
	inc_minor=TRUE
	shift
fi

for i in $*; do
	if [ ! -w $i ] ; then
		if [ -f RCS/$i,v ] ; then
			co -l $i
		else
			chmod +w $i
		fi
	fi
	name=`grep "^#define.*VER_MAJOR" $i \
		| sed "s/^#define[ 	]*//" \
		| sed "s/_VER_MAJOR.*$//"`
	if [ ! $name ] ; then
		echo "No version info in $i"
		continue 
	fi
	major=`grep "^#define.*VER_MAJOR" $i | awk '{ print $3 }'`
	minor=`grep "^#define.*VER_MINOR" $i | awk '{ print $3 }'`
	patch=`grep "^#define.*VER_PATCH" $i | awk '{ print $3 }'`

	if [ $inc_major ] ; then
		major=$((major+1))
		minor=0
		patch=0
		str="$major.$minor"
		echo "==============================================================================" \
			>> $name.log
	elif [ $inc_minor ] ; then
		minor=$((minor+1))
		patch=0
		str="$major.$minor"
		echo "------------------------------------------------------------------------------" \
			>> $name.log
	else
		patch=$((patch+1))
		str="$major.$minor.$patch"
	fi	
	date=`date +"%B %d, %Y"`
	time=`date +%T`
	ndate=`date +"%m\/%d\/%y"`	

	echo "Enter comments for $name v$major.$minor.$patch:"
	comments=`cat`
	echo -n "$name v$major.$minor.$patch " >> $name.log
	echo "($date: $time)" >> $name.log
	echo "$comments" | sed "s/^/	/" >> $name.log
	echo >> $name.log

	cp $i $i.bak
	cat $i.bak \
		| sed "s/^#define.*$name""_VER_MAJOR.*$/#define $name""_VER_MAJOR	$major/" \
		| sed "s/^#define.*$name""_VER_MINOR.*$/#define $name""_VER_MINOR	$minor/" \
		| sed "s/^#define.*$name""_VER_PATCH.*$/#define $name""_VER_PATCH	$patch/" \
		| sed "s/^#define.*$name""_VER_STR.*$/#define $name""_VER_STR	\"$str\"/" \
		| sed "s/^#define.*$name""_VER_DATE.*$/#define $name""_VER_DATE	\"$date\"/" \
		| sed "s/^#define.*$name""_VER_NDATE.*$/#define $name""_VER_NDATE	\"$ndate\"/" \
		> $i
	if [ -f RCS/$i,v ] ; then
		rcs -l $i
		ci -NR_$major_$minor_$patch $i < $name.log
		if [ $? = 0 ] ; then
			rm $name.log
			co -u $i
		fi
	fi
done

