boolean be_paranoid;
const char *prompt;
{
- char qbuf[QBUFSZ], ans[BUFSZ];
- const char *responsetype, *promptprefix = "";
boolean confirmed_ok;
/* when paranoid, player must respond with "yes" rather than just 'y'
to give the go-ahead for this query; default is "no" unless the
ParanoidConfirm flag is set in which case there's no default */
if (be_paranoid) {
+ char qbuf[QBUFSZ], ans[BUFSZ];
+ const char *promptprefix = "",
+ *responsetype = ParanoidConfirm ? "(yes|no)" : "(yes) [no]";
+ int trylimit = 6; /* 1 normal, 5 more with "Yes or No:" prefix */
+
/* in addition to being paranoid about this particular
query, we might be even more paranoid about all paranoia
responses (ie, ParanoidConfirm is set) in which case we
require "no" to reject in addition to "yes" to confirm
(except we won't loop if respose is ESC; it means no) */
- responsetype = ParanoidConfirm ? "(yes|no)" : "(yes) [no]";
do {
Sprintf(qbuf, "%s%s %s", promptprefix, prompt, responsetype);
getlin(qbuf, ans);
confirmed_ok = !strcmpi(ans, "yes");
if (confirmed_ok || *ans == '\033') break;
promptprefix = "\"Yes\" or \"No\": ";
- } while (ParanoidConfirm && strcmpi(ans, "no"));
+ } while (ParanoidConfirm && strcmpi(ans, "no") && --trylimit);
} else
confirmed_ok = (yn(prompt) == 'y');