Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2012 14:55:42 +0000 (UTC)
From:      Sergey Kandaurov <pluknet@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r230219 - stable/9/sys/boot/forth
Message-ID:  <201201161455.q0GEtg44039026@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pluknet
Date: Mon Jan 16 14:55:42 2012
New Revision: 230219
URL: http://svn.freebsd.org/changeset/base/230219

Log:
  MFC r228985,229881:
  
   Unset the environment variables associated with individual menu items
   before invoking the kernel.
  
   Get rid of a spurious warning on the console when booting the kernel
   from the interactive loader(8) prompt and beastie_disable="YES" is set
   in loader.conf(5).
  
  Submitted by:	Devin Teske <devin dott teske fisglobal.com>

Modified:
  stable/9/sys/boot/forth/loader.4th
  stable/9/sys/boot/forth/menu.4th
  stable/9/sys/boot/forth/menu.4th.8
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/amd64/include/xen/   (props changed)
  stable/9/sys/boot/   (props changed)
  stable/9/sys/boot/i386/efi/   (props changed)
  stable/9/sys/boot/ia64/efi/   (props changed)
  stable/9/sys/boot/ia64/ski/   (props changed)
  stable/9/sys/boot/powerpc/boot1.chrp/   (props changed)
  stable/9/sys/boot/powerpc/ofw/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)
  stable/9/sys/conf/   (props changed)
  stable/9/sys/contrib/dev/acpica/   (props changed)
  stable/9/sys/contrib/octeon-sdk/   (props changed)
  stable/9/sys/contrib/pf/   (props changed)
  stable/9/sys/contrib/x86emu/   (props changed)

Modified: stable/9/sys/boot/forth/loader.4th
==============================================================================
--- stable/9/sys/boot/forth/loader.4th	Mon Jan 16 14:54:48 2012	(r230218)
+++ stable/9/sys/boot/forth/loader.4th	Mon Jan 16 14:55:42 2012	(r230219)
@@ -41,12 +41,26 @@ s" arch-i386" environment? [if] [if]
 
 include /boot/support.4th
 
-\ ***** boot-conf
-\
-\	Prepares to boot as specified by loaded configuration files.
-
 only forth also support-functions also builtins definitions
 
+: try-menu-unset
+  \ menu-unset may not be present
+  s" beastie_disable" getenv
+  dup -1 <> if
+    s" YES" compare-insensitive 0= if
+      exit
+    then
+  else
+    drop
+  then
+  s" menu-unset"
+  sfind if
+    execute
+  else
+    drop
+  then
+;
+
 : boot
   0= if ( interpreted ) get_arguments then
 
@@ -57,24 +71,32 @@ only forth also support-functions also b
       0 1 unload drop
     else
       s" kernelname" getenv? if ( a kernel has been loaded )
+        try-menu-unset
         1 boot exit
       then
       load_kernel_and_modules
       ?dup if exit then
+      try-menu-unset
       0 1 boot exit
     then
   else
     s" kernelname" getenv? if ( a kernel has been loaded )
+      try-menu-unset
       1 boot exit
     then
     load_kernel_and_modules
     ?dup if exit then
+    try-menu-unset
     0 1 boot exit
   then
   load_kernel_and_modules
   ?dup 0= if 0 1 boot then
 ;
 
+\ ***** boot-conf
+\
+\	Prepares to boot as specified by loaded configuration files.
+
 : boot-conf
   0= if ( interpreted ) get_arguments then
   0 1 unload drop

Modified: stable/9/sys/boot/forth/menu.4th
==============================================================================
--- stable/9/sys/boot/forth/menu.4th	Mon Jan 16 14:54:48 2012	(r230218)
+++ stable/9/sys/boot/forth/menu.4th	Mon Jan 16 14:55:42 2012	(r230219)
@@ -131,11 +131,11 @@ create init_text8 255 allot
 
 	\ Print the value of menuidx
 	loader_color? if
