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