mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-27 11:52:03 +00:00
How could I forget this?
This commit is contained in:
parent
dddc2ed156
commit
ba03b8910d
1 changed files with 55 additions and 0 deletions
55
bin/src
Executable file
55
bin/src
Executable file
|
@ -0,0 +1,55 @@
|
||||||
|
#!/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
|
||||||
|
}
|
Loading…
Reference in a new issue