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:
Marcel Moolenaar 2011-10-23 20:03:33 +00:00
parent b2d1ddebf1
commit 421b7fe574
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=226673

View File

@ -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);
}