#!/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


#
# 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)\>[[: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
