diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 17:14:36 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 17:14:36 +0300 |
commit | 2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f (patch) | |
tree | f6343b1ce11a8c87251dd27cf3d3e26b50693fa7 /rc/bin/src | |
parent | e463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (diff) | |
download | plan9front-2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f.tar.xz |
Import sources from 2011-03-30 iso image - rc
Diffstat (limited to 'rc/bin/src')
-rwxr-xr-x | rc/bin/src | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/rc/bin/src b/rc/bin/src new file mode 100755 index 000000000..b2de4dc4c --- /dev/null +++ b/rc/bin/src @@ -0,0 +1,55 @@ +#!/bin/rc + +rfork e +path=(/bin/) + +sym = 'threadmain?z + main?z' + +fn dbsrc{ + echo $sym | db $1 | sed '1d;/symbol not found/d;s/.*\(\) //' +} + +fn go{ + type=`{file <$1 | sed 's/stdin: //'} + switch($type){ + case 'rc executable file' + plumbit $1 '(rc executable)' + case *executable* *'plan 9 boot image'* + 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 + main?z' + shift + case -* + usage + } + +if(~ $#* 0) usage + +for(i){ + if(test -f $i) go $i + if not if(test -f /bin/$i) go /bin/$i + if not if(test -f /bin/*/$i) go /bin/*/$i + if not if(test -f /bin/*/*/$i) go /bin/*/*/$i + if not echo 'src: can''t find '$i +} |