xref: /freebsd/stand/forth/menusets.4th.8 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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