:
# remove extra #include's

# src/tools/pginclude/pgrminclude

trap "rm -f /tmp/$$.c /tmp/$$.o /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
find . \( -name CVS -a -prune \) -o -type f -name '*.[ch]' -print |
grep -v '\./postgres.h' |
grep -v '\./pg_config.h' |
grep -v '\./c.h' |
while read FILE
do
	if [ `expr $FILE : '.*\.h$'` -ne 0 ]
	then	IS_INCLUDE="Y"
	else	IS_INCLUDE="N"
	fi

	# loop through all includes
	cat "$FILE" | grep "^#include" |
	sed 's/^#include[ 	]*[<"]\([^>"]*\).*$/\1/g' |
	while read INCLUDE
	do
		if [ "$1" = "-v" ]
		then	echo "checking $FILE $INCLUDE"
		fi

		[ -s /usr/include/$INCLUDE ] && continue
		[ "$INCLUDE" = postgres.h ] && continue
		[ "$INCLUDE" = postgres_fe.h ] && continue
		[ "$INCLUDE" = config.h ] && continue
		[ "$INCLUDE" = c.h ] && continue

		# preserve configure-specific includes
		# these includes are surrounded by #ifdef's
		grep -B1 '^#include[ 	][ 	]*[<"]'"$INCLUDE"'[>"]' "$FILE" |
		     egrep -q '^#if|^#else' && continue
		grep -A1 '^#include[ 	][ 	]*[<"]'"$INCLUDE"'[>"]' "$FILE" |
		     egrep -q '^#else|^#endif' && continue

		# remove defines from include files
		if [ "$IS_INCLUDE" = "Y" ]
		then	cat "$FILE" | grep -v "^#if" | grep -v "^#else" |
			grep -v "^#endif" | sed 's/->[a-zA-Z0-9_\.]*//g' >/tmp/$$a
		else	cat "$FILE" >/tmp/$$a
		fi

		# set up initial file contents
		grep -v '^#include[ 	][ 	]*[<"]'"$INCLUDE"'[>"]' \
			/tmp/$$a >/tmp/$$b

		if [ "$IS_INCLUDE" = "Y" ]
		then	echo "#include \"postgres.h\"" >/tmp/$$.c
		else	>/tmp/$$.c
		fi

		echo "#include \"/tmp/$$b\"" >>/tmp/$$.c
		echo "void include_test(void);" >>/tmp/$$.c
		echo "void include_test() {" >>/tmp/$$.c
		if [ "$IS_INCLUDE" = "Y" ]
		then	pgdefine "$FILE" >>/tmp/$$.c
		fi
		echo "}" >>/tmp/$$.c

		cc -fsyntax-only -Werror -Wall -Wmissing-prototypes \
			-Wmissing-declarations -I/pg/include -I/pg/backend \
			-I/pg/interfaces/libpq -I`dirname $FILE` $CFLAGS -c /tmp/$$.c \
			-o /tmp/$$.o >/tmp/$$ 2>&1
		if [ "$?" -eq 0 ]
		then	echo "$FILE $INCLUDE"
			if [ "$1" = "-v" ]
			then	cat /tmp/$$
				cat /tmp/$$b
				cat /tmp/$$.c
			fi
			grep -v '^#include[ 	][ 	]*[<"]'"$INCLUDE"'[>"]' \
				"$FILE" >/tmp/$$b
			mv /tmp/$$b "$FILE"
		fi
	done
done
