From 05b1c42540ae1b8fb5d940a87f8810e3fa746522 Mon Sep 17 00:00:00 2001 From: Devin Teske Date: Fri, 26 Oct 2018 00:08:27 +0000 Subject: [PATCH] Fix dialog autosizing in bsdinstall hostname Sponsored by: Smule, Inc. --- usr.sbin/bsdinstall/scripts/hostname | 96 +++++++++++++++++++++++----- 1 file changed, 81 insertions(+), 15 deletions(-) diff --git a/usr.sbin/bsdinstall/scripts/hostname b/usr.sbin/bsdinstall/scripts/hostname index 511db67a09c3..0ea5d5440db6 100755 --- a/usr.sbin/bsdinstall/scripts/hostname +++ b/usr.sbin/bsdinstall/scripts/hostname @@ -1,7 +1,7 @@ #!/bin/sh #- # Copyright (c) 2011 Nathan Whitehorn -# Copyright (c) 2015 Devin Teske +# Copyright (c) 2015-2018 Devin Teske # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -26,27 +26,93 @@ # SUCH DAMAGE. # # $FreeBSD$ +# +############################################################ INCLUDES + +BSDCFG_SHARE="/usr/share/bsdconfig" +. $BSDCFG_SHARE/common.subr || exit 1 +f_dprintf "%s: loading_includes..." "$0" +f_include $BSDCFG_SHARE/dialog.subr + +############################################################ CONFIGURATION + +# +# Default value +# +: ${HOSTNAME=$( hostname )} + +# +# Default file to store hostname entry in +# +: ${HOSTNAMEFILE:=$BSDINSTALL_TMPETC/rc.conf.hostname} + +############################################################ GLOBALS + +# +# Strings that should be moved to an i18n file and loaded with f_include_lang() +# +msg_set_hostname="Set Hostname" +msg_please_choose_a_hostname="Please choose a hostname for this machine.\n\nIf you are running on a managed network, please ask\nyour network administrator for an appropriate name." +msg_ok="OK" +msg_freebsd_installer="FreeBSD Installer" + +############################################################ FUNCTIONS + +# dialog_hostname +# +# Display input box (without cancel button) for user to enter desired hostname. +# +dialog_hostname() +{ + local prompt="$msg_please_choose_a_hostname" + local hline= + local value="$*" + + local height width + f_dialog_inputbox_size height width \ + "$DIALOG_TITLE" "$DIALOG_BACKTITLE" "$prompt" "$value" "$hline" + + $DIALOG \ + --title "$DIALOG_TITLE" \ + --backtitle "$DIALOG_BACKTITLE" \ + --hline "$hline" \ + --ok-label "$msg_ok" \ + --no-cancel \ + --inputbox "$prompt" \ + $height $width "$value" \ + 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD +} -: ${DIALOG_OK=0} -: ${DIALOG_CANCEL=1} -: ${DIALOG_HELP=2} -: ${DIALOG_EXTRA=3} -: ${DIALOG_ITEM_HELP=4} -: ${DIALOG_ESC=255} +############################################################ MAIN -exec 3>&1 -HOSTNAME=`dialog --backtitle 'FreeBSD Installer' --title 'Set Hostname' --nocancel --inputbox \ - 'Please choose a hostname for this machine. +# +# Initialize +# +f_dialog_title "$msg_set_hostname" +f_dialog_backtitle "$msg_freebsd_installer" -If you are running on a managed network, please ask your network administrator for an appropriate name.' \ - 0 0 $(hostname) 2>&1 1>&3` -if [ $? -eq $DIALOG_CANCEL ]; then exit 1; fi -exec 3>&- +# +# Get user input +# +HOSTNAME=$( dialog_hostname "$HOSTNAME" ) +[ $? -eq $DIALOG_CANCEL ] && exit 1 -echo "hostname=\"$HOSTNAME\"" > $BSDINSTALL_TMPETC/rc.conf.hostname +# +# Store the user's choice +# +echo "hostname=\"$HOSTNAME\"" > "$HOSTNAMEFILE" retval=$? + +# +# Activate entry if configured +# if [ "$BSDINSTALL_CONFIGCURRENT" ]; then hostname -s "$HOSTNAME" retval=$? fi + exit $retval + +################################################################################ +# END +################################################################################