diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/twodspec/apextract/apanswer.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'noao/twodspec/apextract/apanswer.x')
-rw-r--r-- | noao/twodspec/apextract/apanswer.x | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/noao/twodspec/apextract/apanswer.x b/noao/twodspec/apextract/apanswer.x new file mode 100644 index 00000000..0077af4a --- /dev/null +++ b/noao/twodspec/apextract/apanswer.x @@ -0,0 +1,121 @@ +define ANSWERS "|no|yes|NO|YES|" + + +# AP_ANSWER -- Prompt the user (if needed) and return bool based +# on 4-valued response + +bool procedure ap_answer (param, prompt) + +char param[ARB] # Parameter name +char prompt[ARB] # Prompt to be issued + +char word[3] +int i, apgwrd() +pointer pmode + +begin + i = apgwrd (param, word, 3, ANSWERS) + switch (i) { + case 3: + return (false) + case 4: + return (true) + default: + call malloc (pmode, SZ_LINE, TY_CHAR) + call sprintf (Memc[pmode], SZ_LINE, "%s.p_mode") + call pargstr (param) + call appstr (Memc[pmode], "q") + repeat { + call eprintf (prompt) + call flush (STDERR) + ifnoerr (i = apgwrd (param, word, 3, ANSWERS)) + break + } + call appstr (param, word) + call appstr (Memc[pmode], "h") + call mfree (pmode, TY_CHAR) + } + + switch (i) { + case 1, 3: + return (false) + case 2, 4: + return (true) + } +end + + +# APGANSB -- Convert 4-valued parameter to bool + +bool procedure apgansb (param) + +char param[ARB] # Parameter name + +char word[3] +int apgwrd() + +begin + switch (apgwrd (param, word, 3, ANSWERS)) { + case 1, 3: + return (false) + default: + return (true) + } +end + + +# APGANS -- Convert 4-value parameter to bool except "no" is true. + +bool procedure apgans (param) + +char param[ARB] # Parameter name + +char word[3] +pointer pmode +bool streq() + +begin + call malloc (pmode, SZ_LINE, TY_CHAR) + call sprintf (Memc[pmode], SZ_LINE, "%s.p_mode") + call pargstr (param) + call apgstr (Memc[pmode], word, 3) + if (word[1] != 'h') + call appstr (Memc[pmode], "h") + call mfree (pmode, TY_CHAR) + call apgstr (param, word, 3) + return (!streq (word, "NO")) +end + + +# APPANS -- Put 4-valued parameter based on interactive parameter. + +procedure appans (param, ival, nival) + +char param[ARB] # Parameter +bool ival # Interactive value +bool nival # Noninteractive value + +char word[3] +pointer pmode +bool clgetb() + +begin + call malloc (pmode, SZ_LINE, TY_CHAR) + call sprintf (Memc[pmode], SZ_LINE, "%s.p_mode") + call pargstr (param) + call apgstr (Memc[pmode], word, 3) + if (word[1] != 'h') + call appstr (Memc[pmode], "h") + call mfree (pmode, TY_CHAR) + if (clgetb ("interactive")) { + if (ival) + call appstr (param, "yes") + else + call appstr (param, "NO") + } else { + if (nival) + call appstr (param, "YES") + else + call appstr (param, "NO") + } +end |