| tHow could I forget this? - plan9port - [fork] Plan 9 from user space |
| git clone git://src.adamsgaard.dk/plan9port |
| Log |
| Files |
| Refs |
| README |
| LICENSE |
| --- |
| commit ba03b8910dd07511378e6f1007faf0539ed25598 |
| parent dddc2ed156bd5a089b737d9abfd97820b4b0dc17 |
| Author: rsc |
| Date: Tue, 20 Apr 2004 17:54:04 +0000
How could I forget this?
Diffstat:
A bin/src | 55 +++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+), 0 deletions(-)
--- |
| diff --git a/bin/src b/bin/src |
| t@@ -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
+} |