#!/bin/sh
#

if git rev-parse --verify HEAD >/dev/null 2>&1 ; then
	against=HEAD
else
	# Initial commit: diff against an empty tree object
	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
	fi

files=`git diff-index --name-only --cached $against`

# Redirect output to stderr.
exec 1>&2

#-------------------------------------------------------------------------------
# Check the copyright notice of all files to be commited.

user=`git config --global user.email`
year=`date +"%Y"`

missing_copyright_year=""
for f in $files ; do
	if test ! -f $f ; then
		# If file does not exist, it was probably part of a rename or something.
		echo > /dev/null
	elif test `head -5 $f | grep -c -i copyright` -gt 0 ; then
		user_copyright=`grep -i copyright $f | grep $user | grep -c $year`
		if test $user_copyright -lt 1 ; then
			missing_copyright_year="$missing_copyright_year $f"
			fi
		fi
	done

if test -n "$missing_copyright_year" ; then
	echo "Missing current year in the copyright notice of the following files:"
	for f in $missing_copyright_year ; do
		echo "    $f"
		done
	echo "Commit aborted."
	exit 1
	fi

#-------------------------------------------------------------------------------
# Check the formatting of all C files.

cfiles=""
for f in $files ; do
	if test `echo $f | grep -c "\.[ch]$"` -gt 0 ; then
		cfiles="$cfiles $f"
		fi
	done

if test -n "$cfiles" ; then
	Scripts/cstyle.py $cfiles
	if test $? -ne 0 ; then
		echo
		echo "Commit aborted. Fix the above error before trying again."
		exit 1
		fi
	fi

#-------------------------------------------------------------------------------
# Prevent files with non-ascii filenames from being committed.

if test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 ; then
	echo "Error: Attempt to add a non-ascii file name."
	echo
	echo "This can cause problems if you want to work"
	echo "with people on other platforms."
	echo
	echo "To be portable it is advisable to rename the file ..."
	echo
	echo "Commit aborted."
	exit 1
	fi

exit 0
