svn commit: r226673 - head/sys/kern
Marcel Moolenaar
marcel at FreeBSD.org
Sun Oct 23 20:03:33 UTC 2011
Author: marcel
Date: Sun Oct 23 20:03:33 2011
New Revision: 226673
URL: http://svn.freebsd.org/changeset/base/226673
Log:
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 at gmail.com>
Modified:
head/sys/kern/vfs_mountroot.c
Modified: head/sys/kern/vfs_mountroot.c
==============================================================================
--- head/sys/kern/vfs_mountroot.c Sun Oct 23 19:46:01 2011 (r226672)
+++ head/sys/kern/vfs_mountroot.c Sun Oct 23 20:03:33 2011 (r226673)
@@ -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);
}
More information about the svn-src-all
mailing list