Author: dteske
Date: Sat Jul 14 03:16:57 2012
New Revision: 238438
URL: http://svn.freebsd.org/changeset/base/238438

Log:
  Import bsdconfig(8) as a replacement for the post-install abilities of
  deprecated sysinstall(8). NOTE: WITH_BSDCONFIG is currently required.
  
  Submitted by: Devin Teske (dteske), Ron McDowell <r...@fuzzwad.org>
  Reviewed by:  Ron McDowell <r...@fuzzwad.org>
  Approved by:  Ed Maste (emaste)

Added:
  head/tools/build/options/WITH_BSDCONFIG   (contents, props changed)
  head/usr.sbin/bsdconfig/
  head/usr.sbin/bsdconfig/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/bsdconfig   (contents, props changed)
  head/usr.sbin/bsdconfig/bsdconfig.8   (contents, props changed)
  head/usr.sbin/bsdconfig/console/
  head/usr.sbin/bsdconfig/console/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/console/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/console/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/console/console   (contents, props changed)
  head/usr.sbin/bsdconfig/console/font   (contents, props changed)
  head/usr.sbin/bsdconfig/console/include/
  head/usr.sbin/bsdconfig/console/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/console/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/console/keymap   (contents, props changed)
  head/usr.sbin/bsdconfig/console/repeat   (contents, props changed)
  head/usr.sbin/bsdconfig/console/saver   (contents, props changed)
  head/usr.sbin/bsdconfig/console/screenmap   (contents, props changed)
  head/usr.sbin/bsdconfig/console/ttys   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/
  head/usr.sbin/bsdconfig/diskmgmt/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/diskmgmt   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/include/
  head/usr.sbin/bsdconfig/diskmgmt/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/diskmgmt/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/docsinstall/
  head/usr.sbin/bsdconfig/docsinstall/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/docsinstall/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/docsinstall/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/docsinstall/docsinstall   (contents, props changed)
  head/usr.sbin/bsdconfig/docsinstall/include/
  head/usr.sbin/bsdconfig/docsinstall/include/Makefile   (contents, props 
changed)
  head/usr.sbin/bsdconfig/docsinstall/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/dot/
  head/usr.sbin/bsdconfig/dot/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/dot/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/dot/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/dot/dot   (contents, props changed)
  head/usr.sbin/bsdconfig/dot/include/
  head/usr.sbin/bsdconfig/dot/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/dot/include/messages.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/examples/
  head/usr.sbin/bsdconfig/examples/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/examples/bsdconfigrc   (contents, props changed)
  head/usr.sbin/bsdconfig/fdisk/
  head/usr.sbin/bsdconfig/include/
  head/usr.sbin/bsdconfig/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/include/common.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/include/dialog.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/include/messages.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/include/mustberoot.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/include/strings.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/include/sysrc.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/
  head/usr.sbin/bsdconfig/mouse/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/disable   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/enable   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/flags   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/include/
  head/usr.sbin/bsdconfig/mouse/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/mouse/mouse   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/port   (contents, props changed)
  head/usr.sbin/bsdconfig/mouse/type   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/
  head/usr.sbin/bsdconfig/networking/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/defaultrouter   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/devices   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/hostname   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/include/
  head/usr.sbin/bsdconfig/networking/include/Makefile   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/common.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/device.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/hostname.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/ipaddr.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/media.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/netmask.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/resolv.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/include/routing.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/networking/nameservers   (contents, props changed)
  head/usr.sbin/bsdconfig/networking/networking   (contents, props changed)
  head/usr.sbin/bsdconfig/password/
  head/usr.sbin/bsdconfig/password/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/password/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/password/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/password/include/
  head/usr.sbin/bsdconfig/password/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/password/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/password/include/password.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/password/password   (contents, props changed)
  head/usr.sbin/bsdconfig/security/
  head/usr.sbin/bsdconfig/security/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/security/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/security/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/security/include/
  head/usr.sbin/bsdconfig/security/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/security/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/security/kern_securelevel   (contents, props changed)
  head/usr.sbin/bsdconfig/security/security   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/
  head/usr.sbin/bsdconfig/startup/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/include/
  head/usr.sbin/bsdconfig/startup/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/startup/include/rcconf.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/startup/include/rcedit.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/startup/include/rcvar.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/misc   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/rcadd   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/rcconf   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/rcdelete   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/rcedit   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/rcvar   (contents, props changed)
  head/usr.sbin/bsdconfig/startup/startup   (contents, props changed)
  head/usr.sbin/bsdconfig/timezone/
  head/usr.sbin/bsdconfig/timezone/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/timezone/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/timezone/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/timezone/include/
  head/usr.sbin/bsdconfig/timezone/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/timezone/include/continents.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/include/countries.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/include/iso3166.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/include/menus.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/include/zones.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/timezone/timezone   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/
  head/usr.sbin/bsdconfig/ttys/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/include/
  head/usr.sbin/bsdconfig/ttys/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/include/messages.subr   (contents, props changed)
  head/usr.sbin/bsdconfig/ttys/ttys   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/
  head/usr.sbin/bsdconfig/usermgmt/INDEX   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/USAGE   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/groupadd   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/groupdel   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/groupedit   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/groupinput   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/include/
  head/usr.sbin/bsdconfig/usermgmt/include/Makefile   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/include/group_input.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/usermgmt/include/messages.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/usermgmt/include/user_input.subr   (contents, props 
changed)
  head/usr.sbin/bsdconfig/usermgmt/useradd   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/userdel   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/useredit   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/userinput   (contents, props changed)
  head/usr.sbin/bsdconfig/usermgmt/usermgmt   (contents, props changed)
Modified:
  head/share/mk/bsd.own.mk
  head/usr.sbin/Makefile

Modified: head/share/mk/bsd.own.mk
==============================================================================
--- head/share/mk/bsd.own.mk    Sat Jul 14 02:59:11 2012        (r238437)
+++ head/share/mk/bsd.own.mk    Sat Jul 14 03:16:57 2012        (r238438)
@@ -421,6 +421,7 @@ __DEFAULT_NO_OPTIONS = \
     BIND_LIBS \
     BIND_SIGCHASE \
     BIND_XML \
+    BSDCONFIG \
     CLANG_EXTRAS \
     CLANG_IS_CC \
     CTF \

Added: head/tools/build/options/WITH_BSDCONFIG
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/build/options/WITH_BSDCONFIG     Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Install bsdconfig(8), a BSD-licensed configuration/management utility.

Modified: head/usr.sbin/Makefile
==============================================================================
--- head/usr.sbin/Makefile      Sat Jul 14 02:59:11 2012        (r238437)
+++ head/usr.sbin/Makefile      Sat Jul 14 03:16:57 2012        (r238438)
@@ -144,6 +144,10 @@ SUBDIR+=   rndc-confgen
 SUBDIR+=       bluetooth
 .endif
 
+.if ${MK_BSDCONFIG} != "no"
+SUBDIR+=       bsdconfig
+.endif
+
 .if ${MK_BSNMP} != "no"
 SUBDIR+=       bsnmpd
 .endif

Added: head/usr.sbin/bsdconfig/Makefile
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/Makefile    Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,32 @@
+# $FreeBSD$
+
+NO_OBJ=
+
+SUBDIR=        console \
+       diskmgmt \
+       docsinstall \
+       dot \
+       examples \
+       include \
+       mouse \
+       networking \
+       password \
+       security \
+       startup \
+       timezone \
+       ttys \
+       usermgmt
+
+FILESDIR=      ${LIBEXECDIR}/bsdconfig
+FILES=         USAGE
+
+SCRIPTS= bsdconfig
+
+MAN= bsdconfig.8
+
+beforeinstall:
+       mkdir -p ${DESTDIR}${FILESDIR}
+       mkdir -p ${DESTDIR}${SCRIPTSDIR}
+       mkdir -p ${DESTDIR}${MANDIR}8
+
+.include <bsd.prog.mk>

