summaryrefslogtreecommitdiff
path: root/rc/bin/pc/defs
diff options
context:
space:
mode:
Diffstat (limited to 'rc/bin/pc/defs')
-rwxr-xr-xrc/bin/pc/defs72
1 files changed, 72 insertions, 0 deletions
diff --git a/rc/bin/pc/defs b/rc/bin/pc/defs
new file mode 100755
index 000000000..c5c2e6950
--- /dev/null
+++ b/rc/bin/pc/defs
@@ -0,0 +1,72 @@
+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
+}
+