57 lines · 898 B · Text
RawDownload
#!/bin/rc rfork e 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 'Ascii'		plumbit $1 '(ascii file)'	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)	usagefor(i in $*){	if(~ $i /*)		test -f $i && go $i && exit	if not		for(f in $path^/^$i)			test -x $f && go $f && exit	echo 'src: can''t find '$i}