Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jan 1998 17:46:07 +1030
From:      Mike Smith <mike@smith.net.au>
To:        "Jordan K. Hubbard" <jkh@time.cdrom.com>
Cc:        Mike Smith <mike@smith.net.au>, Charlie ROOT <root@korin.warman.org.pl>, freebsd-current@FreeBSD.ORG
Subject:   Re: /kernel.config takes over boot: -c :-(( 
Message-ID:  <199801310716.RAA00927@word.smith.net.au>
In-Reply-To: Your message of "Fri, 30 Jan 1998 05:34:04 -0800." <20160.886167244@time.cdrom.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--==_Exmh_20067113640
Content-Type: text/plain; charset=us-ascii

> > I would be inclined to say that the "expected" behaviour would be to 
> > have userconfig *not* exit after reading the kernel.config data *if* -c 
> > was supplied. 
> 
> Fine, if you want to add the ability to tell the difference between
> being invoked with -c or compiled with USERCONFIG_BOOT, go for it! :-)

Can I have a review/test on this?  After my last blunder through 
-stable, I'll roll with the trainer wheels on this one. 8)



--==_Exmh_20067113640
Content-Type: text/plain; name="uc.diff"; charset=us-ascii
Content-Description: uc.diff
Content-Disposition: attachment; filename="uc.diff"

--- userconfig.c.old	Sat Jan 31 17:29:28 1998
+++ userconfig.c	Sat Jan 31 17:39:29 1998
@@ -132,6 +132,7 @@
 
 #ifdef USERCONFIG_BOOT
 char userconfig_from_boot[512] = "";
+static int userconfig_boot_parsing;	/* set if we are reading from the boot instructions */
 
 static int
 getchar(void)
@@ -147,8 +148,10 @@
 	}
     } 
     if (*next) {
+	userconfig_boot_parsing = 1;
 	return (*next++);
     } else {
+	userconfig_boot_parsing = 1;
 	return cngetc();
     }
 }
@@ -2836,6 +2839,15 @@
 static int
 quitfunc(CmdParm *parms)
 {
+#ifdef USERCONFIG_BOOT
+    /*
+     * If kernel config supplied, and we are parsing it, and -c also supplied,
+     * ignore a quit command,  This provides a safety mechanism to allow
+     * recovery from a damaged/buggy kernel config.
+     */
+    if ((boothowto & RB_CONFIG) && userconfig_boot_parsing)
+	return 0;
+#endif
     return 1;
 }
 

--==_Exmh_20067113640
Content-Type: text/plain; charset=us-ascii

\\  Sometimes you're ahead,       \\  Mike Smith
\\  sometimes you're behind.      \\  mike@smith.net.au
\\  The race is long, and in the  \\  msmith@freebsd.org
\\  end it's only with yourself.  \\ 

--==_Exmh_20067113640--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801310716.RAA00927>