xref: /plan9/sys/lib/dist/pc/inst/defs (revision a22b0629beb42d6ba21fb59ad976b0ded93891c9)
19a747e4fSDavid du Colombiernl='
29a747e4fSDavid du Colombier'
39a747e4fSDavid du Colombiertab='	'
49a747e4fSDavid du Colombierif(~ $#distname 0)
59a747e4fSDavid du Colombier	distname=plan9
69a747e4fSDavid du Colombier
73ff48bf5SDavid du Colombierwctl=/dev/null
83ff48bf5SDavid du Colombierif(test -w /dev/wctl)
93ff48bf5SDavid du Colombier	wctl=/dev/wctl
103ff48bf5SDavid du Colombier
119a747e4fSDavid du Colombierfn log {
129a747e4fSDavid du Colombier	echo $* >>/srv/log
139a747e4fSDavid du Colombier}
149a747e4fSDavid du Colombier
159a747e4fSDavid du Colombierfn logprog {
169a747e4fSDavid du Colombier	echo '% '^$"* >>/srv/log
179a747e4fSDavid du Colombier	$* >[2=1] >>/srv/log
189a747e4fSDavid du Colombier}
199a747e4fSDavid du Colombier
209a747e4fSDavid du Colombierfn sigint {
219a747e4fSDavid du Colombier	# nothing happens
229a747e4fSDavid du Colombier}
239a747e4fSDavid du Colombier
249a747e4fSDavid du Colombierfn prompt {
259a747e4fSDavid du Colombier	def=()
269a747e4fSDavid du Colombier	what=()
279a747e4fSDavid du Colombier	if(~ $1 -d && ! ~ $#* 1){
289a747e4fSDavid du Colombier		def=$2
299a747e4fSDavid du Colombier		shift
309a747e4fSDavid du Colombier		shift
319a747e4fSDavid du Colombier	}
329a747e4fSDavid du Colombier
339a747e4fSDavid du Colombier	optstr=()
349a747e4fSDavid du Colombier	if(~ $1 -w && ! ~ $#* 1){
359a747e4fSDavid du Colombier		optstr=$2
369a747e4fSDavid du Colombier		shift
379a747e4fSDavid du Colombier		shift
389a747e4fSDavid du Colombier	}
399a747e4fSDavid du Colombier
409a747e4fSDavid du Colombier	pr=$1
419a747e4fSDavid du Colombier	shift
429a747e4fSDavid du Colombier
439a747e4fSDavid du Colombier	opts=($*)
449a747e4fSDavid du Colombier	if(~ $#opts 0) {
459a747e4fSDavid du Colombier		suf=' '
469a747e4fSDavid du Colombier	}
479a747e4fSDavid du Colombier	if not if(! ~ $#optstr 0) {
489a747e4fSDavid du Colombier		if(~ $optstr '')
499a747e4fSDavid du Colombier			suf=' '
509a747e4fSDavid du Colombier		if not {
519a747e4fSDavid du Colombier			pr=$pr^' ('^$"optstr^')'
529a747e4fSDavid du Colombier			suf=''
539a747e4fSDavid du Colombier		}
549a747e4fSDavid du Colombier	}
559a747e4fSDavid du Colombier	if not {
569a747e4fSDavid du Colombier		pr=$pr^' ('^$1
579a747e4fSDavid du Colombier		shift
589a747e4fSDavid du Colombier		for(i)
599a747e4fSDavid du Colombier			pr=$pr^', '^$i
609a747e4fSDavid du Colombier		pr=$pr^')'
619a747e4fSDavid du Colombier		suf=''
629a747e4fSDavid du Colombier	}
639a747e4fSDavid du Colombier
649a747e4fSDavid du Colombier	if(~ $#def 1)
659a747e4fSDavid du Colombier		pr=$pr^$suf^'['^$def^']'
669a747e4fSDavid du Colombier	if not
679a747e4fSDavid du Colombier		pr=$pr^$suf^'[no default]'
689a747e4fSDavid du Colombier
699a747e4fSDavid du Colombier	pr=$pr^': '
709a747e4fSDavid du Colombier
719a747e4fSDavid du Colombier
729a747e4fSDavid du Colombier	okay=no
739a747e4fSDavid du Colombier	while(~ $okay no) {
743ff48bf5SDavid du Colombier		echo -n current >$wctl
753ff48bf5SDavid du Colombier		echo -n top >$wctl
769a747e4fSDavid du Colombier		echo -n $pr >[1=2]
779a747e4fSDavid du Colombier		ifs='' {rd=`{read}}
789a747e4fSDavid du Colombier		if(~ $#rd 0)
799a747e4fSDavid du Colombier			exit notdone
8039734e7eSDavid du Colombier		if(~ $rd !*){
8139734e7eSDavid du Colombier			ifs='' {rd=`{echo $rd | sed 's/!//'}}
8239734e7eSDavid du Colombier			echo $rd
8339734e7eSDavid du Colombier			rc -c $rd
8439734e7eSDavid du Colombier			echo !$status
8539734e7eSDavid du Colombier		}
8639734e7eSDavid du Colombier		if not{
879a747e4fSDavid du Colombier			rd=`{echo $rd}
889a747e4fSDavid du Colombier			if(~ $#rd 0 || ~ $rd '')
899a747e4fSDavid du Colombier				rd=$def
909a747e4fSDavid du Colombier
919a747e4fSDavid du Colombier			switch($#opts){
929a747e4fSDavid du Colombier			case 0
939a747e4fSDavid du Colombier				if(! ~ $rd '')
949a747e4fSDavid du Colombier					okay=yes
959a747e4fSDavid du Colombier			case *
969a747e4fSDavid du Colombier				if(~ $rd $opts)
979a747e4fSDavid du Colombier					okay=yes
989a747e4fSDavid du Colombier			}
999a747e4fSDavid du Colombier		}
10039734e7eSDavid du Colombier	}
1019a747e4fSDavid du Colombier	echo -n $rd >/env/rd	# just in case
1029a747e4fSDavid du Colombier}
1039a747e4fSDavid du Colombier
1049a747e4fSDavid du Colombierfn desc {
1059a747e4fSDavid du Colombier	echo -n '	'^$1^'	- '
1069a747e4fSDavid du Colombier	grep '^# desc: ' $1 | sed 's/# desc: //'
1079a747e4fSDavid du Colombier}
1089a747e4fSDavid du Colombier
1099a747e4fSDavid du Colombierfn prereq {
1109a747e4fSDavid du Colombier	grep '^# prereq:' $1 | sed 's/# prereq://'
1119a747e4fSDavid du Colombier}
1129a747e4fSDavid du Colombier
1139a747e4fSDavid du Colombierfn mustdo {
1149a747e4fSDavid du Colombier	echo You must `{grep '^# mustdo:' $1 | sed 's/# mustdo://'}
1159a747e4fSDavid du Colombier}
1169a747e4fSDavid du Colombier
1179a747e4fSDavid du Colombier# there's no easy way to pass shell variables
1189a747e4fSDavid du Colombier# up from children to parents; the parents have
1199a747e4fSDavid du Colombier# to be coerced into noticing that the environment
1209a747e4fSDavid du Colombier# changed, even when in the same environment group.
1219a747e4fSDavid du Colombier#
1229a747e4fSDavid du Colombier# instead, we explicitly export the variables we want
1239a747e4fSDavid du Colombier# to percolate, and the parent calls coherence to reread
1249a747e4fSDavid du Colombier# the variables.
1259a747e4fSDavid du Colombier#
1269a747e4fSDavid du Colombier# we just append to the vars file, so that later exports
1279a747e4fSDavid du Colombier# override earlier ones; when we call coherence,
1289a747e4fSDavid du Colombier# the duplicates are thrown out.
1299a747e4fSDavid du Colombier
1309a747e4fSDavid du Colombierfn export {
1319a747e4fSDavid du Colombier	null=()
1329a747e4fSDavid du Colombier	nonnull=()
1339a747e4fSDavid du Colombier	for(i in $*){
1349a747e4fSDavid du Colombier		if(~ $#$i 0)
1359a747e4fSDavid du Colombier			null=($null $i)
1369a747e4fSDavid du Colombier		if not
1379a747e4fSDavid du Colombier			nonnull=($nonnull $i)
1389a747e4fSDavid du Colombier	}
1399a747e4fSDavid du Colombier	if(! ~ $#nonnull 0)
1409a747e4fSDavid du Colombier		whatis $nonnull |grep -v '^\./' >>/tmp/vars >[2]/dev/null
1419a747e4fSDavid du Colombier	for(i in $null)
1429a747e4fSDavid du Colombier		echo $i^'=()' >>/tmp/vars
1439a747e4fSDavid du Colombier}
1449a747e4fSDavid du Colombier
1459a747e4fSDavid du Colombierfn coherence {
1469a747e4fSDavid du Colombier	if(test -f /tmp/vars) {
1479a747e4fSDavid du Colombier		grep '^[a-z]*=' /tmp/vars >/tmp/vars2
1489a747e4fSDavid du Colombier		v=`{sed 's/^([a-z]*)=.*/\1/' /tmp/vars2 | sort -u}
1499a747e4fSDavid du Colombier		. /tmp/vars2
1509a747e4fSDavid du Colombier		rm /tmp/vars2
1519a747e4fSDavid du Colombier		rm /tmp/vars
1529a747e4fSDavid du Colombier		export $v
1539a747e4fSDavid du Colombier	}
1549a747e4fSDavid du Colombier}
1559a747e4fSDavid du Colombier
1569a747e4fSDavid du Colombier# ip device stats
1579a747e4fSDavid du Colombier
1589a747e4fSDavid du Colombierfn isipdevup {
1599a747e4fSDavid du Colombier	grep -s $1 /net/ipifc/*/status >[2]/dev/null
1609a747e4fSDavid du Colombier}
1619a747e4fSDavid du Colombier
162*f9247424SDavid du Colombier
163