diff options
Diffstat (limited to 'crawl-ref/source/util/includes.sh')
-rw-r--r-- | crawl-ref/source/util/includes.sh | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/crawl-ref/source/util/includes.sh b/crawl-ref/source/util/includes.sh index 7eedf1d3c6..f2583ed87a 100644 --- a/crawl-ref/source/util/includes.sh +++ b/crawl-ref/source/util/includes.sh @@ -5,15 +5,31 @@ # $ . util/include.sh # $ checkall - # Tries to list all names defined in the header file $1. # Indented names are assumed to be members that don't need to be checked, # which will fail for indented declarations with #ifdefs. +_wrap_etags() +{ + tmp=$1.etags.h + # clean up const member functions since they confuse etags + sed -e 's/) const\;/)\;/' < $1 > $tmp + etags --declarations $tmp -o - + rm $tmp +} + names () { b=$(basename $1 .h); - etags --declarations -D $1 -o - | grep '^[#a-z]' | grep -v '^'$b'\.h' \ - | tr '\177' '\t' | awk '{ print $(NF-1) }' + { + _wrap_etags $1 \ + | grep '\(^[#a-z]\|^ *[0-9A-Z_][0-9A-Z_][0-9A-Z_]\)' \ + | grep -v '^'$b'\.h' \ + | tr '\177' '\t' | awk '{ print $(NF-1) }' \ + # etags misses namespace declarations + grep namespace $1 | awk '{ print $NF }' + # and some function definitions... + grep '^[a-z]' $1 | grep '(' | cut -d'(' -f 1 | awk '{ print $NF }' + } | sed -e 's/^\**//;s/[^a-zA-Z0-9]$//' | sort | uniq } # lists possible uses in $2 of names defined in $1 @@ -66,8 +82,11 @@ checkall () remove () { b=$(basename $1 .h) - sed -e '/^#include "'$b'\.h"$/d' < $2 > $2.rmincl - mv $2.rmincl $2 + re='^#include "'$b'\.h"$' + if grep "$re" $2 > /dev/null; then + sed -e '/^#include "'$b'\.h"$/d' < $2 > $2.rmincl + mv $2.rmincl $2 + fi } # remove doubtful includes for a list as output by checkall. @@ -78,3 +97,17 @@ removelst () done } +# remove special includes +cleanup () +{ + sed -e '/^quiver.h debug.cc$/d; + /^quiver.h command.cc$/d; + /^quiver.h it_use2.cc$/d; + /^quiver.h output.cc$/d; + /^ghost.h kills.cc$/d; + /^cmd-\(name\|keys\)\.h macro.cc$/d; + /^mon-spll.h mon-util.cc$/d; + /^AppHdr.h /d; + / artefact.cc/d' +} + |