diff --git a/usr.sbin/bsdinstall/scripts/time b/usr.sbin/bsdinstall/scripts/time --- a/usr.sbin/bsdinstall/scripts/time +++ b/usr.sbin/bsdinstall/scripts/time @@ -36,29 +36,59 @@ TZ="${BSDINSTALL_CHROOT}/etc/localtime" export TZ -# Set date -exec 5>&1 -DATE=$(bsddialog --backtitle "$OSNAME Installer" \ - --title 'Time & Date' \ - --ok-label 'Set Date' \ - --cancel-label 'Skip' \ - --default-no \ - --date-format '%Y%m%d%H%M.%S' \ - --calendar '' 0 40 \ -2>&1 1>&5) && date $DATE -exec 5>&- +set_datetime_auto() +{ + if ! host freebsd.pool.ntp.org >/dev/null 2>&1; then + return 1 + fi + if ! f_yesno "Attempt to set the date and time automatically?"; then + return 1 + fi + local ntperr + if ! ntperr=$(ntpdate freebsd.pool.ntp.org 2>&1 | sed 's/^.*\]: //'); then + f_show_info "Failed to set the date and time: -# Set time -exec 5>&1 -TIME=$(bsddialog --backtitle "$OSNAME Installer" \ - --title 'Time & Date' \ - --ok-label 'Set Time' \ - --cancel-label 'Skip' \ - --default-no \ - --time-format '%H%M.%S' \ - --timebox '' 0 40 \ -2>&1 1>&5) && date $TIME -exec 5>&- +${ntperr}" + return 1 + fi + f_show_info "The date and time were successfully set." + return 0 +} + +set_datetime_manual() +{ + # Set date + exec 5>&1 + local date + if date=$(bsddialog --backtitle "$OSNAME Installer" \ + --title 'Time & Date' \ + --ok-label 'Set Date' \ + --cancel-label 'Skip' \ + --default-no \ + --date-format '%Y%m%d%H%M.%S' \ + --calendar '' 0 40 \ + 2>&1 1>&5); then + date ${date} + fi + exec 5>&- + + # Set time + exec 5>&1 + local time + if time=$(bsddialog --backtitle "$OSNAME Installer" \ + --title 'Time & Date' \ + --ok-label 'Set Time' \ + --cancel-label 'Skip' \ + --default-no \ + --time-format '%H%M.%S' \ + --timebox '' 0 40 \ + 2>&1 1>&5); then + date ${time} + fi + exec 5>&- +} + +set_datetime_auto || set_datetime_manual # Switch back if [ -n "$saved_TZ" ]; then