xref: /plan9/rc/bin/src (revision 51711cb6a91a3f2a5be5c3246334b85a608f135b)
17dd7cddfSDavid du Colombier#!/bin/rc
27dd7cddfSDavid du Colombier
39a747e4fSDavid du Colombierrfork e
49a747e4fSDavid du Colombierpath=(/bin/)
59a747e4fSDavid du Colombier
67dd7cddfSDavid du Colombiersym = 'threadmain?z
77dd7cddfSDavid du Colombier	main?z'
87dd7cddfSDavid du Colombier
97dd7cddfSDavid du Colombierfn dbsrc{
107dd7cddfSDavid du Colombier	echo $sym | db $1 | sed '1d;/symbol not found/d;s/.*\(\) //'
117dd7cddfSDavid du Colombier}
127dd7cddfSDavid du Colombier
137dd7cddfSDavid du Colombierfn go{
147dd7cddfSDavid du Colombier	type=`{file <$1 | sed 's/stdin: //'}
157dd7cddfSDavid du Colombier	switch($type){
167dd7cddfSDavid du Colombier	case 'rc executable file'
177dd7cddfSDavid du Colombier		plumbit $1 '(rc executable)'
187dd7cddfSDavid du Colombier	case *executable* *'plan 9 boot image'*
197dd7cddfSDavid du Colombier		plumbit  `{dbsrc $1} '(executable)'
207dd7cddfSDavid du Colombier	case *
217dd7cddfSDavid du Colombier		echo 'src: can''t find source for '$1 - unrecognized type $type >[1=2]
227dd7cddfSDavid du Colombier	}
237dd7cddfSDavid du Colombier}
247dd7cddfSDavid du Colombier
257dd7cddfSDavid du Colombierfn plumbit{B $1}
267dd7cddfSDavid du Colombier
277dd7cddfSDavid du Colombierfn usage{
287dd7cddfSDavid du Colombier	echo usage: 'src [-n] [-s symbol] executable ...'>[1=2]
297dd7cddfSDavid du Colombier	exit usage
307dd7cddfSDavid du Colombier}
317dd7cddfSDavid du Colombier
327dd7cddfSDavid du Colombierwhile(~ $1 -*)
337dd7cddfSDavid du Colombier	switch($1){
347dd7cddfSDavid du Colombier	case -n
357dd7cddfSDavid du Colombier		shift
367dd7cddfSDavid du Colombier		fn plumbit {echo $1}
377dd7cddfSDavid du Colombier	case -s
387dd7cddfSDavid du Colombier		shift
397dd7cddfSDavid du Colombier		# add main in case symbol is undefined
407dd7cddfSDavid du Colombier		sym=$1'?z
417dd7cddfSDavid du Colombier			main?z'
427dd7cddfSDavid du Colombier		shift
437dd7cddfSDavid du Colombier	case -*
447dd7cddfSDavid du Colombier		usage
457dd7cddfSDavid du Colombier	}
467dd7cddfSDavid du Colombier
477dd7cddfSDavid du Colombierif(~ $#* 0) usage
487dd7cddfSDavid du Colombier
497dd7cddfSDavid du Colombierfor(i){
507dd7cddfSDavid du Colombier	if(test -f $i) go $i
517dd7cddfSDavid du Colombier	if not if(test -f /bin/$i) go /bin/$i
527dd7cddfSDavid du Colombier	if not if(test -f /bin/*/$i) go /bin/*/$i
53*51711cb6SDavid du Colombier	if not if(test -f /bin/*/*/$i) go /bin/*/*/$i
547dd7cddfSDavid du Colombier	if not echo 'src: can''t find '$i
557dd7cddfSDavid du Colombier}
56