summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/util/includes.sh
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-09 13:18:06 +0200
committerRobert Vollmert <rvollmert@gmx.net>2009-10-09 15:59:39 +0200
commit704b8970f4aab8fbe5638a7d3fab6601c1f17484 (patch)
tree247e899a62af8e213e434d436ce7c97d2ed60f9c /crawl-ref/source/util/includes.sh
parente604c285417f3c2fd209d599738a33fc57cdc2b4 (diff)
downloadcrawl-ref-704b8970f4aab8fbe5638a7d3fab6601c1f17484.tar.gz
crawl-ref-704b8970f4aab8fbe5638a7d3fab6601c1f17484.zip
Further improvements to util/includes.sh.
Currently running $ checkall | cleanup | removelst strips a bunch of includes while the result still compiles (Unix console build).
Diffstat (limited to 'crawl-ref/source/util/includes.sh')
-rw-r--r--crawl-ref/source/util/includes.sh43
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'
+}
+