#!/usr/local/bin/cbsd
#v10.1.2
MYARG=""
MYOPTARG="selected controlmaster"
MYDESC="Choose and return boot device"
ADDHELP="selected= specify selected item"

. ${subrdir}/nc.subr
. ${cbsdinit}

. ${dialog}

f_dialog_title "$msg_system_console_configuration"
f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
f_mustberoot_init

init_item_list()
{
	local _cmd _res

	item_list="cd hdd net"

	cd_desc="Boot from CD"
	hdd_desc="Boot from HDD"
	net_desc="Boot from Network"

	cd_long_desc="Boot from attached virtual ATAPI CD/DVD device"
	hdd_long_desc="Boot from attached virtual SATA/SCSI device"
	net_long_desc="Boot from Network: PXE/NFS/HTTP"

}

browse_boot_list()
{
	local title="Select boot device"
	local prompt=""
	local defaultitem=
	local hline="Hit ENTER for SELECT"
	local mark prefix name

	local f_dialog_title=" Service list "

	f_dialog_default_fetch defaultitem

	local menu_list=" \
		'EXIT'		'<<'			'Exit this menu' \
		'-'	'-'	'' \
	" # END-QUOTE

	local prefix=X
	local cur_prefix=Y

	[ -n "${selected}" ] && defaultitem=${selected}

	for name in ${item_list}; do

		prefix=$( substr --pos=0 --len=1 --str=${name} )

		eval desc=\$${name}_desc
		eval long_desc=\$${name}_long_desc

		menu_list="${menu_list} '${name}'	'${desc}'	'${long_desc}'"
	done

	cbsd_menubox
	retval=$?

	f_dialog_data_sanitize menu_choice
	f_dialog_menutag_store "$menu_choice"
	f_dialog_default_store "$menu_choice"

	return $retval
}

unset_selected_item()
{
	local name

	for name in ${item_list}; do
		eval "selected_item_${name}=\"0\""
	done

}

### MAIN ###
init_item_list
browse_boot_list

[ -z "${mtag}" ] && f_die

case "$mtag" in
	"EXIT")
		f_die
		;;
	"-")
		f_die
		;;
	*)
		index=${mtag%% *}
		name=${mtag##* }

		[ "${name}" = "pxe" ] && bootmgmt-pxe

		if [ -n "${name}" ]; then
			if [ -n "${controlmaster}" ]; then
				${TRUNCATE_CMD} -s0 ${controlmaster}
				/usr/local/cbsd/misc/cbsdsysrc -qf ${controlmaster} vm_boot="${name}" >/dev/null
			else
				echo $name
			fi
			exit $SUCCESS
		else
			f_die
		fi
	;;
esac

f_die
