#!/usr/bin/env bash

RETVAL=0

# params - paths to the source files to search
SRC="$*"

# param FUNC - name of the function in compat to check
check_compat_func () {
	FILES=`grep -rE "([^[:alnum:]]|^)$1\([^\)]+\)" --include=\*.{c,h} $SRC | cut -d: -f1 | uniq`
	for f in $FILES; do
		grep -q "#include \"compat.h\"" $f
		if [ $? -ne 0 ]; then
			echo "Missing #include \"compat.h\" in file $f for function $1()"
			RETVAL=$((RETVAL+1))
		fi
	done
}

check_compat_macro () {
	FILES=`grep -rE "([^[:alnum:]]|^)$1([^[:alnum:]]|$)" --include=\*.{c,h} $SRC | cut -d: -f1 | uniq`
	for f in $FILES; do
		grep -q "#include \"compat.h\"" $f
		if [ $? -ne 0 ]; then
			echo "Missing #include \"compat.h\" in file $f for macro $1"
			RETVAL=$((RETVAL+1))
		fi
	done
}

check_compat_func vdprintf
check_compat_func asprintf
check_compat_func vasprintf
check_compat_func getline
check_compat_func strndup
check_compat_func strnstr
check_compat_func strdupa
check_compat_func strchrnul
check_compat_func get_current_dir_name
check_compat_func pthread_mutex_timedlock
check_compat_func UNUSED
check_compat_macro _PACKED

exit $RETVAL
