--- /dev/null
+#! /bin/sh
+
+fis="${*:-*.o}"
+
+for i in $fis;do
+ rest="`echo '' $fis ''|sed "s# $i # #"`"
+ trail="()"
+ for t in T BCDRS;do
+ for sym in `nm $i|sed -n 's/^.* ['$t'] \(.*\)$/\1/p'`;do
+ if nm $rest|grep -q ' U '"$sym"'$';then :;else
+ echo "$i $sym$trail"|sed 's/\.o /.c /'
+ fi
+ done
+ trail=""
+ done
+done
+
+echo
+
+function checkextern
+{
+ ctags -f - --c-types=$1 `cvsfiles|grep '\.h$'` | \
+ if $2;then
+ grep ' /\^extern '
+ else
+ cat
+ fi \
+ | while read -r line;do
+ sym="` echo "$line" | awk '{print $1}'`"
+ file="`echo "$line" | awk '{print $2}'`"
+ if nm $fis|grep -q " [$3] ""$sym"'$';then :;else
+ echo "extern $file $sym$4"
+ fi
+ done
+}
+
+checkextern x true BCDRS ""
+checkextern p false T "()"