#!/bin/sh

# Tests for the sourcecode base itself.
# Copyright 2006 by Mike Frysinger <vapier@gentoo.org>
# Licensed under GPL v2, see file LICENSE for details.

[ -n "$srcdir" ] || srcdir=$(pwd)
. testing.sh


#
# if we don't have the sourcecode available, let's just bail
#
[ -s "$srcdir/../Makefile" ] || exit 0
[ -s "$srcdir/../include/applets.h" ] || exit 0


#
# make sure all usage strings are properly escaped.  oftentimes people miss
# an escape sequence so we end up with:
# #define foo_usage \
#       " this line is ok" \
#       " as is this line"
#       " but this one is broken as the \ is missing from above"
#
${CROSS_COMPILE}cpp -dD -P $srcdir/../include/usage.h \
	| sed -e '/^#define/d' -e '/^$/d' > src.usage.escaped
testing "Usage strings escaped" "cat src.usage.escaped" "" "" ""
rm -f src.usage.escaped


#
# verify the applet order is correct in applets.h, otherwise
# applets won't be called properly.
#
sed -n -e '/^USE_[A-Z]*(APPLET/{s:,.*::;s:.*(::;s:"::g;p}' \
	$srcdir/../include/applets.h > applet.order.current
LC_ALL=C sort applet.order.current > applet.order.correct
testing "Applet order" "diff -u applet.order.current applet.order.correct" "" "" ""
rm -f applet.order.current applet.order.correct


#
# check for misc common typos
#
find $srcdir/../ \
	'(' -type d -a '(' -name .svn -o -name testsuite ')' -prune ')' \
	-o '(' -type f -a -print0 ')' | xargs -0 \
	grep -I \
		-e '\<compatability\>' \
		-e '\<compatable\>' \
		-e '\<fordeground\>' \
		-e '\<depency\>' -e '\<dependancy\>' -e '\<dependancies\>' \
		-e '\<defalt\>' \
		-e '\<remaing\>' \
		-e '\<queueing\>' \
		-e '\<detatch\>' \
		-e '\<sempahore\>' \
		-e '\<reprenstative\>' \
		-e '\<overriden\>' \
		-e '\<readed\>' \
		-e '\<formated\>' \
		-e '\<algorithic\>' \
		-e '\<deamon\>' \
		-e '\<derefernce\>' \
		-e '\<acomadate\>' \
		| sed -e "s:^$srcdir/\.\./::g" > src.typos
testing "Common typos" "cat src.typos" "" "" ""
rm -f src.typos


#
# don't allow obsolete functions
#
find $srcdir/.. '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 \
	grep -E -e '\<(bcmp|bcopy|bzero|getwd|index|mktemp|rindex|utimes|sigblock|siggetmask|sigsetmask)\>[[:space:]]*\(' \
	| sed -e "s:^$srcdir/\.\./::g" > src.obsolete.funcs
testing "Obsolete function usage" "cat src.obsolete.funcs" "" "" ""
rm -f src.obsolete.funcs


#
# don't allow obsolete headers
#
find $srcdir/.. '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 \
	grep -E -e '\<(malloc|memory|sys/(errno|fcntl|signal|stropts|termios|unistd))\.h\>' \
	| sed -e "s:^$srcdir/\.\./::g" > src.obsolete.headers
testing "Obsolete headers" "cat src.obsolete.headers" "" "" ""
rm -f src.obsolete.headers


exit $FAILCOUNT
