blob: 09a3f0c8bb9cb259756eac7eb00fd909ea6f8853 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/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}'
|