EN JA
MENUSETS.4TH(8)
MENUSETS.4TH(8) FreeBSD System Manager's Manual MENUSETS.4TH(8)

名称

menusets.4thFreeBSD 動的なサブメニューブートモジュール

解説

menusets.4th と呼ばれているファイルは、 menu.4th(8) によって提供される動的なメニューシステムにサブメニューの機能を追加するように設計された 1 組のコマンドです。サブメニューは、注意深く指定された環境変数のシステムによって管理されています。それら自体によって menusets.4th のコマンドは、ほとんどの用途にとって十分ではありません。追加のコマンドのための menu.4th(8) に加えて、最も一般的な状況については、下記の例を参照してください。

menusets.4th で提供されるコマンドのいずれかを使用する前に、それは、次のコマンドを通して含まれなければなりません:

include menusets.4th

この行は、デフォルトの /boot/menu-commands.4th ファイルにあるので、それは、通常の設定で必要ではありません (そして、再度、含められるべきではありません):

それによって提供されるコマンドは、次の通りです:

menuset-loadsetnum
活性化される menuset 環境変数を識別するためにスタックで単一の整数を取ります (下記の環境変数を参照)。
menuset-loadinitial
$menuset_initial が設定されるなら、値を menuset-loadsetnum へ渡します。値は、数でなければなりません。
menusets-unset
すべての menusets に関連した環境変数を未設定にします。 1 で始まりを増加し、最初の設定されていない menuset で停止します。 menuset は、項目 1 のためのキャプションが設定されているなら、設定されたと見なされます。

その振る舞いに影響する環境変数は、次の通りです:

menuset_initial
menuset-loadinitial が呼び出されるとき、menuset-loadsetnum に渡される数。
menuset_nameN
menuset に名前を与えるために使用されます。

menuset が名前 (デフォルト) を与えられ「ない」とき、 menuset N は、次の環境変数で構成されます:

ansisetN_caption[x]
-> ansi_caption[x]
ansisetN_caption[x][y]
-> ansi_caption[x][y]
menusetN_acpi
-> menu_acpi
menusetN_caption[x]
-> menu_caption[x]
menusetN_caption[x][y]
-> menu_caption[x][y]
menusetN_command[x]
-> menu_command[x]
menusetN_init
->“ evaluated
menusetN_init[x]
-> menu_init[x]
menusetN_keycode[x]
-> menu_keycode[x]
menusetN_options
-> menu_options
menusetN_optionstext
-> menu_optionstext
menusetN_reboot
-> menu_reboot
toggledsetN_ansi[x]
-> toggled_ansi[x]
toggledsetN_text[x]
-> toggled_text[x]

($menuset_nameN を設定することで) menuset に名前を与えることを選択するとき、 menuset N は、代りに、次の環境変数で構成されます:

NAMEansi_caption[x]
-> ansi_caption[x]
NAMEansi_caption[x][y]
-> ansi_caption[x][y]
NAMEmenu_acpi
-> menu_acpi
NAMEmenu_caption[x]
-> menu_caption[x]
NAMEmenu_caption[x][y]
-> menu_caption[x][y]
NAMEmenu_command[x]
-> menu_command[x]
NAMEmenu_init
->“ evaluated
NAMEmenu_init[x]
-> menu_init[x]
NAMEmenu_keycode[x]
-> menu_keycode[x]
NAMEmenu_options
-> menu_options
NAMEmenu_optionstext
-> menu_optionstext
NAMEmenu_reboot
-> menu_reboot
NAMEtoggled_ansi[x]
-> toggled_ansi[x]
NAMEtoggled_text[x]
-> toggled_text[x]

ここで、“ NAME”は、$menuset_name の値です。 $NAMEmenu_init 場合に ($menuset_nameN が未設定のときの $menusetN_init)、値は、FICL 文 (statement) として評価されます。メニューが活性化される直前、動的に menuset 変数を調節するために、これを使用することができます。

さらに、 menusets.4th は、次の FICL 単語を提供しています:

menuset-checksetnum ( N --)
スタック上に単一の整数を与え、$menuset_nameN が (真) または (偽) に設定されているかどうかのブール値に基づきグローバル変数 menuset_use_name を設定します。また、$affix 一時的変数 (menuset_use_name に依存する接頭辞 (prefix) または挿入辞 (infix)) を設定します。自動的に menuset-loadsetnum と menusets-unset によって呼び出されます。
menuset-loadvar ( --)
構文を短くし、辞書サイズを軽減するために間接的に使用されます。次の一時的環境変数を要求します:

type
次のうちの 1 つに設定されるべきです: menu toggled ansi
var
次のうちの 1 つに設定されるべきです: caption command keycode text ...
affix
接頭辞 (menuset_use_name が真) または挿入辞 (menuset_use_name が偽) のいずれか。

グローバルな menuset_use_name が真であるなら、変数 ${type}_${var} は、変数 ${affix}${type}_${var} の値と等しくされます (注: この場合、menuset-checksetnum は、$affix を $menuset_nameN に設定します)。そうでなければ、 ( menuset_use_name が偽であるとき)、変数 ${type}_${var} は、変数 ${type}set${affix}_${var} の値と等しくされます (注: この場合、menuset-checksetnum は、$affix を N に設定します)。

グローバル変数 menuset_use_name と環境変数 $affix の両方は、(menuset-loadsetnum によって自動的に呼び出される) 上記の menuset-checksetnum によって自動的に処理されます。