Added: head/usr.sbin/bsdconfig/USAGE
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/USAGE       Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,40 @@
+# Copyright (c) 2012 Ron McDowell
+# Copyright (c) 2012 Devin Teske
+# All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+Usage:
+       @PROGRAM_NAME@ [-h]
+       @PROGRAM_NAME@ command [-h]
+       @PROGRAM_NAME@ [OPTIONS] [command [OPTIONS]]
+
+OPTIONS:
+       -h         Print usage statement and exit.
+       -S         Secure X11 mode (implies `-X'). As root, always prompt-for
+                  and validate sudo(8) username/password before starting.
+       -X         Use Xdialog(1) in place of dialog(1).
+
+COMMANDS:
+@COMMAND_LIST@

Added: head/usr.sbin/bsdconfig/bsdconfig
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/bsdconfig   Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,313 @@
+#!/bin/sh
+#-
+# Copyright (c) 2012 Ron McDowell
+# Copyright (c) 2012 Devin Teske
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+############################################################ INCLUDES
+
+BSDCFG_LIBE="/usr/libexec/bsdconfig"
+. $BSDCFG_LIBE/include/common.subr || exit 1
+f_include $BSDCFG_LIBE/include/dialog.subr
+f_include $BSDCFG_LIBE/include/mustberoot.subr
+f_include $BSDCFG_LIBE/include/strings.subr
+f_include_lang $BSDCFG_LIBE/include/messages.subr
+
+############################################################ FUNCTIONS
+
+# usage
+#
+# display usage and exit
+#
+usage()
+{
+       local index="INDEX" cmd_list=""
+
+       cd $BSDCFG_LIBE
+
+       # Test for language-specific indices
+       f_quietly ls */"$index.${LANG:-$LC_ALL}" &&
+               index="$index.${LANG:-$LC_ALL}"
+
+       cmd_list=$(
+               awk '/^menu_selection="/ {
+                       sub(/\|.*/, "")
+                       sub(/^menu_selection="/, "")
+                       print
+               }' */$index | sort
+       )
+
+       #
+       # Determine the longest command-length (in characters)
+       #
+       local longest_cmd
+       longest_cmd=$( echo "$cmd_list" | f_longest_line_length )
+       f_dprintf "longest_cmd=[$longest_cmd]"
+
+       #
+       # Determine the maximum width of terminal/console
+       #
+       local max_size max_width
+       max_size=$( stty size 2> /dev/null )
+       : ${max_size:="24 80"}
+       max_width="${max_size#*[$IFS]}"
+       f_dprintf "max_width=[$max_width]"
+
+       #
+       # Using the longest command-length as the width of a single column,
+       # determine if we can use more than one column to display commands.
+       #
+       local x=$longest_cmd ncols=1
+       x=$(( $x + 8 )) # Accomodate leading tab character
+       x=$(( $x + 3 + $longest_cmd )) # Preload end of next column
+       while [ $x -lt $max_width ]; do
+               ncols=$(( $ncols + 1 ))
+               x=$(( $x + 3 + $longest_cmd ))
+       done
+       f_dprintf "ncols=[$ncols] x=[$x]"
+
+       #
+       # Re-format the command-list into multiple columns
+       #
+       cmd_list=$( eval "$( echo "$cmd_list" |
+               awk -v ncols=$ncols -v size=$longest_cmd '
+               BEGIN {
+                       n = 0
+                       row_item[1] = ""
+               }
+               function print_row()
+               {
+                       fmt = "printf \"\\t%-" size "s"
+                       for (i = 1; i < cur_col; i++)
+                               fmt = fmt "   %-" size "s"
+                       fmt = fmt "\\n\""
+                       printf "%s", fmt
+                       for (i = 1; i <= cur_col; i++)
+                               printf " \"%s\"", row_item[i]
+                       print ""
+               }
+               {
+                       n++
+                       cur_col = (( n - 1 ) % ncols ) + 1
+                       printf "f_dprintf \"row_item[%u]=[%s]\"\n", cur_col, $0
+                       row_item[cur_col] = $0
+                       if ( cur_col == ncols ) print_row()
+               }
+               END {
+                       if ( cur_col < ncols ) print_row()
+               }' )"
+       )
+
+       f_usage $BSDCFG_LIBE/USAGE \
+               "PROGRAM_NAME" "$pgm" \
+               "COMMAND_LIST" "$cmd_list"
+}
+
+# dialog_menu_main
+#
+# Display the dialog(1)-based application main menu.
+#
+dialog_menu_main()
+{
+       local title="$DIALOG_TITLE"
+       local btitle="$DIALOG_BACKTITLE"
+       local prompt="$msg_menu_text"
+       local menu_list size
+
+       menu_list="
+               'X' '$msg_exit' '$msg_exit_bsdconfig'
+       " # END-QUOTE
+
+       local sanitize_awk="{ gsub(/'/, \"'\\\\''\"); print }"
+
+       local menuitem menu_title menu_help menu_selection index=1
+       for menuitem in $( ls -d [0-9][0-9][0-9].* ); do
+               [ $index -lt ${#DIALOG_MENU_TAGS} ] || break
+               tag=$( f_substr "$DIALOG_MENU_TAGS" $index 1 )
+
+               menu_program=
+               menu_title=
+               menu_help=
+               f_include_lang $menuitem/INDEX
+               [ "$menu_program" ] || continue
+
+               case "$menu_program" in
+               /*) : already fully qualified ;;
+               *)
+                       menu_program="$menuitem/$menu_program"
+               esac
+
+               menu_title=$( echo "$menu_title" | awk "$sanitize_awk" )
+               menu_help=$( echo "$menu_help" | awk "$sanitize_awk" )
+               setvar "menu_program$tag" "$menu_program"
+               menu_list="$menu_list '$tag' '$menu_title' '$menu_help'"
+
+               index=$(( $index + 1 ))
+       done
+
+       size=$( eval f_dialog_menu_with_help_size \
+                       \"\$title\"  \
+                       \"\$btitle\" \
+                       \"\$prompt\" \
+                       \"\"         \
+                       $menu_list   )
+
+       eval $DIALOG \
+               --clear                                 \
+               --title \"\$title\"                     \
+               --backtitle \"\$btitle\"                \
+               --item-help                             \
+               --ok-label \"\$msg_ok\"                 \
+               --cancel-label \"\$msg_exit_bsdconfig\" \
+               --menu \"\$prompt\" $size $menu_list    \
+               2> "$DIALOG_TMPDIR/dialog.menu.$$"
+}
+
+############################################################ MAIN
+
+#
+# Process command-line arguments
+#
+while getopts hSX flag; do
+       case "$flag" in
+       h|\?) usage;;
+       esac
+done
+shift $(( $OPTIND -1 ))
+
+#
+# Initialize
+#
+f_dialog_init
+f_dialog_title "$msg_main_menu"
+
+[ "$SECURE" ] && f_mustberoot_init
+
+# Incorporate rc-file if it exists
+[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
+
+#
+# Log our operating environment for debugging purposes
+#
+export UNAME_S="$(uname -s)" # Operating System (i.e. FreeBSD)
+export UNAME_P="$(uname -p)" # Processor Architecture (i.e. i386)
+export UNAME_R="$(uname -r)" # Release Level (i.e. X.Y-RELEASE)
+f_dprintf "UNAME_S=[$UNAME_S] UNAME_P=[$UNAME_P] UNAME_R=[$UNAME_R]"
+
+cd $BSDCFG_LIBE || f_die 1 "$msg_directory_not_found" "$BSDCFG_LIBE"
+
+#
+# If a non-option argument was passed, process it as a menuitem selection...
+#
+if [ "$1" ]; then
+       #
+       # ...unless it's a long-option for usage.
+       #
+       case "$1" in
+       -help|--help|-\?) usage;;
+       esac
+
+       #
+       # Find the INDEX (possibly i18n) claiming this keyword
+       #
+       lang="${LANG:-$LC_ALL}"
+       if [ "$lang" ]; then
+               sel=$( grep "^menu_selection=\"$1|" */INDEX.$lang \
+                               2> /dev/null | tail -1 )
+
+               # Fall-back to non-i18n sources if nothing was found
+               [ "$sel" ] ||
+                       sel=$( grep "^menu_selection=\"$1|" */INDEX | tail -1 )
+       else
+               sel=$( grep "^menu_selection=\"$1|" */INDEX | tail -1 )
+       fi
+
+       #
+       # If no matches, display usage (which shows valid keywords)
+       #
+       if [ ! "$sel" ]; then
+               f_err "%s: %s: $msg_not_found\n" "$pgm" "$1"
+               usage
+       fi
+
+       #
+       # The command to execute is after the pipe-character (|) in the
+       # menu_selection property of the INDEX file for the menuitem.
+       #
+       cmd="${sel#*|}"
+       cmd="${cmd%\"}"
+       if [ ! "$cmd" ]; then
+               echo "$pgm: $1: $msg_not_found"
+               usage
+       fi
+       shift
+
+       #
+       # If the command pathname is not fully qualified fix-up/force to be
+       # relative to the menuitem directory.
+       #
+       case "$cmd" in
+       /*) : already fully qualified ;;
+       *)
+               dir="${sel%%/*}"
+               cmd="$dir/$cmd"
+       esac
+
+       exec $cmd ${USE_XDIALOG:+-X} "$@" || exit 1
+fi
+
+[ -f "$HOME/.bsdconfigrc" ] || f_dialog_msgbox "$msg_help_text"
+
+#
+# Launch application main menu
+#
+while :; do
+       dialog_menu_main
+       retval=$?
+       mtag=$( f_dialog_menutag )
+       f_dprintf "retval=$retval mtag=[$mtag]"
+
+       [ $retval -eq 0 ] || f_die
+
+       case "$mtag" in
+       X) # Exit
+          break
+          ;;
+
+       *) # Dynamically loaded menuitem
+          cmd=$( eval echo \"\$menu_program$mtag\" )
+          f_dprintf "cmd=[$cmd]"
+          $cmd ${USE_XDIALOG:+-X}
+          ;;
+
+       esac
+done
+
+exit $SUCCESS
+
+################################################################################
+# END
+################################################################################

Added: head/usr.sbin/bsdconfig/bsdconfig.8
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/bsdconfig.8 Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,240 @@
+.\" Copyright (c) 2012 Ron McDowell
+.\" Copyright (c) 2012 Devin Teske
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+.\" DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\"            docsinstall
+.\"            password
+.\"            diskmgmt
+.\"            usermgmt
+.\"              useradd
+.\"              useredit
+.\"              userdel
+.\"            groupmgmt
+.\"              groupadd
+.\"              groupedit
+.\"              groupdel
+.\"            console
+.\"              syscons_font
+.\"              syscons_keymap
+.\"              syscons_repeat
+.\"              syscons_saver
+.\"              syscons_screenmap
+.\"              syscons_ttys
+.\"            timezone
+.\"            mouse
+.\"              mouse_enable
+.\"              mouse_type
+.\"              mouse_port
+.\"              mouse_flags
+.\"              mouse_disable
+.\"            networking
+.\"              defaultrouter
+.\"              hostname
+.\"              nameservers
+.\"              netdev
+.\"            security
+.\"            ttys
+.\"            [dot]
+.\" 
+.\" $FreeBSD$
+.\"
+.Dd Mar 20, 2012
+.Dt BSDCONFIG 8
+.Os
+.Sh NAME
+.Nm bsdconfig
+.Nd system configuration utility
+.Sh SYNOPSIS
+.Nm
+.Op Fl h
+.Nm
+.Ar command
+.Op Fl h
+.Nm
+.Op OPTIONS
+.Op command Op OPTIONS
+.Sh DESCRIPTION
+.Nm
+is used to set up many system configuration settings, both for new systems, as
+well as changing configuration settings of existing systems.
+.Pp
+.Nm
+takes a command as an argument. If invoked with no arguments, it will bring up
+a master menu listing the available commands.
+.Pp
+The following options are available:
+.Bl -tag -width indent+
+.It Fl h
+Print usage statement and exit.
+.It Fl S
+Secure X11 mode
+.Pq implies Fl X .
+As root, always prompt-for and validate
+.Xr sudo 8
+username/password before starting.
+.It Fl X
+Use
+.Xr Xdialog 1
+in place of
+.Xr dialog 1 .
+
+.Sh COMMANDS
+The following commands
+.Pq sorted alphabetically
+are currently included in the base
+.Nm
+program, with more to be added soon.  Other commands can be added, as detailed
+below in the 
+.Cm ADDING COMMANDS
+section, and once added, will appear in the master menu as well as in the 
+.Cm -h
+listing.
+.Bl -tag -width ".Cm syscons_screenmap"
+.It Cm console
+Utilities to customize the behavior of the system console.
+.It Cm defaultrouter
+Shortcut to the Default Router/Gateway menu under networking.
+.It Cm diskmgmt
+Manage disk partitions and/or labels. Executes
+.Xr sade 8 .
+.It Cm docsinstall
+Executes the 
+.Cm bsdinstall docsinstall
+sub-utility to allow installation/re-installation of the FreeBSD Documentation
+set(s).
+.It Cm dot
+Generate a graphviz
+.Xr dot 1
+language file
+.Pq printed on stdout
+visualizing the
+.Xr bsdconfig 8
+menu, include, and shortcut structure and relationships.  See
+.Dq bsdconfig dot -h
+for more details.
+.It Cm groupadd
+Shortcut to the Add Groups menu under groupmgmt.
+.It Cm groupdel
+Shortcut to the Delete Groups menu under groupmgmt.
+.It Cm groupedit
+Shortcut to the Edit/View Groups menu under groupmgmt.
+.It Cm groupmgmt
+Utilities to Add/Change/View/Delete Group Accounts.
+.It Cm hostname
+Shortcut to the Hostname/Domain menu under networking.
+.It Cm mouse
+Utilities for configuring, exploring, and enabling console mouse support.
+.It Cm mouse_disable
+Shortcut to the Disable menu under mouse.
+.It Cm mouse_enable
+Shortcut to the Enable menu under mouse.
+.It Cm mouse_flags
+Shortcut to the Flags menu under mouse.
+.It Cm mouse_port
+Shortcut to the Port menu under mouse.
+.It Cm mouse_type
+Shortcut to the Type menu under mouse.
+.It Cm nameservers
+Shortcut to the DNS Nameservers menu under networking.
+.It Cm netdev
+Shortcut to the Network Interfaces menu under networking.
+.It Cm networking
+Utilities to set/change Hostname/Domain, Network Interfaces, Default
+Router/Gateway, and DNS Nameservers.
+.It Cm password
+Set the system administrator
+.Pq root
+password.
+.It Cm security
+Configure various system security settings.
+.It Cm syscons_font
+Shortcut to the Font menu under console.
+.It Cm syscons_keymap
+Shortcut to the Keymap menu under console.
+.It Cm syscons_repeat
+Shortcut to the Repeat menu under console.
+.It Cm syscons_saver
+Shortcut to the Saver menu under console.
+.It Cm syscons_screenmap
+Shortcut to the Screenmap menu under console.
+.It Cm syscons_ttys
+Shortcut to the Ttys menu under console.
+.It Cm timezone
+Set the regional timezone of the local machine.
+.It Cm useradd
+Shortcut to the Add Users menu under usermgmt.
+.It Cm userdel
+Shortcut to the Delete Users menu under usermgmt.
+.It Cm useredit
+Shortcut to the Edit/View Users menu under usermgmt.
+.It Cm usermgmt
+Utilities to Add/Edit/View/Delete User Accounts.
+
+.Sh INTERNATIONALIZATION
+i18n features are built into 
+.Nm
+and language-specific translation files will be added as they become available.
+In the absence of language-specific translation files, the default
+.Pq en_US.ISO8859-1
+files will be used.
+
+.Sh ADDING COMMANDS
+To be documented later. Document menu_selection="command|*" syntax of INDEX
+files.
+
+.Sh ENVIRONMENT VARIABLES
+The following environment variables affect the execution of
+.Nm :
+.Bl -tag -width ".Ev LC_ALL"
+.It Ev LANG
+If LANG is set, messages and index information will be read from files named
+messages.$LANG and INDEX.$LANG and fall back to files named messages and INDEX 
if
+messages.$LANG and INDEX.$LANG do not exist.  LANG takes precedence over 
LC_ALL.
+.It Ev LC_ALL
+If LC_ALL is set, messages and index information will be read from files named
+messages.$LC_ALL and INDEX.$LC_ALL and fall back to files named messages and 
INDEX if
+messages.$LC_ALL and INDEX.$LC_ALL do not exist.
+
+.Sh FILES
+/usr/share/examples/bsdconfig/bsdconfigrc can be copied to $HOME/.bsdconfigrc 
and
+customized as needed.
+
+.Sh EXIT STATUS
+.Ex -std
+
+.Sh SEE ALSO
+.Xr host-setup 8 
+
+.Sh HISTORY
+.Nm
+first appeared in
+.Fx 10.0 .
+
+.Sh AUTHORS
+.\" An -nosplit
+.An Ron McDowell Aq r...@fuzzwad.org
+.An Devin Teske Aq devinte...@hotmail.com
+
+.Sh BUGS
+Undoubtedly.

Added: head/usr.sbin/bsdconfig/console/INDEX
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/console/INDEX       Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,59 @@
+# Copyright (c) 2012 Ron McDowell
+# Copyright (c) 2012 Devin Teske
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+#
+# Title that will be shown on the bsdconfig menu
+menu_title="Console"
+#
+# a short descriptive line shown at the bottom of the bsdconfig menu.
+# keep it short because any line longer than the terminal width will
+#   be truncated.
+menu_help="Customize system console behavior"
+#
+# two-part variable that defines an action to take when 'keyword'
+#   is passed on a bsdconfig command line. variable takes the form
+#   "keyword|command" and multiple occurrences of the variable
+#   (with different 'keyword's, or different 'keyword's AND 'command's)
+#   are allowed.  If 'command' begins with a '/' then the full
+#   path to the program is needed. If 'command' begins with anything
+#   else it is a path relative to the directory this INDEX file is in.
+#   'keyword' can be i18n'ed but 'command' is the name of a script.
+menu_selection="console|console"
+menu_selection="syscons_font|font"
+menu_selection="syscons_keymap|keymap"
+menu_selection="syscons_repeat|repeat"
+menu_selection="syscons_saver|saver"
+menu_selection="syscons_screenmap|screenmap"
+menu_selection="syscons_ttys|ttys"
+#
+# Items below this line do NOT need i18n translation----------------------
+#
+# Name of the program to be run when this menu choice is selected.
+#   if it begins with a '/' then the full path to the program is needed.
+#   if it begins with anything else it is a path relative to the directory
+#     this INDEX file is in.
+menu_program="console"

Added: head/usr.sbin/bsdconfig/console/Makefile
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/console/Makefile    Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+NO_OBJ=
+
+SUBDIR= include
+
+FILESDIR=      ${LIBEXECDIR}/bsdconfig/080.console
+FILES=         INDEX USAGE
+
+SCRIPTSDIR=    ${FILESDIR}
+SCRIPTS=       console font keymap repeat saver screenmap ttys
+
+beforeinstall:
+       mkdir -p ${DESTDIR}${FILESDIR}
+
+.include <bsd.prog.mk>

Added: head/usr.sbin/bsdconfig/console/USAGE
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/console/USAGE       Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,33 @@
+# Copyright (c) 2012 Devin Teske
+# All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+Usage: bsdconfig @PROGRAM_NAME@ [OPTIONS]
+
+OPTIONS:
+       -h         Print usage statement and exit.
+       -S         Secure X11 mode (implies `-X'). As root, always prompt-for
+                  and validate sudo(8) username/password before starting.
+       -X         Use Xdialog(1) in place of dialog(1).

Added: head/usr.sbin/bsdconfig/console/console
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/console/console     Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,137 @@
+#!/bin/sh
+#-
+# Copyright (c) 2012 Devin Teske
+# All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+############################################################ INCLUDES
+
+BSDCFG_LIBE="/usr/libexec/bsdconfig"
+. $BSDCFG_LIBE/include/common.subr || exit 1
+f_include $BSDCFG_LIBE/include/dialog.subr
+f_include $BSDCFG_LIBE/include/mustberoot.subr
+
+APP_DIR="080.console"
+f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
+
+ipgm=$( f_index_menu_selection $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
+[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+
+############################################################ FUNCTIONS
+
+# dialog_menu_main
+#
+# Display the dialog(1)-based application main menu.
+#
+dialog_menu_main()
+{
+       local menu_list size
+       local hline="$hline_configure_system_console_settings"
+       local prompt="$msg_console_menu_text"
+
+       menu_list="
+               'X $msg_exit'      '$msg_exit_this_menu'
+               '2 $msg_font'      '$msg_choose_alternate_screen_font'
+               '3 $msg_keymap'    '$msg_choose_alternate_keyboard_map'
+               '4 $msg_repeat'    '$msg_set_repeat_rate'
+               '5 $msg_saver'     '$msg_configure_screen_saver'
+               '6 $msg_screenmap' '$msg_choose_alternate_screenmap'
+               '7 $msg_ttys'      '$msg_choose_console_terminal_type'
+       " # END-QUOTE
+
+       size=$( eval f_dialog_menu_size \
+                       \"\$DIALOG_TITLE\"     \
+                       \"\$DIALOG_BACKTITLE\" \
+                       \"\$prompt\"           \
+                       \"\$hline\"            \
+                       $menu_list             )
+
+       eval $DIALOG \
+               --clear --title \"\$DIALOG_TITLE\" \
+               --backtitle \"\$DIALOG_BACKTITLE\" \
+               --hline \"\$hline\"                \
+               --ok-label \"\$msg_ok\"            \
+               --cancel-label \"\$msg_cancel\"    \
+               --menu \"\$prompt\" $size          \
+               $menu_list                         \
+               2> "$DIALOG_TMPDIR/dialog.menu.$$"
+}
+
+############################################################ MAIN
+
+# Incorporate rc-file if it exists
+[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
+
+#
+# Process command-line arguments
+#
+while getopts hSX flag; do
+       case "$flag" in
+       h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
+       esac
+done
+shift $(( $OPTIND - 1 ))
+
+#
+# Initialize
+#
+f_dialog_init
+f_dialog_title "$msg_system_console_configuration"
+f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
+f_mustberoot_init
+
+#
+# Launch application main menu
+#
+while :; do
+       dialog_menu_main
+       retval=$?
+       mtag=$( f_dialog_menutag )
+
+       [ $retval -eq 0 ] || f_die
+
+       case "$mtag" in
+       "X $msg_exit") break ;;
+       "2 $msg_font") # Choose an alternate screen font
+               $BSDCFG_LIBE/$APP_DIR/font ${USE_XDIALOG:+-X} ;;
+       "3 $msg_keymap") # Choose an alternate keyboard map
+               $BSDCFG_LIBE/$APP_DIR/keymap ${USE_XDIALOG:+-X} ;;
+       "4 $msg_repeat") # Set the rate at which keys repeat
+               $BSDCFG_LIBE/$APP_DIR/repeat ${USE_XDIALOG:+-X} ;;
+       "5 $msg_saver") # Configure the screen saver
+               $BSDCFG_LIBE/$APP_DIR/saver ${USE_XDIALOG:+-X} ;;
+       "6 $msg_screenmap") # Choose an alternate screenmap
+               $BSDCFG_LIBE/$APP_DIR/screenmap ${USE_XDIALOG:+-X} ;;
+       "7 $msg_ttys") # Choose console terminal type
+               $BSDCFG_LIBE/$APP_DIR/ttys ${USE_XDIALOG:+-X} ;;
+       esac
+
+done
+
+exit $SUCCESS
+
+################################################################################
+# END
+################################################################################

