#!/usr/local/plan9/bin/rc | |
sym = 'threadmain?z | |
p9main?z | |
main?z' | |
fn dbsrc{ | |
echo $sym | db $1 | 9sed '1d;/symbol not found/d;s/.*\(\) //' | |
} | |
fn go{ | |
type=`{file $1} | |
switch($type){ | |
case *'script text'* | |
plumbit $1 '(script)' | |
case *executable* *'plan 9 boot image'* *'shared object'* | |
plumbit `{dbsrc $1} '(executable)' | |
case * | |
echo 'src: can''t find source for '$1 - unrecognized type $type >[1=2] | |
} | |
} | |
fn plumbit{B $1} | |
fn usage{ | |
echo usage: 'src [-n] [-s symbol] executable ...'>[1=2] | |
exit usage | |
} | |
while(~ $1 -*) | |
switch($1){ | |
case -n | |
shift | |
fn plumbit {echo $1} | |
case -s | |
shift | |
# add main in case symbol is undefined | |
sym=$1'?z | |
threadmain?z | |
p9main?z | |
main?z' | |
shift | |
case -* | |
usage | |
} | |
if(~ $#* 0) usage | |
ifs=' | |
' | |
for(i){ | |
wi=`{which $i >[2]/dev/null} | |
if(test -f $i) go $i | |
if not if(~ $#wi 1 && test -f $wi) go $wi | |
if not echo 'src: can''t find '$i | |
} |