#!/bin/rc -e # def -- find function definition flagfmt=a args='name [dir]' if(! ifs=() eval `{aux/getflags $*} || ! ~ $#* 1 2 3){ echo usage: $0 name [dir] >[1=2] exit usage } name=$1 if(~ $#* 2) wdir=$2 if not wdir=`{pwd} files=$wdir^/*.[ch] if(~ $files $wdir^/'*.[ch]'){ echo error: no c/h files found >[1=2] exit 'not found' } # ansi definition if(~ $flaga 1){ r=`{ echo 'X ,x/[\n ]\**'^$name^'\(.*\)([ ]*\/\*.*\*\/)?\n{/-+=' | sam -d $files >[2=1] | awk -F'[ ;]' ' /^ -\. / { file = $3; next } /^ - / { file = $4; next } { print file ":" $1; exit } '} } # style(1) definition if not{ r=`{grep -n '^'^$name^'\(' $files | awk -F: '{print $1 ":" $2; exit}'} } # success if(! ~ $r '') echo $r # try to find macro instead if not grep -n '^#define[ ]'^$name^'\(' $files | awk -F: '{print $1 ":" $2; exit}'