#!/bin/sh # # This script scans the whole source code for symbols of the form # 'xxx(yyy' where: # xxx is either DECLARE_DEBUG_CHANNEL or DEFAULT_DEBUG_CHANNEL # 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 specifies 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 one 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 # Patrik Stridvall # 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