xref: /plan9-contrib/rc/bin/pc/defs (revision 223a736ebd2849388a6a0145cd1e22a96bd28460)
1*223a736eSDavid du Colombiernl='
2*223a736eSDavid du Colombier'
3*223a736eSDavid du Colombiertab='	'
4*223a736eSDavid du Colombier
5*223a736eSDavid du Colombierfn prompt {
6*223a736eSDavid du Colombier	def=()
7*223a736eSDavid du Colombier	what=()
8*223a736eSDavid du Colombier	if(~ $1 -d && ! ~ $#* 1){
9*223a736eSDavid du Colombier		def=$2
10*223a736eSDavid du Colombier		shift
11*223a736eSDavid du Colombier		shift
12*223a736eSDavid du Colombier	}
13*223a736eSDavid du Colombier
14*223a736eSDavid du Colombier	optstr=()
15*223a736eSDavid du Colombier	if(~ $1 -w && ! ~ $#* 1){
16*223a736eSDavid du Colombier		optstr=$2
17*223a736eSDavid du Colombier		shift
18*223a736eSDavid du Colombier		shift
19*223a736eSDavid du Colombier	}
20*223a736eSDavid du Colombier
21*223a736eSDavid du Colombier	pr=$1
22*223a736eSDavid du Colombier	shift
23*223a736eSDavid du Colombier
24*223a736eSDavid du Colombier	opts=($*)
25*223a736eSDavid du Colombier	if(~ $#opts 0) {
26*223a736eSDavid du Colombier		suf=' '
27*223a736eSDavid du Colombier	}
28*223a736eSDavid du Colombier	if not if(! ~ $#optstr 0) {
29*223a736eSDavid du Colombier		if(~ $optstr '')
30*223a736eSDavid du Colombier			suf=' '
31*223a736eSDavid du Colombier		if not {
32*223a736eSDavid du Colombier			pr=$pr^' ('^$"optstr^')'
33*223a736eSDavid du Colombier			suf=''
34*223a736eSDavid du Colombier		}
35*223a736eSDavid du Colombier	}
36*223a736eSDavid du Colombier	if not {
37*223a736eSDavid du Colombier		pr=$pr^' ('^$1
38*223a736eSDavid du Colombier		shift
39*223a736eSDavid du Colombier		for(i)
40*223a736eSDavid du Colombier			pr=$pr^', '^$i
41*223a736eSDavid du Colombier		pr=$pr^')'
42*223a736eSDavid du Colombier		suf=''
43*223a736eSDavid du Colombier	}
44*223a736eSDavid du Colombier
45*223a736eSDavid du Colombier	if(~ $#def 1)
46*223a736eSDavid du Colombier		pr=$pr^$suf^'['^$def^']'
47*223a736eSDavid du Colombier	pr=$pr^': '
48*223a736eSDavid du Colombier
49*223a736eSDavid du Colombier
50*223a736eSDavid du Colombier	okay=no
51*223a736eSDavid du Colombier	while(~ $okay no) {
52*223a736eSDavid du Colombier# whatis opts
53*223a736eSDavid du Colombier		echo -n $pr >[1=2]
54*223a736eSDavid du Colombier		ifs='' {rd=`{read}}
55*223a736eSDavid du Colombier		if(~ $#rd 0)
56*223a736eSDavid du Colombier			exit notdone
57*223a736eSDavid du Colombier		rd=`{echo $rd}
58*223a736eSDavid du Colombier		if(~ $#rd 0 || ~ $rd '')
59*223a736eSDavid du Colombier			rd=$def
60*223a736eSDavid du Colombier
61*223a736eSDavid du Colombier		switch($#opts){
62*223a736eSDavid du Colombier		case 0
63*223a736eSDavid du Colombier			if(! ~ $rd '')
64*223a736eSDavid du Colombier				okay=yes
65*223a736eSDavid du Colombier		case *
66*223a736eSDavid du Colombier			if(~ $rd $opts)
67*223a736eSDavid du Colombier				okay=yes
68*223a736eSDavid du Colombier		}
69*223a736eSDavid du Colombier	}
70*223a736eSDavid du Colombier	echo -n $rd >/env/rd	# just in case
71*223a736eSDavid du Colombier}
72*223a736eSDavid du Colombier
73