#!/bin/bash

echo Checking for forgotten files in $PWD ...

installed_list=$(mktemp -t installed.XXXX)
sources_list=$(mktemp -t sources.XXXX)

if test "$1" = "--non-recursive" ; then
    findopt="-maxdepth 1"
    shift 1
else
    findopt=""
fi

# Normalize the parameters - i.e. make sure that all paths are properly relative
echo "$@" | xargs --no-run-if-empty --max-args=1 echo |
	while read file
	do
		if test -f "$file" ; then
			echo "$file"
		fi
	done | sed 's/^[a-zA-Z0-9_-]/.\/&/' | sort  > $installed_list

find . $findopt -type f \
	! -path '*/CVS/*' \
	! -path '*/\.svn/*' \
	! -name '*\.bak' \
	! -name '\.*\.swp' \
	! -name '\.*\.swo' \
	! -name '\.cvsignore' \
	! -name '\.build-ignore' \
	! -name '*\.orig' \
	! -name '*~' \
	! -name '.#*' \
	! -name '#*#' \
	! -name 'Makefile' \
	! -name 'Makefile\.am' \
	! -name 'Makefile\.in' \
	! -name 'nohup\.out' \
	! -name 'core' \
	! -name 'core\.*' \
	! -name 'TAGS' \
        |
	( if test -f .build-ignore ; then
		grep --invert-match --file=.build-ignore
	else
		cat 
	fi ) |
	sort > $sources_list

forgotten=$(comm -13 $installed_list $sources_list)
if test -n "$forgotten" ; then
	echo Files that appear to have been forgotten:
	comm -13 $installed_list $sources_list | sed 's/^/\t/g'
	echo Either add them to the command line of list-forgotten-files
	echo in Makefile.am or add a suitable regexp to 
	echo $PWD/.build-ignore
fi

rm -f $installed_list
rm -f $sources_list
test -z "$forgotten"
