From ba03b8910dd07511378e6f1007faf0539ed25598 Mon Sep 17 00:00:00 2001 From: rsc Date: Tue, 20 Apr 2004 17:54:04 +0000 Subject: How could I forget this? --- bin/src | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 bin/src (limited to 'bin') diff --git a/bin/src b/bin/src new file mode 100755 index 00000000..046417a0 --- /dev/null +++ b/bin/src @@ -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 +} -- cgit v1.2.3