Add the function 'confirm_yesno' for interactive
User's confirmation is asked in different commands. This commit adds a function for such confirmation. Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com> Signed-off-by: Pierre Aubert <p.aubert@staubli.com>
This commit is contained in:
parent
91fdabc67a
commit
a5dffa4b67
|
@ -33,15 +33,8 @@ static int confirm_prog(void)
|
||||||
"what you are doing!\n"
|
"what you are doing!\n"
|
||||||
"\nReally perform this fuse programming? <y/N>\n");
|
"\nReally perform this fuse programming? <y/N>\n");
|
||||||
|
|
||||||
if (getc() == 'y') {
|
if (confirm_yesno())
|
||||||
int c;
|
return 1;
|
||||||
|
|
||||||
putc('y');
|
|
||||||
c = getc();
|
|
||||||
putc('\n');
|
|
||||||
if (c == '\r')
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("Fuse programming aborted\n");
|
puts("Fuse programming aborted\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -605,22 +605,16 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
opts.spread = spread;
|
opts.spread = spread;
|
||||||
|
|
||||||
if (scrub) {
|
if (scrub) {
|
||||||
if (!scrub_yes)
|
if (scrub_yes) {
|
||||||
puts(scrub_warn);
|
|
||||||
|
|
||||||
if (scrub_yes)
|
|
||||||
opts.scrub = 1;
|
opts.scrub = 1;
|
||||||
else if (getc() == 'y') {
|
} else {
|
||||||
puts("y");
|
puts(scrub_warn);
|
||||||
if (getc() == '\r')
|
if (confirm_yesno()) {
|
||||||
opts.scrub = 1;
|
opts.scrub = 1;
|
||||||
else {
|
} else {
|
||||||
puts("scrub aborted\n");
|
puts("scrub aborted\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
puts("scrub aborted\n");
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = nand_erase_opts(nand, &opts);
|
ret = nand_erase_opts(nand, &opts);
|
||||||
|
|
|
@ -158,21 +158,9 @@ int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
lowup(half + count - 1), page + (half + count - 1) / 2,
|
lowup(half + count - 1), page + (half + count - 1) / 2,
|
||||||
half + count
|
half + count
|
||||||
);
|
);
|
||||||
|
if (!confirm_yesno()) {
|
||||||
i = 0;
|
printf(" Aborting\n");
|
||||||
while (1) {
|
return 1;
|
||||||
if (tstc()) {
|
|
||||||
const char exp_ans[] = "YES\r";
|
|
||||||
char c;
|
|
||||||
putc(c = getc());
|
|
||||||
if (exp_ans[i++] != c) {
|
|
||||||
printf(" Aborting\n");
|
|
||||||
return 1;
|
|
||||||
} else if (!exp_ans[i]) {
|
|
||||||
puts("\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -537,7 +537,33 @@ int ctrlc(void)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* Reads user's confirmation.
|
||||||
|
Returns 1 if user's input is "y", "Y", "yes" or "YES"
|
||||||
|
*/
|
||||||
|
int confirm_yesno(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char str_input[5];
|
||||||
|
|
||||||
|
/* Flush input */
|
||||||
|
while (tstc())
|
||||||
|
getc();
|
||||||
|
i = 0;
|
||||||
|
while (i < sizeof(str_input)) {
|
||||||
|
str_input[i] = getc();
|
||||||
|
putc(str_input[i]);
|
||||||
|
if (str_input[i] == '\r')
|
||||||
|
break;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
putc('\n');
|
||||||
|
if (strncmp(str_input, "y\r", 2) == 0 ||
|
||||||
|
strncmp(str_input, "Y\r", 2) == 0 ||
|
||||||
|
strncmp(str_input, "yes\r", 4) == 0 ||
|
||||||
|
strncmp(str_input, "YES\r", 4) == 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
/* pass 1 to disable ctrlc() checking, 0 to enable.
|
/* pass 1 to disable ctrlc() checking, 0 to enable.
|
||||||
* returns previous state
|
* returns previous state
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -836,7 +836,7 @@ int ctrlc (void);
|
||||||
int had_ctrlc (void); /* have we had a Control-C since last clear? */
|
int had_ctrlc (void); /* have we had a Control-C since last clear? */
|
||||||
void clear_ctrlc (void); /* clear the Control-C condition */
|
void clear_ctrlc (void); /* clear the Control-C condition */
|
||||||
int disable_ctrlc (int); /* 1 to disable, 0 to enable Control-C detect */
|
int disable_ctrlc (int); /* 1 to disable, 0 to enable Control-C detect */
|
||||||
|
int confirm_yesno(void); /* 1 if input is "y", "Y", "yes" or "YES" */
|
||||||
/*
|
/*
|
||||||
* STDIO based functions (can always be used)
|
* STDIO based functions (can always be used)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue