#!/bin/bash

VERSION=v`head -2 /usr/src/linux/Makefile | \
	awk '{ printf "%s",$3 }'`

DIR=/usr/src/linux/drivers/char/speakup

echo "Checking in $VERSION"

#  check for CVSROOT stuff
if [ ! -d ${DIR}/CVS ] && [ "$CVSROOT" == "" ]; then
	echo 'CVSROOT not set.  Enter it below.'
	read -p 'CVSROOT> ' CVSROOT
	[ "$CVSROOT" == "" ] && exit
	export CVSROOT
	cvs login || exit
fi

#  do I have a new version to deal with?
CVS_ADD=n
if [ ! -d ${DIR}/diff-${VERSION}/CVS ]; then
	CVS_ADD=y
fi

#  make patch files
echo -n 'Creating CVS files ['
for i in `cat ${DIR}/patchlist-${VERSION}`; do
	patch=`echo $i | cut -f 1 -d ,`
	filebase=`echo $i | cut -f 2 -d ,`

	mkdir -p ${DIR}/diff-${VERSION}
	fname="${DIR}/diff-${VERSION}/${filebase//\//^}"

	if [ "$patch" == "0" ]; then
		#  Just copy it
		if [ $fname.copy -ot $filebase ] || [ ! -e $fname.copy ]; then
			echo -n c
			cp $filebase $fname.copy
		else
			echo -n .
		fi
	else
		#  Make a patch
		if [ -e $filebase.orig ]; then
		    if [ $fname.patch -ot $filebase ] || [ ! -e $fname.patch ] ; then
			echo -n p
			diff -urN $filebase.orig $filebase > $fname.patch
		    else
			echo -n .
		    fi
		else
		    #  can't patch w/o .orig
		    echo !
		    echo Error: $filebase.orig doesn\'t exist!
		    exit
		fi
	fi
done
echo '] done.'

[ "$1" == "-p" ] && exit

cd ${DIR}

echo 'Creating cvsversion.h'
echo '#define CVSVERSION " CVS:' `date` '"' > cvsversion.h

echo 'Sending to CVS...'
if [ "$CVS_ADD" == "y" ]; then
	cvs add diff-${VERSION} || exit
	cvs add diff-${VERSION}/* || exit
fi
cvs -Q ci || exit