menuset-unloadvar ( --)
構文を短くし、辞書サイズを軽減するために間接的に使用されます。 menuset 変数を未設定にすることを除いて、menuset-loadvar に似ています。グローバルな menuset_use_name が真 ($affix は $menuset_nameN です) であるなら、変数 ${affix}${type}_${var} は、未設定にされます。そうでなければ、$affix は、N であり、変数 ${type}set${affix}_${var} は、未設定にされます。
menuset-loadmenuvar ( --)
$type を“menu”に設定し、menuset-loadvar を呼び出します。
menuset-unloadmenuvar ( --)
$type を“menu”に設定し、menuset-unloadvar を呼び出します。
menuset-loadxvar ( --)
追加の一時的変数 $x を取ることを除いて、menuset-loadvar に似ています。グローバルな menuset_use_name が真 ($affix と $menuset_nameN を等しくする) なら、変数 ${type}_${var}[${x}] を変数 ${affix}${type}_${var}[${x}] に設定します。そうでなければ (N となる $affix)、代わりに同じ変数を ${type}set{affix}_${var}[${x}] に設定します。
menuset-unloadxvar ( --)
menuset 変数を未設定にすることの除いて、menuset-loadxvar に似ています。グローバルな menuset_use_name が真であるなら、${affix}${type}_${var}[${x}] を未設定とします。そうでなければ、${type}set${affix}_${var}[${x}] を未設定とします。
menuset-loadansixvar ( --)
$type を“ansi”に設定し、menuset-loadxvar を呼び出します。
menuset-unloadansixvar ( --)
$type を“ansi”に設定し、menuset-unloadxvar を呼び出します。
menuset-loadmenuxvar ( --)
$type を“ansi”に設定し、menuset-loadxvar を呼び出します。
menuset-unloadmenuxvar ( --)
$type を“ansi”に設定し、menuset-unloadxvar を呼び出します。
menuset-loadtoggledxvar ( --)
$type を“toggled”に設定し、menuset-loadxvar を呼び出します。
menuset-unloadtoggledxvar ( --)
$type を“toggled”に設定し、menuset-unloadxvar を呼び出します。
menuset-loadxyvar ( --)
追加の一時的変数 $y を取ることを除いて、menuset-loadxvar に似ています。グローバルな menuset_use_name が真 ($affix は、$menuset_nameN です) であるなら、変数 ${type}_${var}[${x}][${y}] を ${affix}${type}_${var}[${x}][${y}] に設定します。そうでなければ ($affix は、N です)、代わりに同じ変数を ${type}set${affix}_${var}[${x}][${y}] に設定します。
menuset-unloadxyvar ( --)
menuset 変数を未設定にすることの除いて、menuset-loadxyvar に似ています。グローバルな menuset_use_name が真であるなら、${affix}${type}_${var}[${x}][${y}] を未設定とします。そうでなければ、${type}set${affix}_${var}[${x}][${y}] を未設定とします。
menuset-loadansixyvar ( --)
$type を“ansi”に設定し、menuset-loadxyvar を呼び出します。
menuset-unloadansixyvar ( --)
$type を“ansi”に設定し、menuset-unloadxyvar を呼び出します。
menuset-loadmenuxyvar ( --)
$type を“menu”に設定し、menuset-loadxyvar を呼び出します。
menuset-unloadmenuxyvar ( --)
$type を“menu”に設定し、menuset-unloadxyvar を呼び出します。
menuset-setnum-namevar ( N -- C-Addr/U)
スタックで単一の整数を取り、値が“menuset_nameN”である (c-addr/u 形式の) 文字列でそれを置き換えます。例えば、1 を与えられたなら、“menuset_name1”を返します。
menuset-cleanup ( N --)
現在 type, var, x, yaffix である、様々な一時的変数をすべて未設定とします。

上記の“ x”のすべての値について、1 から 9 の間のあらゆる数を使用します。すみません、2 桁 (double-digits) は、現在サポートされていません。上記の“ N”のすべての値について、1 と 65535 の間のあらゆる数を使用します。

関連ファイル

/boot/loader
loader(8)
/boot/menu.4th
動的なメニューモジュール。
/boot/menu-commands.4th
goto_menu コマンドを含んでいる。
/boot/menusets.4th
menusets.4th 自体。
/boot/loader.rc
loader(8) ブートストラップのスクリプト。

使用例

サブメニューがある単純なブートメニュー:

include /boot/menu.4th 
include /boot/menu-commands.4th 
menu-init 
set menuset1_caption[1]="Boot" 
set menuset1_command[1]="boot" 
set menuset1_caption[2]="Submenu..." 
set menuset1_command[2]="2 goto_menu" 
set menuset2_caption[1]="Back" 
set menuset2_command[1]="1 goto_menu" 
set menuset_initial=2 
menuset-loadinitial 
menu-display

menusets と名前が付けられた同じブートメニュー:

include /boot/menu.4th 
include /boot/menu-commands.4th 
menu-init 
set menuset_name1=main 
set mainmenu_caption[1]="Boot" 
set mainmenu_command[1]="boot" 
set mainmenu_caption[2]="Submenu..." 
set mainmenu_command[2]="2 goto_menu" 
set menuset_name2=sub 
set submenu_caption[1]="Back" 
set submenu_command[1]="1 goto_menu"

歴史

menusets.4th コマンドセットは、 FreeBSD 10.0 ではじめて登場しました。

作者

menusets.4th コマンドセットは、 Devin Teske <dteske@FreeBSD.org>によって書かれました。
November 5, 2012 FreeBSD