1*7323adacSDevin Teskeif [ ! "$_MEDIA_OPTIONS_SUBR" ]; then _MEDIA_OPTIONS_SUBR=1 2*7323adacSDevin Teske# 3*7323adacSDevin Teske# Copyright (c) 2012-2013 Devin Teske 4*7323adacSDevin Teske# All Rights Reserved. 5*7323adacSDevin Teske# 6*7323adacSDevin Teske# Redistribution and use in source and binary forms, with or without 7*7323adacSDevin Teske# modification, are permitted provided that the following conditions 8*7323adacSDevin Teske# are met: 9*7323adacSDevin Teske# 1. Redistributions of source code must retain the above copyright 10*7323adacSDevin Teske# notice, this list of conditions and the following disclaimer. 11*7323adacSDevin Teske# 2. Redistributions in binary form must reproduce the above copyright 12*7323adacSDevin Teske# notice, this list of conditions and the following disclaimer in the 13*7323adacSDevin Teske# documentation and/or other materials provided with the distribution. 14*7323adacSDevin Teske# 15*7323adacSDevin Teske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*7323adacSDevin Teske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE 17*7323adacSDevin Teske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*7323adacSDevin Teske# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*7323adacSDevin Teske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*7323adacSDevin Teske# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*7323adacSDevin Teske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*7323adacSDevin Teske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*7323adacSDevin Teske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*7323adacSDevin Teske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*7323adacSDevin Teske# SUCH DAMAGE. 26*7323adacSDevin Teske# 27*7323adacSDevin Teske# $FreeBSD$ 28*7323adacSDevin Teske# 29*7323adacSDevin Teske############################################################ INCLUDES 30*7323adacSDevin Teske 31*7323adacSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig" 32*7323adacSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1 33*7323adacSDevin Teskef_dprintf "%s: loading includes..." media/options.subr 34*7323adacSDevin Teskef_include $BSDCFG_SHARE/dialog.subr 35*7323adacSDevin Teskef_include $BSDCFG_SHARE/struct.subr 36*7323adacSDevin Teskef_include $BSDCFG_SHARE/variable.subr 37*7323adacSDevin Teskef_include $BSDCFG_SHARE/media/any.subr 38*7323adacSDevin Teskef_include $BSDCFG_SHARE/media/ftp.subr 39*7323adacSDevin Teske 40*7323adacSDevin TeskeBSDCFG_LIBE="/usr/libexec/bsdconfig" 41*7323adacSDevin Teskef_include_lang $BSDCFG_LIBE/include/messages.subr 42*7323adacSDevin Teske 43*7323adacSDevin TeskeOPTIONS_HELPFILE=$BSDCFG_LIBE/include/options.hlp 44*7323adacSDevin Teske 45*7323adacSDevin Teske############################################################ FUNCTIONS 46*7323adacSDevin Teske 47*7323adacSDevin Teske# f_media_options_menu 48*7323adacSDevin Teske# 49*7323adacSDevin Teske# Prompt the user to confirm/edit various media settings. Returns success. 50*7323adacSDevin Teske# 51*7323adacSDevin Teskef_media_options_menu() 52*7323adacSDevin Teske{ 53*7323adacSDevin Teske f_dialog_title "$msg_options_editor" 54*7323adacSDevin Teske local title="$DIALOG_TITLE" btitle="$DIALOG_BACKTITLE" 55*7323adacSDevin Teske f_dialog_title_restore 56*7323adacSDevin Teske local prompt="" 57*7323adacSDevin Teske local hline="$hline_arrows_tab_enter" 58*7323adacSDevin Teske local menu_list size cp 59*7323adacSDevin Teske 60*7323adacSDevin Teske # 61*7323adacSDevin Teske # A hack so that the dialogs below are always interactive in a script 62*7323adacSDevin Teske # 63*7323adacSDevin Teske local old_interactive= 64*7323adacSDevin Teske if ! f_interactive; then 65*7323adacSDevin Teske f_getvar $VAR_NONINTERACTIVE old_interactive 66*7323adacSDevin Teske unset $VAR_NONINTERACTIVE 67*7323adacSDevin Teske fi 68*7323adacSDevin Teske 69*7323adacSDevin Teske while :; do 70*7323adacSDevin Teske menu_list="" 71*7323adacSDevin Teske 72*7323adacSDevin Teske f_getvar $VAR_NFS_SECURE cp 73*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 74*7323adacSDevin Teske ' $msg_nfs_secure' 'YES' 75*7323adacSDevin Teske '$msg_nfs_server_talks_only_on_a_secure_port'" 76*7323adacSDevin Teske else menu_list="$menu_list 77*7323adacSDevin Teske ' $msg_nfs_secure' 'NO' 78*7323adacSDevin Teske '$msg_nfs_server_talks_only_on_a_secure_port'" 79*7323adacSDevin Teske fi 80*7323adacSDevin Teske 81*7323adacSDevin Teske f_getvar $VAR_SLOW_ETHER cp 82*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 83*7323adacSDevin Teske ' $msg_nfs_slow' 'YES' 84*7323adacSDevin Teske '$msg_user_is_using_a_slow_pc_or_ethernet_card'" 85*7323adacSDevin Teske else menu_list="$menu_list 86*7323adacSDevin Teske ' $msg_nfs_slow' 'NO' 87*7323adacSDevin Teske '$msg_user_is_using_a_slow_pc_or_ethernet_card'" 88*7323adacSDevin Teske fi 89*7323adacSDevin Teske 90*7323adacSDevin Teske f_getvar $VAR_NFS_TCP cp 91*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 92*7323adacSDevin Teske ' $msg_nfs_tcp' 'YES' '$msg_use_tcp_protocol_for_nfs'" 93*7323adacSDevin Teske else menu_list="$menu_list 94*7323adacSDevin Teske ' $msg_nfs_tcp' 'NO' '$msg_use_tcp_protocol_for_nfs'" 95*7323adacSDevin Teske fi 96*7323adacSDevin Teske 97*7323adacSDevin Teske f_getvar $VAR_NFS_V3 cp 98*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 99*7323adacSDevin Teske ' $msg_nfs_version_3' 'YES' '$msg_use_nfs_version_3'" 100*7323adacSDevin Teske else menu_list="$menu_list 101*7323adacSDevin Teske ' $msg_nfs_version_3' 'NO' '$msg_use_nfs_version_3'" 102*7323adacSDevin Teske fi 103*7323adacSDevin Teske 104*7323adacSDevin Teske f_getvar $VAR_DEBUG cp 105*7323adacSDevin Teske if [ "$cp" ]; then menu_list="$menu_list 106*7323adacSDevin Teske ' $msg_debugging' 'YES' 107*7323adacSDevin Teske '$msg_emit_extra_debugging_output'" 108*7323adacSDevin Teske else menu_list="$menu_list 109*7323adacSDevin Teske ' $msg_debugging' 'NO' 110*7323adacSDevin Teske '$msg_emit_extra_debugging_output'" 111*7323adacSDevin Teske fi 112*7323adacSDevin Teske 113*7323adacSDevin Teske f_getvar $VAR_TRY_DHCP cp 114*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 115*7323adacSDevin Teske ' $msg_dhcp' 'YES' 116*7323adacSDevin Teske '$msg_attempt_automatic_dhcp_configuration'" 117*7323adacSDevin Teske else menu_list="$menu_list 118*7323adacSDevin Teske ' $msg_dhcp' 'NO' 119*7323adacSDevin Teske '$msg_attempt_automatic_dhcp_configuration'" 120*7323adacSDevin Teske fi 121*7323adacSDevin Teske 122*7323adacSDevin Teske f_getvar $VAR_TRY_RTSOL cp 123*7323adacSDevin Teske if [ "$cp" = "YES" ]; then menu_list="$menu_list 124*7323adacSDevin Teske ' $msg_ipv6' 'YES' 125*7323adacSDevin Teske '$msg_attempt_ipv6_configuration_of_interfaces'" 126*7323adacSDevin Teske else menu_list="$menu_list 127*7323adacSDevin Teske ' $msg_ipv6' 'NO' 128*7323adacSDevin Teske '$msg_attempt_ipv6_configuration_of_interfaces'" 129*7323adacSDevin Teske fi 130*7323adacSDevin Teske 131*7323adacSDevin Teske f_getvar $VAR_FTP_USER cp 132*7323adacSDevin Teske menu_list="$menu_list 133*7323adacSDevin Teske ' $msg_ftp_username' '$cp' 134*7323adacSDevin Teske '$msg_username_and_password_to_use'" 135*7323adacSDevin Teske 136*7323adacSDevin Teske f_getvar $VAR_EDITOR cp 137*7323adacSDevin Teske menu_list="$menu_list 138*7323adacSDevin Teske ' $msg_editor' '$cp' '$msg_which_text_editor_to_use'" 139*7323adacSDevin Teske 140*7323adacSDevin Teske f_getvar $VAR_RELNAME cp 141*7323adacSDevin Teske menu_list="$menu_list 142*7323adacSDevin Teske ' $msg_release_name' '$cp' 143*7323adacSDevin Teske '$msg_which_release_to_attempt_to_load'" 144*7323adacSDevin Teske 145*7323adacSDevin Teske if f_struct device_media; then 146*7323adacSDevin Teske device_media get type cp 147*7323adacSDevin Teske case "$cp" in 148*7323adacSDevin Teske $DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK) 149*7323adacSDevin Teske cp="$msg_file_system";; 150*7323adacSDevin Teske $DEVICE_TYPE_DIRECTORY) 151*7323adacSDevin Teske cp="$msg_directory";; 152*7323adacSDevin Teske $DEVICE_TYPE_FLOPPY) 153*7323adacSDevin Teske cp="$msg_floppy";; 154*7323adacSDevin Teske $DEVICE_TYPE_FTP) 155*7323adacSDevin Teske cp="$msg_ftp";; 156*7323adacSDevin Teske $DEVICE_TYPE_HTTP_PROXY) 157*7323adacSDevin Teske cp="$msg_http_proxy";; 158*7323adacSDevin Teske $DEVICE_TYPE_CDROM) 159*7323adacSDevin Teske cp="$msg_cdrom";; 160*7323adacSDevin Teske $DEVICE_TYPE_USB) 161*7323adacSDevin Teske cp="$msg_usb";; 162*7323adacSDevin Teske $DEVICE_TYPE_DOS) 163*7323adacSDevin Teske cp="$msg_dos";; 164*7323adacSDevin Teske $DEVICE_TYPE_NFS) 165*7323adacSDevin Teske cp="$msg_nfs";; 166*7323adacSDevin Teske *) 167*7323adacSDevin Teske cp="<$msg_unknown>" 168*7323adacSDevin Teske esac 169*7323adacSDevin Teske else 170*7323adacSDevin Teske cp="<$msg_not_yet_set>" 171*7323adacSDevin Teske fi 172*7323adacSDevin Teske menu_list="$menu_list 173*7323adacSDevin Teske ' $msg_media_type' '$cp' 174*7323adacSDevin Teske '$msg_the_current_installation_media_type'" 175*7323adacSDevin Teske 176*7323adacSDevin Teske f_getvar $VAR_MEDIA_TIMEOUT cp 177*7323adacSDevin Teske menu_list="$menu_list 178*7323adacSDevin Teske ' $msg_media_timeout' '$cp' 179*7323adacSDevin Teske '$msg_timeout_value_in_seconds_for_slow_media'" 180*7323adacSDevin Teske 181*7323adacSDevin Teske menu_list="$menu_list 182*7323adacSDevin Teske ' $msg_rescan_devices' '<*>' 183*7323adacSDevin Teske '$msg_rerun_bsdconfig_initial_device_probe' 184*7323adacSDevin Teske ' $msg_use_defaults' '[${msg_reset}]' 185*7323adacSDevin Teske '$msg_reset_all_values_to_startup_defaults' 186*7323adacSDevin Teske " # END-QUOTE 187*7323adacSDevin Teske 188*7323adacSDevin Teske size=$( eval f_dialog_menu_with_help_size \ 189*7323adacSDevin Teske \"\$title\" \ 190*7323adacSDevin Teske \"\$btitle\" \ 191*7323adacSDevin Teske \"\$prompt\" \ 192*7323adacSDevin Teske \"\$hline\" \ 193*7323adacSDevin Teske $menu_list ) 194*7323adacSDevin Teske 195*7323adacSDevin Teske local dialog_menu 196*7323adacSDevin Teske 197*7323adacSDevin Teske dialog_menu=$( eval $DIALOG \ 198*7323adacSDevin Teske --title \"\$title\" \ 199*7323adacSDevin Teske --backtitle \"\$btitle\" \ 200*7323adacSDevin Teske --hline \"\$hline\" \ 201*7323adacSDevin Teske --item-help \ 202*7323adacSDevin Teske --ok-label \"\$msg_ok\" \ 203*7323adacSDevin Teske --cancel-label \"\$msg_done\" \ 204*7323adacSDevin Teske --help-button \ 205*7323adacSDevin Teske --help-label \"\$msg_help\" \ 206*7323adacSDevin Teske ${USE_XDIALOG:+--help \"\"} \ 207*7323adacSDevin Teske --menu \"\$prompt\" $size $menu_list \ 208*7323adacSDevin Teske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 209*7323adacSDevin Teske ) 210*7323adacSDevin Teske local retval=$? 211*7323adacSDevin Teske setvar DIALOG_MENU_$$ "$dialog_menu" 212*7323adacSDevin Teske 213*7323adacSDevin Teske local mtag 214*7323adacSDevin Teske mtag=$( f_dialog_menutag ) 215*7323adacSDevin Teske f_dprintf "retval=%s mtag=[%s]" $retval "$mtag" 216*7323adacSDevin Teske 217*7323adacSDevin Teske if [ $retval -eq 2 ]; then 218*7323adacSDevin Teske # The Help button was pressed 219*7323adacSDevin Teske f_show_help "$OPTIONS_HELPFILE" 220*7323adacSDevin Teske continue 221*7323adacSDevin Teske elif [ $retval -ne 0 ]; then 222*7323adacSDevin Teske break # to success 223*7323adacSDevin Teske fi 224*7323adacSDevin Teske 225*7323adacSDevin Teske case "$mtag" in 226*7323adacSDevin Teske " $msg_nfs_secure") 227*7323adacSDevin Teske f_getvar $VAR_NFS_SECURE cp 228*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 229*7323adacSDevin Teske export $VAR_NFS_SECURE="NO" 230*7323adacSDevin Teske else 231*7323adacSDevin Teske export $VAR_NFS_SECURE="YES" 232*7323adacSDevin Teske fi ;; 233*7323adacSDevin Teske " $msg_nfs_slow") 234*7323adacSDevin Teske f_getvar $VAR_SLOW_ETHER cp 235*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 236*7323adacSDevin Teske export $VAR_SLOW_ETHER="NO" 237*7323adacSDevin Teske else 238*7323adacSDevin Teske export $VAR_SLOW_ETHER="YES" 239*7323adacSDevin Teske fi ;; 240*7323adacSDevin Teske " $msg_nfs_tcp") 241*7323adacSDevin Teske f_getvar $VAR_NFS_TCP cp 242*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 243*7323adacSDevin Teske export $VAR_NFS_TCP="NO" 244*7323adacSDevin Teske else 245*7323adacSDevin Teske export $VAR_NFS_TCP="YES" 246*7323adacSDevin Teske fi ;; 247*7323adacSDevin Teske " $msg_nfs_version_3") 248*7323adacSDevin Teske f_getvar $VAR_NFS_V3 cp 249*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 250*7323adacSDevin Teske export $VAR_NFS_V3="NO" 251*7323adacSDevin Teske else 252*7323adacSDevin Teske export $VAR_NFS_V3="YES" 253*7323adacSDevin Teske fi ;; 254*7323adacSDevin Teske " $msg_debugging") 255*7323adacSDevin Teske if f_getvar $VAR_DEBUG cp && [ "$cp" ]; then 256*7323adacSDevin Teske unset $VAR_DEBUG 257*7323adacSDevin Teske else 258*7323adacSDevin Teske export $VAR_DEBUG=1 259*7323adacSDevin Teske fi ;; 260*7323adacSDevin Teske " $msg_dhcp") 261*7323adacSDevin Teske f_getvar $VAR_TRY_DHCP cp 262*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 263*7323adacSDevin Teske export $VAR_TRY_DHCP="NO" 264*7323adacSDevin Teske else 265*7323adacSDevin Teske export $VAR_TRY_DHCP="YES" 266*7323adacSDevin Teske fi ;; 267*7323adacSDevin Teske " $msg_ipv6") 268*7323adacSDevin Teske f_getvar $VAR_TRY_RTSOL cp 269*7323adacSDevin Teske if [ "$cp" = "YES" ]; then 270*7323adacSDevin Teske export $VAR_TRY_RTSOL="NO" 271*7323adacSDevin Teske else 272*7323adacSDevin Teske export $VAR_TRY_RTSOL="YES" 273*7323adacSDevin Teske fi ;; 274*7323adacSDevin Teske " $msg_ftp_username") 275*7323adacSDevin Teske f_media_set_ftp_userpass ;; 276*7323adacSDevin Teske " $msg_editor") 277*7323adacSDevin Teske f_variable_get_value $VAR_EDITOR \ 278*7323adacSDevin Teske "$msg_please_specify_the_name_of_the_text_editor" 279*7323adacSDevin Teske ;; 280*7323adacSDevin Teske " $msg_release_name") 281*7323adacSDevin Teske f_variable_get_value $VAR_RELNAME \ 282*7323adacSDevin Teske "$msg_please_specify_the_release_you_wish_to_load" 283*7323adacSDevin Teske ;; 284*7323adacSDevin Teske " $msg_media_type") 285*7323adacSDevin Teske f_media_get_type ;; 286*7323adacSDevin Teske " $msg_media_timeout") 287*7323adacSDevin Teske f_variable_get_value $VAR_MEDIA_TIMEOUT \ 288*7323adacSDevin Teske "$msg_please_specify_the_number_of_seconds_to_wait" 289*7323adacSDevin Teske ;; 290*7323adacSDevin Teske " $msg_rescan_devices") 291*7323adacSDevin Teske f_device_rescan ;; 292*7323adacSDevin Teske " $msg_use_defaults") 293*7323adacSDevin Teske f_variable_set_defaults ;; 294*7323adacSDevin Teske esac 295*7323adacSDevin Teske done 296*7323adacSDevin Teske 297*7323adacSDevin Teske # Restore old VAR_NONINTERACTIVE if needed. 298*7323adacSDevin Teske [ "$old_interactive" ] && 299*7323adacSDevin Teske setvar $VAR_NONINTERACTIVE "$old_interactive" 300*7323adacSDevin Teske 301*7323adacSDevin Teske return $SUCCESS 302*7323adacSDevin Teske} 303*7323adacSDevin Teske 304*7323adacSDevin Teske############################################################ MAIN 305*7323adacSDevin Teske 306*7323adacSDevin Teskef_dprintf "%s: Successfully loaded." media/options.subr 307*7323adacSDevin Teske 308*7323adacSDevin Teskefi # ! $_MEDIA_OPTIONS_SUBR 309