55 lines · 916 B · Text
RawDownload
#!/bin/rc rfork epath=(/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}