1*ca987d46SWarner Losh.\" Copyright (c) 2012 Devin Teske 2*ca987d46SWarner Losh.\" All rights reserved. 3*ca987d46SWarner Losh.\" 4*ca987d46SWarner Losh.\" Redistribution and use in source and binary forms, with or without 5*ca987d46SWarner Losh.\" modification, are permitted provided that the following conditions 6*ca987d46SWarner Losh.\" are met: 7*ca987d46SWarner Losh.\" 1. Redistributions of source code must retain the above copyright 8*ca987d46SWarner Losh.\" notice, this list of conditions and the following disclaimer. 9*ca987d46SWarner Losh.\" 2. Redistributions in binary form must reproduce the above copyright 10*ca987d46SWarner Losh.\" notice, this list of conditions and the following disclaimer in the 11*ca987d46SWarner Losh.\" documentation and/or other materials provided with the distribution. 12*ca987d46SWarner Losh.\" 13*ca987d46SWarner Losh.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14*ca987d46SWarner Losh.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15*ca987d46SWarner Losh.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16*ca987d46SWarner Losh.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17*ca987d46SWarner Losh.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18*ca987d46SWarner Losh.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19*ca987d46SWarner Losh.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20*ca987d46SWarner Losh.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21*ca987d46SWarner Losh.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22*ca987d46SWarner Losh.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23*ca987d46SWarner Losh.\" SUCH DAMAGE. 24*ca987d46SWarner Losh.\" 25*ca987d46SWarner Losh.Dd November 5, 2012 26*ca987d46SWarner Losh.Dt MENUSETS.4TH 8 27*ca987d46SWarner Losh.Os 28*ca987d46SWarner Losh.Sh NAME 29*ca987d46SWarner Losh.Nm menusets.4th 30*ca987d46SWarner Losh.Nd FreeBSD dynamic submenu boot module 31*ca987d46SWarner Losh.Sh DESCRIPTION 32*ca987d46SWarner LoshThe file that goes by the name of 33*ca987d46SWarner Losh.Nm 34*ca987d46SWarner Loshis a set of commands designed to add submenu functionality to the dynamic menu 35*ca987d46SWarner Loshsystem provided by 36*ca987d46SWarner Losh.Xr menu.4th 8 . 37*ca987d46SWarner LoshSubmenus are managed through a system of carefully named environment variables. 38*ca987d46SWarner LoshThe commands of 39*ca987d46SWarner Losh.Nm 40*ca987d46SWarner Loshby themselves are not enough for most uses. 41*ca987d46SWarner LoshPlease refer to the examples below for the most common situations, and to 42*ca987d46SWarner Losh.Xr menu.4th 8 43*ca987d46SWarner Loshfor additional commands. 44*ca987d46SWarner Losh.Pp 45*ca987d46SWarner LoshBefore using any of the commands provided in 46*ca987d46SWarner Losh.Nm , 47*ca987d46SWarner Loshit must be included 48*ca987d46SWarner Loshthrough the command: 49*ca987d46SWarner Losh.Pp 50*ca987d46SWarner Losh.Dl include menusets.4th 51*ca987d46SWarner Losh.Pp 52*ca987d46SWarner LoshThis line is present in the default 53*ca987d46SWarner Losh.Pa /boot/menu-commands.4th 54*ca987d46SWarner Loshfile, so it is not needed (and should not be re-issued) in a normal setup. 55*ca987d46SWarner Losh.Pp 56*ca987d46SWarner LoshThe commands provided by it are: 57*ca987d46SWarner Losh.Pp 58*ca987d46SWarner Losh.Bl -tag -width menuset-loadinitial -compact -offset indent 59*ca987d46SWarner Losh.It Ic menuset-loadsetnum 60*ca987d46SWarner LoshTakes a single integer on the stack to identify the menuset environment 61*ca987d46SWarner Loshvariables to be activated (see environment variables below). 62*ca987d46SWarner Losh.It Ic menuset-loadinitial 63*ca987d46SWarner LoshIf $menuset_initial is set, passes the value to menuset-loadsetnum. 64*ca987d46SWarner LoshThe value must be a number. 65*ca987d46SWarner Losh.It Ic menusets-unset 66*ca987d46SWarner LoshUnsets the environment variables associated with all menusets. 67*ca987d46SWarner LoshIncrements starting at 1 and stops at the first unconfigured menuset. 68*ca987d46SWarner LoshA menuset is considered configured if the caption for item 1 is set. 69*ca987d46SWarner Losh.El 70*ca987d46SWarner Losh.Pp 71*ca987d46SWarner LoshThe environment variables that effect its behavior are: 72*ca987d46SWarner Losh.Bl -tag -width bootfile -offset indent 73*ca987d46SWarner Losh.It Va menuset_initial 74*ca987d46SWarner LoshNumber to pass to menuset-loadsetnum when menuset-loadinitial is called. 75*ca987d46SWarner Losh.It Va menuset_nameN 76*ca987d46SWarner LoshUsed to give a name to a menuset. 77*ca987d46SWarner Losh.El 78*ca987d46SWarner Losh.Pp 79*ca987d46SWarner LoshWhen a menuset is NOT given a name (the default), 80*ca987d46SWarner Loshmenuset N is comprised of the following environment variables: 81*ca987d46SWarner Losh.Pp 82*ca987d46SWarner Losh.Bl -tag -width menusetN_caption[x][y] -compact -offset indent 83*ca987d46SWarner Losh.It Va ansisetN_caption[x] 84*ca987d46SWarner Losh-> ansi_caption[x] 85*ca987d46SWarner Losh.It Va ansisetN_caption[x][y] 86*ca987d46SWarner Losh-> ansi_caption[x][y] 87*ca987d46SWarner Losh.It Va menusetN_acpi 88*ca987d46SWarner Losh-> menu_acpi 89*ca987d46SWarner Losh.It Va menusetN_caption[x] 90*ca987d46SWarner Losh-> menu_caption[x] 91*ca987d46SWarner Losh.It Va menusetN_caption[x][y] 92*ca987d46SWarner Losh-> menu_caption[x][y] 93*ca987d46SWarner Losh.It Va menusetN_command[x] 94*ca987d46SWarner Losh-> menu_command[x] 95*ca987d46SWarner Losh.It Va menusetN_init 96*ca987d46SWarner Losh-> 97*ca987d46SWarner Losh.Dq Li evaluated 98*ca987d46SWarner Losh.It Va menusetN_init[x] 99*ca987d46SWarner Losh-> menu_init[x] 100*ca987d46SWarner Losh.It Va menusetN_keycode[x] 101*ca987d46SWarner Losh-> menu_keycode[x] 102*ca987d46SWarner Losh.It Va menusetN_options 103*ca987d46SWarner Losh-> menu_options 104*ca987d46SWarner Losh.It Va menusetN_optionstext 105*ca987d46SWarner Losh-> menu_optionstext 106*ca987d46SWarner Losh.It Va menusetN_reboot 107*ca987d46SWarner Losh-> menu_reboot 108*ca987d46SWarner Losh.It Va toggledsetN_ansi[x] 109*ca987d46SWarner Losh-> toggled_ansi[x] 110*ca987d46SWarner Losh.It Va toggledsetN_text[x] 111*ca987d46SWarner Losh-> toggled_text[x] 112*ca987d46SWarner Losh.El 113*ca987d46SWarner Losh.Pp 114*ca987d46SWarner LoshWhen you choose to give a menuset a name (by setting $menuset_nameN), 115*ca987d46SWarner Loshmenuset N is instead comprised of the following environment variables: 116*ca987d46SWarner Losh.Pp 117*ca987d46SWarner Losh.Bl -tag -width NAMEmenu_caption[x][y] -compact -offset indent 118*ca987d46SWarner Losh.It Va NAMEansi_caption[x] 119*ca987d46SWarner Losh-> ansi_caption[x] 120*ca987d46SWarner Losh.It Va NAMEansi_caption[x][y] 121*ca987d46SWarner Losh-> ansi_caption[x][y] 122*ca987d46SWarner Losh.It Va NAMEmenu_acpi 123*ca987d46SWarner Losh-> menu_acpi 124*ca987d46SWarner Losh.It Va NAMEmenu_caption[x] 125*ca987d46SWarner Losh-> menu_caption[x] 126*ca987d46SWarner Losh.It Va NAMEmenu_caption[x][y] 127*ca987d46SWarner Losh-> menu_caption[x][y] 128*ca987d46SWarner Losh.It Va NAMEmenu_command[x] 129*ca987d46SWarner Losh-> menu_command[x] 130*ca987d46SWarner Losh.It Va NAMEmenu_init 131*ca987d46SWarner Losh-> 132*ca987d46SWarner Losh.Dq Li evaluated 133*ca987d46SWarner Losh.It Va NAMEmenu_init[x] 134*ca987d46SWarner Losh-> menu_init[x] 135*ca987d46SWarner Losh.It Va NAMEmenu_keycode[x] 136*ca987d46SWarner Losh-> menu_keycode[x] 137*ca987d46SWarner Losh.It Va NAMEmenu_options 138*ca987d46SWarner Losh-> menu_options 139*ca987d46SWarner Losh.It Va NAMEmenu_optionstext 140*ca987d46SWarner Losh-> menu_optionstext 141*ca987d46SWarner Losh.It Va NAMEmenu_reboot 142*ca987d46SWarner Losh-> menu_reboot 143*ca987d46SWarner Losh.It Va NAMEtoggled_ansi[x] 144*ca987d46SWarner Losh-> toggled_ansi[x] 145*ca987d46SWarner Losh.It Va NAMEtoggled_text[x] 146*ca987d46SWarner Losh-> toggled_text[x] 147*ca987d46SWarner Losh.El 148*ca987d46SWarner Losh.Pp 149*ca987d46SWarner Loshwhere 150*ca987d46SWarner Losh.Dq Li NAME 151*ca987d46SWarner Loshis the value of $menuset_nameN. 152*ca987d46SWarner LoshIn the case of $NAMEmenu_init ($menusetN_init when $menuset_nameN is unset), 153*ca987d46SWarner Loshthe value is evaluated as an FICL statement. 154*ca987d46SWarner LoshThis can be used to dynamically adjust the menuset variables right before the 155*ca987d46SWarner Loshmenu is activated. 156*ca987d46SWarner Losh.Pp 157*ca987d46SWarner LoshIn addition, 158*ca987d46SWarner Losh.Nm 159*ca987d46SWarner Loshprovides the following FICL words: 160*ca987d46SWarner Losh.Pp 161*ca987d46SWarner Losh.Bl -tag -width menuset -compact -offset indent 162*ca987d46SWarner Losh.It Ic menuset-checksetnum ( N -- ) 163*ca987d46SWarner LoshGiven a single integer on the stack, sets a global variable 164*ca987d46SWarner Losh.Va menuset_use_name 165*ca987d46SWarner Loshto a boolean based on whether $menuset_nameN is set (true) or not (false). 166*ca987d46SWarner LoshAlso sets $affix temporary variable (prefix or infix depending on 167*ca987d46SWarner Loshmenuset_use_name). 168*ca987d46SWarner LoshAutomatically called by menuset-loadsetnum and menusets-unset. 169*ca987d46SWarner Losh.It Ic menuset-loadvar ( -- ) 170*ca987d46SWarner LoshUsed indirectly to shorten syntax and mitigate dictionary size. 171*ca987d46SWarner LoshRequires the following temporary environment variables: 172*ca987d46SWarner Losh.Pp 173*ca987d46SWarner Losh.Bl -tag -width affix -compact -offset indent 174*ca987d46SWarner Losh.It Va type 175*ca987d46SWarner Loshshould be set to one of: menu toggled ansi 176*ca987d46SWarner Losh.It Va var 177*ca987d46SWarner Loshshould be set to one of: caption command keycode text ... 178*ca987d46SWarner Losh.It Va affix 179*ca987d46SWarner Losheither a prefix (menuset_use_name is true) or infix (menuset_use_name is false) 180*ca987d46SWarner Losh.El 181*ca987d46SWarner Losh.Pp 182*ca987d46SWarner LoshIf the global 183*ca987d46SWarner Losh.Va menuset_use_name 184*ca987d46SWarner Loshis true, the variable ${type}_${var} is made to 185*ca987d46SWarner Loshequal the value of the variable ${affix}${type}_${var} 186*ca987d46SWarner Losh(note: in this case menuset-checksetnum has set $affix to $menuset_nameN). 187*ca987d46SWarner LoshOtherwise (when 188*ca987d46SWarner Losh.Va menuset_use_name 189*ca987d46SWarner Loshis false), the variable ${type}_${var} is made to 190*ca987d46SWarner Loshequal the value of the variable ${type}set${affix}_${var} 191*ca987d46SWarner Losh(note: in this case menuset-checksetnum has set $affix to N). 192*ca987d46SWarner Losh.Pp 193*ca987d46SWarner LoshBoth the global variable 194*ca987d46SWarner Losh.Va menuset_use_name 195*ca987d46SWarner Loshand the environment variable $affix are automatically handled by 196*ca987d46SWarner Loshmenuset-checksetnum above (which is automatically called by 197*ca987d46SWarner Loshmenuset-loadsetnum). 198*ca987d46SWarner Losh.It Ic menuset-unloadvar ( -- ) 199*ca987d46SWarner LoshUsed indirectly to shorten syntax and mitigate dictionary size. 200*ca987d46SWarner LoshLike menuset-loadvar except it unsets the menuset variable. 201*ca987d46SWarner LoshIf global 202*ca987d46SWarner Losh.Va menuset_use_name 203*ca987d46SWarner Loshis true ($affix is $menuset_nameN), 204*ca987d46SWarner Loshvariable ${affix}${type}_${var} is unset. 205*ca987d46SWarner LoshOtherwise, $affix is N and variable ${type}set${affix}_${var} is unset. 206*ca987d46SWarner Losh.It Ic menuset-loadmenuvar ( -- ) 207*ca987d46SWarner LoshSets $type to 208*ca987d46SWarner Losh.Dq menu 209*ca987d46SWarner Loshand calls menuset-loadvar. 210*ca987d46SWarner Losh.It Ic menuset-unloadmenuvar ( -- ) 211*ca987d46SWarner LoshSets $type to 212*ca987d46SWarner Losh.Dq menu 213*ca987d46SWarner Loshand calls menuset-unloadvar. 214*ca987d46SWarner Losh.It Ic menuset-loadxvar ( -- ) 215*ca987d46SWarner LoshLike menuset-loadvar except it takes an additional temporary variable $x. 216*ca987d46SWarner LoshIf the global 217*ca987d46SWarner Losh.Va menuset_use_name 218*ca987d46SWarner Loshis true (making $affix equal $menuset_nameN), 219*ca987d46SWarner Loshsets variable ${type}_${var}[${x}] to variable ${affix}${type}_${var}[${x}]. 220*ca987d46SWarner LoshOtherwise ($affix being N), sets the same variable to instead 221*ca987d46SWarner Losh${type}set{affix}_${var}[${x}]. 222*ca987d46SWarner Losh.It Ic menuset-unloadxvar ( -- ) 223*ca987d46SWarner LoshLike menuset-loadxvar except it unsets the menuset variable. 224*ca987d46SWarner LoshIf global 225*ca987d46SWarner Losh.Va menuset_use_name 226*ca987d46SWarner Loshis true, unsets ${affix}${type}_${var}[${x}]. 227*ca987d46SWarner LoshOtherwise, unsets ${type}set${affix}_${var}[${x}]. 228*ca987d46SWarner Losh.It Ic menuset-loadansixvar ( -- ) 229*ca987d46SWarner LoshSets $type to 230*ca987d46SWarner Losh.Dq ansi 231*ca987d46SWarner Loshand calls menuset-loadxvar 232*ca987d46SWarner Losh.It Ic menuset-unloadansixvar ( -- ) 233*ca987d46SWarner LoshSets $type to 234*ca987d46SWarner Losh.Dq ansi 235*ca987d46SWarner Loshand calls menuset-unloadxvar 236*ca987d46SWarner Losh.It Ic menuset-loadmenuxvar ( -- ) 237*ca987d46SWarner LoshSets $type to 238*ca987d46SWarner Losh.Dq ansi 239*ca987d46SWarner Loshand calls menuset-loadxvar 240*ca987d46SWarner Losh.It Ic menuset-unloadmenuxvar ( -- ) 241*ca987d46SWarner LoshSets $type to 242*ca987d46SWarner Losh.Dq ansi 243*ca987d46SWarner Loshand calls menuset-unloadxvar 244*ca987d46SWarner Losh.It Ic menuset-loadtoggledxvar ( -- ) 245*ca987d46SWarner LoshSets $type to 246*ca987d46SWarner Losh.Dq toggled 247*ca987d46SWarner Loshand calls menuset-loadxvar 248*ca987d46SWarner Losh.It Ic menuset-unloadtoggledxvar ( -- ) 249*ca987d46SWarner LoshSets $type to 250*ca987d46SWarner Losh.Dq toggled 251*ca987d46SWarner Loshand calls menuset-unloadxvar 252*ca987d46SWarner Losh.It Ic menuset-loadxyvar ( -- ) 253*ca987d46SWarner LoshLike menuset-loadxvar except it takes an additional temporary variable $y. 254*ca987d46SWarner LoshIf the global 255*ca987d46SWarner Losh.Va menuset_use_name 256*ca987d46SWarner Loshis true ($affix is $menuset_nameN), 257*ca987d46SWarner Loshsets variable ${type}_${var}[${x}][${y}] to ${affix}${type}_${var}[${x}][${y}]. 258*ca987d46SWarner LoshOtherwise ($affix is N) sets the same variable to instead 259*ca987d46SWarner Losh${type}set${affix}_${var}[${x}][${y}]. 260*ca987d46SWarner Losh.It Ic menuset-unloadxyvar ( -- ) 261*ca987d46SWarner LoshLike menuset-loadxyvar except it unsets the menuset variable. 262*ca987d46SWarner LoshIf the global 263*ca987d46SWarner Losh.Va menuset_use_name 264*ca987d46SWarner Loshis true, unsets ${affix}${type}_${var}[${x}][${y}]. 265*ca987d46SWarner LoshOtherwise, unsets ${type}set${affix}_${var}[${x}][${y}]. 266*ca987d46SWarner Losh.It Ic menuset-loadansixyvar ( -- ) 267*ca987d46SWarner LoshSets $type to 268*ca987d46SWarner Losh.Dq ansi 269*ca987d46SWarner Loshand calls menuset-loadxyvar. 270*ca987d46SWarner Losh.It Ic menuset-unloadansixyvar ( -- ) 271*ca987d46SWarner LoshSets $type to 272*ca987d46SWarner Losh.Dq ansi 273*ca987d46SWarner Loshand calls menuset-unloadxyvar. 274*ca987d46SWarner Losh.It Ic menuset-loadmenuxyvar ( -- ) 275*ca987d46SWarner LoshSets $type to 276*ca987d46SWarner Losh.Dq menu 277*ca987d46SWarner Loshand calls menuset-loadxyvar. 278*ca987d46SWarner Losh.It Ic menuset-unloadmenuxyvar ( -- ) 279*ca987d46SWarner LoshSets $type to 280*ca987d46SWarner Losh.Dq menu 281*ca987d46SWarner Loshand calls menuset-unloadxyvar. 282*ca987d46SWarner Losh.It Ic menuset-setnum-namevar ( N -- C-Addr/U ) 283*ca987d46SWarner LoshTakes a single integer on the stack and replaces it with a string (in c-addr/u 284*ca987d46SWarner Loshformat) whose value is 285*ca987d46SWarner Losh.Dq menuset_nameN . 286*ca987d46SWarner LoshFor example, if given 1 returns 287*ca987d46SWarner Losh.Dq menuset_name1 . 288*ca987d46SWarner Losh.It Ic menuset-cleanup ( N -- ) 289*ca987d46SWarner LoshUnsets all the various temporary variables, currently 290*ca987d46SWarner Losh.Va type , 291*ca987d46SWarner Losh.Va var , 292*ca987d46SWarner Losh.Va x , 293*ca987d46SWarner Losh.Va y , 294*ca987d46SWarner Loshand 295*ca987d46SWarner Losh.Va affix . 296*ca987d46SWarner Losh.El 297*ca987d46SWarner Losh.Pp 298*ca987d46SWarner LoshFor all values of 299*ca987d46SWarner Losh.Dq Li x 300*ca987d46SWarner Loshabove, use any number between 1 through 9. Sorry, double-digits are not 301*ca987d46SWarner Loshcurrently supported. 302*ca987d46SWarner LoshFor all values of 303*ca987d46SWarner Losh.Dq Li N 304*ca987d46SWarner Loshabove, use any number between 1 and 65535. 305*ca987d46SWarner Losh.Sh FILES 306*ca987d46SWarner Losh.Bl -tag -width /boot/menu-commands.4th -compact 307*ca987d46SWarner Losh.It Pa /boot/loader 308*ca987d46SWarner LoshThe 309*ca987d46SWarner Losh.Xr loader 8 . 310*ca987d46SWarner Losh.It Pa /boot/menu.4th 311*ca987d46SWarner LoshDynamic menu module. 312*ca987d46SWarner Losh.It Pa /boot/menu-commands.4th 313*ca987d46SWarner LoshContains the goto_menu command. 314*ca987d46SWarner Losh.It Pa /boot/menusets.4th 315*ca987d46SWarner Losh.Nm 316*ca987d46SWarner Loshitself. 317*ca987d46SWarner Losh.It Pa /boot/loader.rc 318*ca987d46SWarner Losh.Xr loader 8 319*ca987d46SWarner Loshbootstrapping script. 320*ca987d46SWarner Losh.El 321*ca987d46SWarner Losh.Sh EXAMPLES 322*ca987d46SWarner LoshA simple boot menu with a submenu: 323*ca987d46SWarner Losh.Pp 324*ca987d46SWarner Losh.Bd -literal -offset indent -compact 325*ca987d46SWarner Loshinclude /boot/menu.4th 326*ca987d46SWarner Loshinclude /boot/menu-commands.4th 327*ca987d46SWarner Loshmenu-init 328*ca987d46SWarner Loshset menuset1_caption[1]="Boot" 329*ca987d46SWarner Loshset menuset1_command[1]="boot" 330*ca987d46SWarner Loshset menuset1_caption[2]="Submenu..." 331*ca987d46SWarner Loshset menuset1_command[2]="2 goto_menu" 332*ca987d46SWarner Loshset menuset2_caption[1]="Back" 333*ca987d46SWarner Loshset menuset2_command[1]="1 goto_menu" 334*ca987d46SWarner Loshset menuset_initial=2 335*ca987d46SWarner Loshmenuset-loadinitial 336*ca987d46SWarner Loshmenu-display 337*ca987d46SWarner Losh.Ed 338*ca987d46SWarner Losh.Pp 339*ca987d46SWarner LoshThe same boot menu with named menusets: 340*ca987d46SWarner Losh.Pp 341*ca987d46SWarner Losh.Bd -literal -offset indent -compact 342*ca987d46SWarner Loshinclude /boot/menu.4th 343*ca987d46SWarner Loshinclude /boot/menu-commands.4th 344*ca987d46SWarner Loshmenu-init 345*ca987d46SWarner Loshset menuset_name1=main 346*ca987d46SWarner Loshset mainmenu_caption[1]="Boot" 347*ca987d46SWarner Loshset mainmenu_command[1]="boot" 348*ca987d46SWarner Loshset mainmenu_caption[2]="Submenu..." 349*ca987d46SWarner Loshset mainmenu_command[2]="2 goto_menu" 350*ca987d46SWarner Loshset menuset_name2=sub 351*ca987d46SWarner Loshset submenu_caption[1]="Back" 352*ca987d46SWarner Loshset submenu_command[1]="1 goto_menu" 353*ca987d46SWarner Losh.Ed 354*ca987d46SWarner Losh.Sh SEE ALSO 355*ca987d46SWarner Losh.Xr loader.conf 5 , 356*ca987d46SWarner Losh.Xr beastie.4th 8 , 357*ca987d46SWarner Losh.Xr loader 8 , 358*ca987d46SWarner Losh.Xr loader.4th 8 , 359*ca987d46SWarner Losh.Xr menu.4th 8 360*ca987d46SWarner Losh.Sh HISTORY 361*ca987d46SWarner LoshThe 362*ca987d46SWarner Losh.Nm 363*ca987d46SWarner Loshset of commands first appeared in 364*ca987d46SWarner Losh.Fx 10.0 . 365*ca987d46SWarner Losh.Sh AUTHORS 366*ca987d46SWarner LoshThe 367*ca987d46SWarner Losh.Nm 368*ca987d46SWarner Loshset of commands was written by 369*ca987d46SWarner Losh.An -nosplit 370*ca987d46SWarner Losh.An Devin Teske Aq dteske@FreeBSD.org . 371