Use standard "[y]/n" / "y/[n]" prompt

This removes the need for a translated prompt. Fixes issue #20.

Also,
* merge boolDefaultNo() and boolDefaultYes() into boolDefault()
* do not accept arbitrary answers, but prompt again
This commit is contained in:
Jakob Unterwurzacher 2014-12-13 13:01:03 +01:00
parent 80844b89da
commit 0a920fa733

View File

@ -805,19 +805,51 @@ static int selectBlockSize(const Cipher::CipherAlgorithm &alg) {
return blockSize; return blockSize;
} }
static bool boolDefaultNo(const char *prompt) { /**
cout << prompt << "\n"; * Prompt the user for a "y" or "n" answer.
cout << _("The default here is No.\n" * An empty answer returns defaultValue.
"Any response that does not begin with 'y' will mean No: "); */
static bool boolDefault(const char *prompt, bool defaultValue) {
char answer[10]; cout << prompt;
char *res = fgets(answer, sizeof(answer), stdin);
cout << "\n"; cout << "\n";
if (res != 0 && tolower(answer[0]) == 'y') string yesno;
return true;
if (defaultValue == true)
yesno = "[y]/n: ";
else else
return false; yesno = "y/[n]: ";
string response;
bool value;
while(true) {
cout << yesno;
getline(cin, response);
if (cin.fail() || response == "") {
value = defaultValue;
break;
} else if (response == "y") {
value = true;
break;
} else if (response == "n") {
value = false;
break;
}
}
cout << "\n";
return value;
}
static bool boolDefaultNo(const char *prompt) {
return boolDefault(prompt, false);
}
static bool boolDefaultYes(const char *prompt) {
return boolDefault(prompt, true);
} }
/** /**
@ -858,21 +890,6 @@ static void selectBlockMAC(int *macBytes, int *macRandBytes) {
*macRandBytes = randSize; *macRandBytes = randSize;
} }
static bool boolDefaultYes(const char *prompt) {
cout << prompt << "\n";
cout << _("The default here is Yes.\n"
"Any response that does not begin with 'n' will mean Yes: ");
char answer[10];
char *res = fgets(answer, sizeof(answer), stdin);
cout << "\n";
if (res != 0 && tolower(answer[0]) == 'n')
return false;
else
return true;
}
/** /**
* Ask the user if per-file unique IVs should be used * Ask the user if per-file unique IVs should be used
*/ */