takes either 'y' or 'yes' and 'n' or 'no' for stop volume, delete volume and remove-brick

Signed-off-by: Mohammed Junaid <junaid@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>

BUG: 1942 (cli: loose parsing of confirmation answer)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1942
This commit is contained in:
Mohammed Junaid 2010-10-14 04:14:47 +00:00 committed by Anand V. Avati
parent 2ec661c072
commit 0d11145c0c

View File

@ -317,20 +317,40 @@ out:
gf_answer_t
cli_cmd_get_confirmation (struct cli_state *state, const char *question)
{
char answer = '\0';
char answer[5] = {'\0', };
char flush = '\0';
int len = 0;
if (state->mode & GLUSTER_MODE_SCRIPT)
return GF_ANSWER_YES;
printf ("%s (y/n) ", question);
answer = getchar ();
flush = answer;
while ('\n' != flush)
flush = getchar ();
if ('y' != answer) {
return GF_ANSWER_NO;
}
return GF_ANSWER_YES;
printf ("%s (y/n) ", question);
fgets (answer, 4, stdin);
len = strlen (answer);
if (answer [len - 1] == '\n'){
answer [--len] = '\0';
} else {
do{
flush = getchar ();
}while (flush != '\n');
}
if (len > 3)
goto out;
if (!strcasecmp (answer, "y") || !strcasecmp (answer, "yes"))
return GF_ANSWER_YES;
else if (!strcasecmp (answer, "n") || !strcasecmp (answer, "no"))
return GF_ANSWER_NO;
out:
cli_out ("Invalid input, please enter y/n");
return GF_ANSWER_NO;
}
int