-		." "
+		." " (  )
 	then
 	menuidx @ .
 	loader_color? if
-		." "
+		." " (  )
 	then
 
 	\ Move the cursor forward 1 column
@@ -897,22 +897,60 @@ create init_text8 255 allot
 ;
 
 \ This function unsets all the possible environment variables associated with
-\ creating the interactive menu. Call this when you want to clear the menu
-\ area in preparation for another menu.
+\ creating the interactive menu.
 \ 
-: menu-clear ( -- )
+: menu-unset ( -- )
 
 	49 \ Iterator start (loop range 49 to 56; ASCII '1' to '8')
 	begin
-		\ basename for caption variable
-		loader_color? if
-			s" ansi_caption[x]"
-		else
-			s" menu_caption[x]"
-		then
+		\ Unset variables in-order of appearance in menu.4th(8)
+
+		s" menu_caption[x]"	\ basename for caption variable
 		-rot 2dup 13 + c! rot	\ replace 'x' with current iteration
 		unsetenv		\ not erroneous to unset unknown var
 
+		s" menu_command[x]"	\ command basename
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		unsetenv
+
+		s" menu_keycode[x]"	\ keycode basename
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		unsetenv
+
+		s" ansi_caption[x]"	\ ANSI caption basename
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		unsetenv
+
+		s" toggled_text[x]"	\ toggle_menuitem caption basename
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		unsetenv
+
+		s" toggled_ansi[x]"	\ toggle_menuitem ANSI caption basename
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		unsetenv
+
+		s" menu_caption[x][y]"	\ cycle_menuitem caption
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		49 -rot
+		begin
+			16 2over rot + c! \ replace 'y'
+			2dup unsetenv
+
+			rot 1+ dup 56 > 2swap rot
+		until
+		2drop drop
+
+		s" ansi_caption[x][y]"	\ cycle_menuitem ANSI caption
+		-rot 2dup 13 + c! rot	\ replace 'x'
+		49 -rot
+		begin
+			16 2over rot + c! \ replace 'y'
+			2dup unsetenv
+
+			rot 1+ dup 56 > 2swap rot
+		until
+		2drop drop
+
 		s" 0 menukeyN !"	\ basename for key association var
 		-rot 2dup 9 + c! rot	\ replace 'N' with current iteration
 		evaluate		\ assign zero (0) to key assoc. var
@@ -921,6 +959,9 @@ create init_text8 255 allot
 	until
 	drop \ iterator
 
+	\ unset the timeout command
+	s" menu_timeout_command" unsetenv
+
 	\ clear the "Reboot" menu option flag
 	s" menu_reboot" unsetenv
 	0 menureboot !
@@ -933,6 +974,13 @@ create init_text8 255 allot
 	s" menu_options" unsetenv
 	0 menuoptions !
 
+;
+
+\ This function both unsets menu variables and visually erases the menu area
+\ in-preparation for another menu.
+\ 
+: menu-clear ( -- )
+	menu-unset
 	menu-erase
 ;
 

Modified: stable/9/sys/boot/forth/menu.4th.8
==============================================================================
--- stable/9/sys/boot/forth/menu.4th.8	Mon Jan 16 14:54:48 2012	(r230218)
+++ stable/9/sys/boot/forth/menu.4th.8	Mon Jan 16 14:55:42 2012	(r230219)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd Aug 29, 2011
+.Dd Dec 27, 2011
 .Dt MENU.4TH 8
 .Os
 .Sh NAME
@@ -69,9 +69,13 @@ Clears the screen area within the menu b
 Calls
 .Ic menu-erase
 and then redraws the menu.
+.It Ic menu-unset
+Unsets the environment variables associated with individual menu items,
+clearing the way for a new menu.
 .It Ic menu-clear
-Unsets all possible environment variables used
-to configure the menu and then calls
+Calls
+.Ic menu-unset
+and then
 .Ic menu-erase .
 .El
 .Pp



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