diff options
author | John Ankarström <john@ankarstrom.se> | 2021-01-31 14:14:05 +0000 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2021-01-31 14:14:05 +0000 |
commit | d325d2226cf55b63037dc62cefb7fa952d770d50 (patch) | |
tree | 9b88c71dc9a286cb8f9a4c0f40d42b7f55de5f38 /rc/def | |
parent | 01d70ec025ac617b1f74a7c8ccb2ed8bc120ca59 (diff) | |
download | plan9-d325d2226cf55b63037dc62cefb7fa952d770d50.tar.gz |
Bind $home/bin/rc to rc/ instead of ./
Diffstat (limited to 'rc/def')
-rwxr-xr-x | rc/def | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,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}' |