mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
56 lines
900 B
Bash
Executable file
56 lines
900 B
Bash
Executable file
#!/usr/local/plan9/bin/rc
|
|
|
|
. 9.rc
|
|
sym = 'threadmain?z
|
|
p9main?z
|
|
main?z'
|
|
|
|
fn dbsrc{
|
|
echo $sym | db $1 >[2]/dev/null | 9 sed '/symbol not found/d;s/.*\(\) //'
|
|
}
|
|
|
|
fn go{
|
|
type=`{9 file $1}
|
|
switch($type){
|
|
case *script*
|
|
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=`{whatis $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
|
|
}
|