#! /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 "()"