72 lines
809 B
Text
Executable file
72 lines
809 B
Text
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
|
|
}
|
|
|