summaryrefslogtreecommitdiff
path: root/source3/script/findstatic.sh
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2002-06-13 07:06:19 +0000
committerAndrew Tridgell <tridge@samba.org>2002-06-13 07:06:19 +0000
commit2154ebce84c6cf376e7183e8c5f7ad0e17aead97 (patch)
tree64205390e853e5ef1270687444c9c261d86ea752 /source3/script/findstatic.sh
parentba590d3dc33da1bd16c518729c7b723c779a1569 (diff)
downloadsamba-2154ebce84c6cf376e7183e8c5f7ad0e17aead97.tar.gz
samba-2154ebce84c6cf376e7183e8c5f7ad0e17aead97.tar.bz2
samba-2154ebce84c6cf376e7183e8c5f7ad0e17aead97.zip
a useful script for finding global variables or functions that could
be static very very slow ... I leave it as an exercise for the reader to make this O(n) instead of O(n^2) (This used to be commit 7c035d473c7175163ad5db0373ed2fe6c739b968)
Diffstat (limited to 'source3/script/findstatic.sh')
-rwxr-xr-xsource3/script/findstatic.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/source3/script/findstatic.sh b/source3/script/findstatic.sh
new file mode 100755
index 0000000000..39c57a46f7
--- /dev/null
+++ b/source3/script/findstatic.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+# find a list of fns and variables in the code that could be static
+# Andrew Tridgell <tridge@samba.org>
+
+# rather linux specific, but that doesn't matter in this case
+# also very slow (order is N^2) but fast enough for this project
+
+declare -a FNS
+
+for f in $@; do
+ echo "Checking in $f"
+ T_FNS=`nm $f | grep ' T ' | cut -d' ' -f3`
+ C_FNS=`nm $f | egrep ' [DC] ' | cut -d' ' -f3`
+ if [ "$T_FNS" = "" -a "$C_FNS" = "" ]; then
+ echo "No public functions or data in $f"
+ continue
+ fi
+ for fn in $T_FNS; do
+ if [ $fn = "main" ]; then
+ continue
+ fi
+ found=0
+ for f2 in $@; do
+ if [ $f != $f2 ]; then
+ FNS2=`nm $f2 | egrep ' U ' | awk '{print $2}'`
+ for fn2 in $FNS2; do
+ if [ $fn2 = $fn ]; then
+ found=1
+ break
+ fi
+ done
+ fi
+ done
+ if [ $found = 0 ]; then
+ echo "Global function $fn is unique to $f"
+ fi
+ done
+
+ for fn in $C_FNS; do
+ if [ $fn = "main" ]; then
+ continue
+ fi
+ found=0
+ for f2 in $@; do
+ if [ $f != $f2 ]; then
+ FNS2=`nm $f2 | grep ' U ' | awk '{print $2}'`
+ for fn2 in $FNS2; do
+ if [ $fn2 = $fn ]; then
+ found=1
+ break
+ fi
+ done
+ fi
+ done
+ if [ $found = 0 ]; then
+ echo "Global variable $fn is unique to $f"
+ fi
+ done
+done