| #!/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 |
| } |