Added: head/usr.sbin/bsdconfig/console/font
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/console/font        Sat Jul 14 03:16:57 2012        
(r238438)
@@ -0,0 +1,205 @@
+#!/bin/sh
+#-
+# Copyright (c) 2012 Devin Teske
+# All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+############################################################ INCLUDES
+
+BSDCFG_LIBE="/usr/libexec/bsdconfig"
+. $BSDCFG_LIBE/include/common.subr || exit 1
+f_include $BSDCFG_LIBE/include/dialog.subr
+f_include $BSDCFG_LIBE/include/mustberoot.subr
+f_include $BSDCFG_LIBE/include/sysrc.subr
+
+APP_DIR="080.console"
+f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
+
+ipgm=$( f_index_menu_selection $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
+[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+
+############################################################ FUNCTIONS
+
+# dialog_menu_main
+#
+# Display the dialog(1)-based application main menu.
+#
+dialog_menu_main()
+{
+       local menu_list size
+       local hline="$hline_choose_a_font"
+       local prompt="$msg_font_menu_text"
+
+       menu_list="
+               '1 $msg_none'        '$msg_use_hardware_default_font'
+               '2 $msg_ibm_437'     '$msg_ibm_437_desc'
+               '3 $msg_ibm_850'     '$msg_ibm_850_desc'
+               '4 $msg_ibm_865'     '$msg_ibm_865_desc'
+               '5 $msg_ibm_866'     '$msg_ibm_866_desc'
+               '6 $msg_ibm_866u'    '$msg_ibm_866u_desc'
+               '7 $msg_ibm_1251'    '$msg_ibm_1251_desc'
+               '8 $msg_iso_8859_1'  '$msg_iso_8859_1_desc'
+               '9 $msg_iso_8859_2'  '$msg_iso_8859_2_desc'
+               'a $msg_iso_8859_4'  '$msg_iso_8859_4_desc'
+               'b $msg_iso_8859_7'  '$msg_iso_8859_7_desc'
+               'c $msg_iso_8859_8'  '$msg_iso_8859_8_desc'
+               'd $msg_iso_8859_15' '$msg_iso_8859_15_desc'
+               'e $msg_swiss'       '$msg_swiss_desc'
+       " # END-QUOTE
+
+       size=$( eval f_dialog_menu_size \
+                       \"\$DIALOG_TITLE\"     \
+                       \"\$DIALOG_BACKTITLE\" \
+                       \"\$prompt\"           \

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to