Don't terminate the interactive root mount prompt on mount failure.
This restores the previous behaviour. While here, match '?' and '.' inputs exactly and improve the error message. Requested by: avg@ Derived from a patch by: Arnaud Lacombe <lacombar@gmail.com>
This commit is contained in:
parent
b2d1ddebf1
commit
421b7fe574
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=226673
@ -483,26 +483,27 @@ parse_dir_ask(char **conf)
|
||||
printf(" . Yield 1 second (for background tasks)\n");
|
||||
printf(" <empty line> Abort manual input\n");
|
||||
|
||||
again:
|
||||
printf("\nmountroot> ");
|
||||
gets(name, sizeof(name), GETS_ECHO);
|
||||
if (name[0] == '\0')
|
||||
return (0);
|
||||
if (name[0] == '?') {
|
||||
printf("\nList of GEOM managed disk devices:\n ");
|
||||
g_dev_print();
|
||||
goto again;
|
||||
}
|
||||
if (name[0] == '.') {
|
||||
pause("rmask", hz);
|
||||
goto again;
|
||||
}
|
||||
mnt = name;
|
||||
error = parse_mount(&mnt);
|
||||
if (error == -1) {
|
||||
printf("Invalid specification.\n");
|
||||
goto again;
|
||||
}
|
||||
do {
|
||||
error = EINVAL;
|
||||
printf("\nmountroot> ");
|
||||
gets(name, sizeof(name), GETS_ECHO);
|
||||
if (name[0] == '\0')
|
||||
break;
|
||||
if (name[0] == '?' && name[1] == '\0') {
|
||||
printf("\nList of GEOM managed disk devices:\n ");
|
||||
g_dev_print();
|
||||
continue;
|
||||
}
|
||||
if (name[0] == '.' && name[1] == '\0') {
|
||||
pause("rmask", hz);
|
||||
continue;
|
||||
}
|
||||
mnt = name;
|
||||
error = parse_mount(&mnt);
|
||||
if (error == -1)
|
||||
printf("Invalid file system specification.\n");
|
||||
} while (error != 0);
|
||||
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user