#!/bin/sh
#
# This script scans the whole source code for symbols of the form 
# 'xxx(yyy' where:
#        xxx is either TRACE, WARN, ERR or WARN
#        yyy is a C identifier 
# It outputs on the standard output a sorted list of the 
# yyy identifiers found in the .c files. 
# Each identifier is reported once. Header files are not scanned.
#
# The script can be given an argument that specify the files to be
# searched according to the following scheme:
#    - if the argument does not contain a slash (/), the script
#      will search the tree rooted in the current directory for
#      files that match that description. You can also pass
#      wildcard arguments, but remember to quote them to prevent
#      expansion by the shell
#    - if the argument does contain a slash, only that file is
#      searched
#    - if no argument is given, the argument defaults to "*.c"
#      that is, all C files are searched.
#    - if more than a argument is given, only the listed files are
#      searched. Note that in this case, the script will not
#      attempt to find them in some subdirectories, but rather
#      it will try to open them in the current directory.
# Thus, if you want to disable the automatic searching when the file
# name does not contain a /, either prefix the filename with ./
# or add /dev/null as another argument.
#
# Dimitrie O. Paun <dimi@cs.toronto.edu>
# Patrik Stridvall <ps@leissner.se>
#

case "$#" in
    0 | 1)  files=${1:-'*.c'}
	    if [ `echo $files | sed 's/^\(.*\)\/$/\1/g'` = "$files" ]; then
		files=`find . -name "$files" -print`
	    fi;;
    *    )  files="$@";;
esac

(
grep -h "DECLARE_DEBUG_CHANNEL *(" $files /dev/null | \
    sed 's/.*DECLARE_DEBUG_CHANNEL( *\([A-Za-z0-9_]*\) *).*/\1/g'
grep -h "DEFAULT_DEBUG_CHANNEL *(" $files /dev/null | \
    sed 's/.*DEFAULT_DEBUG_CHANNEL( *\([A-Za-z0-9_]*\) *).*/\1/g'
) | sort | uniq
