plan9fox/rc/bin/pc/defs
2011-03-30 18:38:15 +00:00

73 lines
809 B
Plaintext
Executable file

nl='
'
tab=' '
fn prompt {
def=()
what=()
if(~ $1 -d && ! ~ $#* 1){
def=$2
shift
shift
}
optstr=()
if(~ $1 -w && ! ~ $#* 1){
optstr=$2
shift
shift
}
pr=$1
shift
opts=($*)
if(~ $#opts 0) {
suf=' '
}
if not if(! ~ $#optstr 0) {
if(~ $optstr '')
suf=' '
if not {
pr=$pr^' ('^$"optstr^')'
suf=''
}
}
if not {
pr=$pr^' ('^$1
shift
for(i)
pr=$pr^', '^$i
pr=$pr^')'
suf=''
}
if(~ $#def 1)
pr=$pr^$suf^'['^$def^']'
pr=$pr^': '
okay=no
while(~ $okay no) {
# whatis opts
echo -n $pr >[1=2]
ifs='' {rd=`{read}}
if(~ $#rd 0)
exit notdone
rd=`{echo $rd}
if(~ $#rd 0 || ~ $rd '')
rd=$def
switch($#opts){
case 0
if(! ~ $rd '')
okay=yes
case *
if(~ $rd $opts)
okay=yes
}
}
echo -n $rd >/env/rd # just in case
}