]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20120713 snapshot
authorChet Ramey <chet@caleb.ins.cwru.edu>
Mon, 13 Aug 2012 15:55:46 +0000 (11:55 -0400)
committerChet Ramey <chet@caleb.ins.cwru.edu>
Mon, 13 Aug 2012 15:55:46 +0000 (11:55 -0400)
34 files changed:
CWRU/CWRU.chlog
CWRU/CWRU.chlog~
autom4te.cache/output.1
autom4te.cache/output.2
autom4te.cache/requests
autom4te.cache/traces.1
autom4te.cache/traces.2
bashline.c
bashline.c~ [new file with mode: 0644]
configure
configure.in
doc/bash.1
doc/bash.1~ [new file with mode: 0644]
doc/bashref.texi
doc/bashref.texi~ [new file with mode: 0644]
doc/version.texi
doc/version.texi~ [new file with mode: 0644]
eval.c
eval.c~ [new file with mode: 0644]
lib/readline/callback.c
lib/readline/callback.c~ [new file with mode: 0644]
lib/readline/readline.c
lib/readline/readline.c~ [new file with mode: 0644]
lib/readline/rltty.c
lib/readline/rltty.c.save1 [new file with mode: 0644]
lib/readline/rltty.c~ [new file with mode: 0644]
lib/readline/signals.c
lib/readline/signals.c~ [new file with mode: 0644]
lib/readline/util.c
lib/readline/util.c~ [new file with mode: 0644]
lib/sh/casemod.c
nojobs.c
patchlevel.h
support/shobj-conf

index a591e278337f666295f9b392ba30789ada86c6a8..c71775b31460ac5caf58d1979d7dfa8521b10483 100644 (file)
@@ -14189,3 +14189,41 @@ builtins/set.def
 
 doc/{bash.1,bashref.texi}
        - document namerefs and typeset/declare/local/unset -n
+
+                                  7/13
+                                  ----
+lib/sh/casemod.c
+       - include shmbchar.h for is_basic and supporting pieces
+       - sh_casemod: use _to_wupper and _to_wlower to convert wide character
+         case instead of TOUPPER and TOLOWER.  Fixes bug reported by
+         Dennis Williamson <dennistwilliamson@gmail.com>, fix from
+         Andreas Schwab <schwab@linux-m68k.org>
+       - cval: short-circuit and return ascii value if is_basic tests true
+       - sh_casemod: short-circuit and use non-multibyte case modification
+         and toggling code if is_basic tests true
+
+lib/readline/signals.c
+       - _rl_{block,release}_sigint: remove the code that actually blocks and
+         releases the signals, since we defer signal handling until calls to
+         RL_CHECK_SIGNALS()
+
+lib/readline/{callback,readline,util}.c
+       - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
+         saving and restoring the signal mask instead of setjmp/longjmp
+
+lib/readline/rltty.c
+       - prepare_terminal_settings: don't mess with IXOFF setting if
+         USE_XON_XOFF defined
+
+doc/{bash.1,bashref.texi}
+       - add some text to the description of set -e clarifying its effect
+         on shell functions and shell function execution.  Suggested by
+         Rainer Blome <rainer.blome@gmx.de>
+
+bashline.c
+       - edit_and_execute_command: increment current_command_line_count before
+         adding partial line to command history (for command-oriented-history
+         because of rl_newline at beginning of function), then reset it to 0
+         before adding the dummy history entry to make sure the dummy entry
+         doesn't get added to previous incomplete command.  Partial fix for
+         problem reported by Peng Yu <pengyu.ut@gmail.com>
index c6163a8527a19a1b93d8fbe469c578b63a66e67d..db85aaa4716f7dc8e9a7b4a19288e1845b2c3cbb 100644 (file)
@@ -13956,6 +13956,14 @@ braces.c
        - mkseq: try and be smarter about not overallocating elements in
          the return array if the increment is not 1 or -1
 
+                                   6/7
+                                   ---
+parse.y
+       - history_delimiting_chars: if the parser says we're in the middle of
+         a compound assignment (PST_COMPASSIGN), just return a space to avoid
+         adding a stray semicolon to the history entry.  Fixes bug reported
+         by "Davide Brini" <dave_br@gmx.com>
+
                                    6/8
                                    ---
 bashline.c
@@ -14181,3 +14189,33 @@ builtins/set.def
 
 doc/{bash.1,bashref.texi}
        - document namerefs and typeset/declare/local/unset -n
+
+                                  7/13
+                                  ----
+lib/sh/casemod.c
+       - include shmbchar.h for is_basic and supporting pieces
+       - sh_casemod: use _to_wupper and _to_wlower to convert wide character
+         case instead of TOUPPER and TOLOWER.  Fixes bug reported by
+         Dennis Williamson <dennistwilliamson@gmail.com>, fix from
+         Andreas Schwab <schwab@linux-m68k.org>
+       - cval: short-circuit and return ascii value if is_basic tests true
+       - sh_casemod: short-circuit and use non-multibyte case modification
+         and toggling code if is_basic tests true
+
+lib/readline/signals.c
+       - _rl_{block,release}_sigint: remove the code that actually blocks and
+         releases the signals, since we defer signal handling until calls to
+         RL_CHECK_SIGNALS()
+
+lib/readline/{callback,readline,util}.c
+       - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
+         saving and restoring the signal mask instead of setjmp/longjmp
+
+lib/readline/rltty.c
+       - prepare_terminal_settings: don't mess with IXOFF setting if
+         USE_XON_XOFF defined
+
+doc/{bash.1,bashref.texi}
+       - add some text to the description of set -e clarifying its effect
+         on shell functions and shell function execution.  Suggested by
+         Rainer Blome <rainer.blome@gmx.de>
index 057f6a47e458f7ad1ce2315378a5cda887631482..358809b32a203eb9a445da46e823516d2c64f077 100644 (file)
@@ -2823,6 +2823,7 @@ sparc-linux*)     opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 #*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
 #*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
 *-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
index bc9d81441ef80226add4b42b8ddbd7c8649df533..5a2d6476b0004ee4bb8d4d7527633fd89c118e7a 100644 (file)
@@ -1,7 +1,7 @@
 @%:@! /bin/sh
-@%:@ From configure.in for Bash 3.2, version 3.195.
+@%:@ From configure.in for Bash 4.2, version 4.048.
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.59 for bash 3.2-maint.
+@%:@ Generated by GNU Autoconf 2.59 for bash 4.2-maint.
 @%:@
 @%:@ Report bugs to <bug-bash@gnu.org>.
 @%:@ 
@@ -270,8 +270,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='bash'
 PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='3.2-maint'
-PACKAGE_STRING='bash 3.2-maint'
+PACKAGE_VERSION='4.2-maint'
+PACKAGE_STRING='bash 4.2-maint'
 PACKAGE_BUGREPORT='bug-bash@gnu.org'
 
 ac_unique_file="shell.h"
@@ -312,7 +312,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIB@&t@OBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR datarootdir localedir ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os DEBUGGER_START_FILE CC_FOR_BUILD CFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPFILES_TARGET HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O STATIC_LD LIBS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIB@&t@OBJS INTL_DEP INTL_INC LIBINTL_H TIME_H_DEFINES_STRUCT_TIMESPEC SYS_TIME_H_DEFINES_STRUCT_TIMESPEC PTHREAD_H_DEFINES_STRUCT_TIMESPEC SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR datarootdir localedir ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -757,6 +757,22 @@ ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set}
 ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE
 ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set}
 ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE
+ac_env_CC_FOR_BUILD_set=${CC_FOR_BUILD+set}
+ac_env_CC_FOR_BUILD_value=$CC_FOR_BUILD
+ac_cv_env_CC_FOR_BUILD_set=${CC_FOR_BUILD+set}
+ac_cv_env_CC_FOR_BUILD_value=$CC_FOR_BUILD
+ac_env_CFLAGS_FOR_BUILD_set=${CFLAGS_FOR_BUILD+set}
+ac_env_CFLAGS_FOR_BUILD_value=$CFLAGS_FOR_BUILD
+ac_cv_env_CFLAGS_FOR_BUILD_set=${CFLAGS_FOR_BUILD+set}
+ac_cv_env_CFLAGS_FOR_BUILD_value=$CFLAGS_FOR_BUILD
+ac_env_LDFLAGS_FOR_BUILD_set=${LDFLAGS_FOR_BUILD+set}
+ac_env_LDFLAGS_FOR_BUILD_value=$LDFLAGS_FOR_BUILD
+ac_cv_env_LDFLAGS_FOR_BUILD_set=${LDFLAGS_FOR_BUILD+set}
+ac_cv_env_LDFLAGS_FOR_BUILD_value=$LDFLAGS_FOR_BUILD
+ac_env_CPPFLAGS_FOR_BUILD_set=${CPPFLAGS_FOR_BUILD+set}
+ac_env_CPPFLAGS_FOR_BUILD_value=$CPPFLAGS_FOR_BUILD
+ac_cv_env_CPPFLAGS_FOR_BUILD_set=${CPPFLAGS_FOR_BUILD+set}
+ac_cv_env_CPPFLAGS_FOR_BUILD_value=$CPPFLAGS_FOR_BUILD
 ac_env_CC_set=${CC+set}
 ac_env_CC_value=$CC
 ac_cv_env_CC_set=${CC+set}
@@ -785,7 +801,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures bash 3.2-maint to adapt to many kinds of systems.
+\`configure' configures bash 4.2-maint to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -846,7 +862,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bash 3.2-maint:";;
+     short | recursive ) echo "Configuration of bash 4.2-maint:";;
    esac
   cat <<\_ACEOF
 
@@ -862,10 +878,16 @@ Optional Features:
   --enable-bang-history   turn on csh-style history substitution
   --enable-brace-expansion 
                           include brace expansion
+  --enable-casemod-attributes 
+                          include case-modifying variable attributes
+  --enable-casemod-expansions 
+                          include case-modifying word expansions
   --enable-command-timing enable the time reserved word and command timing
   --enable-cond-command   enable the conditional command
-  --enable-cond-regexp    enable extgended regular expression matching in
+  --enable-cond-regexp    enable extended regular expression matching in
                           conditional commands
+  --enable-coprocesses    enable coprocess support and the coproc reserved
+                          word
   --enable-debugger       enable support for bash debugger
   --enable-directory-stack 
                           enable builtins pushd/popd/dirs
@@ -874,6 +896,9 @@ Optional Features:
   --enable-dparen-arithmetic 
                           include ((...)) command
   --enable-extended-glob  include ksh-style extended pattern matching
+  --enable-extended-glob-default 
+                          force extended pattern matching to be enabled by
+                          default
   --enable-help-builtin   include the help builtin
   --enable-history        turn on command history
   --enable-job-control    enable job control features
@@ -911,7 +936,6 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-lispdir          override the default lisp directory
   --with-afs              if you are running AFS
   --with-bash-malloc      use the Bash version of malloc
   --with-curses           use the curses library instead of the termcap
@@ -932,6 +956,17 @@ Optional Packages:
 Some influential environment variables:
   DEBUGGER_START_FILE 
               location of bash debugger initialization file
+  CC_FOR_BUILD 
+              C compiler used when compiling binaries used only at build time
+  CFLAGS_FOR_BUILD 
+              Compliation options (CFLAGS) used when compiling binaries used
+              only at build time
+  LDFLAGS_FOR_BUILD 
+              Linker options (LDFLAGS) used when compiling binaries used only
+              at build time
+  CPPFLAGS_FOR_BUILD 
+              C preprocessor options (CPPFLAGS) used when compiling binaries
+              used only at build time
   CC          C compiler command
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
@@ -1039,7 +1074,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-bash configure 3.2-maint
+bash configure 4.2-maint
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1053,7 +1088,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bash $as_me 3.2-maint, which was
+It was created by bash $as_me 4.2-maint, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1421,7 +1456,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
           ac_config_headers="$ac_config_headers config.h"
 
 
-BASHVERS=3.2
+BASHVERS=4.2
 RELSTATUS=maint
 
 case "$RELSTATUS" in
@@ -1505,6 +1540,7 @@ sparc-linux*)     opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 #*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
 #*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
 *-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
@@ -1526,83 +1562,6 @@ sco3.2v5*|sco3.2v4*)     opt_memscramble=no ;;
 esac
 
 
-# Check whether --with-lispdir or --without-lispdir was given.
-if test "${with_lispdir+set}" = set; then
-  withval="$with_lispdir"
-   lispdir="$withval" 
-    echo "$as_me:$LINENO: checking where .elc files should go" >&5
-echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6
-    echo "$as_me:$LINENO: result: $lispdir" >&5
-echo "${ECHO_T}$lispdir" >&6
-else
-  
-  # If set to t, that means we are running in a shell under Emacs.
-  # If you have an Emacs named "t", then use the full path.
-  test x"$EMACS" = xt && EMACS=
-  for ac_prog in emacs xemacs
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_EMACS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$EMACS"; then
-  ac_cv_prog_EMACS="$EMACS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_EMACS="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-EMACS=$ac_cv_prog_EMACS
-if test -n "$EMACS"; then
-  echo "$as_me:$LINENO: result: $EMACS" >&5
-echo "${ECHO_T}$EMACS" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$EMACS" && break
-done
-test -n "$EMACS" || EMACS="no"
-
-  if test $EMACS != "no"; then
-    if test x${lispdir+set} != xset; then
-      echo "$as_me:$LINENO: checking where .elc files should go" >&5
-echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6
-if test "${am_cv_lispdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-       am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'`
-       if test -z "$am_cv_lispdir"; then
-         am_cv_lispdir='${datadir}/emacs/site-lisp'
-       fi
-      
-fi
-echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5
-echo "${ECHO_T}$am_cv_lispdir" >&6
-      lispdir="$am_cv_lispdir"
-    fi
-  fi
-fi; 
-
-
 
 
 # Check whether --with-afs or --without-afs was given.
@@ -1719,6 +1678,7 @@ opt_xpg_echo=no
 opt_strict_posix=no
 opt_cond_command=yes
 opt_cond_regexp=yes
+opt_coproc=yes
 opt_arith_for_command=yes
 opt_net_redirs=yes
 opt_progcomp=yes
@@ -1726,6 +1686,9 @@ opt_separate_help=no
 opt_multibyte=yes
 opt_debugger=yes
 opt_single_longdoc_strings=yes
+opt_casemod_attrs=yes
+opt_casemod_expansions=yes
+opt_extglob_default=no
 
 opt_static_link=no
 opt_profiling=no
@@ -1744,7 +1707,8 @@ if test $opt_minimal_config = yes; then
        opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
        opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
        opt_net_redirs=no opt_progcomp=no opt_separate_help=no
-       opt_multibyte=yes opt_cond_regexp=no
+       opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
+       opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
 fi
 
 # Check whether --enable-alias or --disable-alias was given.
@@ -1772,6 +1736,16 @@ if test "${enable_brace_expansion+set}" = set; then
   enableval="$enable_brace_expansion"
   opt_brace_expansion=$enableval
 fi; 
+# Check whether --enable-casemod-attributes or --disable-casemod-attributes was given.
+if test "${enable_casemod_attributes+set}" = set; then
+  enableval="$enable_casemod_attributes"
+  opt_casemod_attrs=$enableval
+fi; 
+# Check whether --enable-casemod-expansions or --disable-casemod-expansions was given.
+if test "${enable_casemod_expansions+set}" = set; then
+  enableval="$enable_casemod_expansions"
+  opt_casemod_expansions=$enableval
+fi; 
 # Check whether --enable-command-timing or --disable-command-timing was given.
 if test "${enable_command_timing+set}" = set; then
   enableval="$enable_command_timing"
@@ -1787,6 +1761,11 @@ if test "${enable_cond_regexp+set}" = set; then
   enableval="$enable_cond_regexp"
   opt_cond_regexp=$enableval
 fi; 
+# Check whether --enable-coprocesses or --disable-coprocesses was given.
+if test "${enable_coprocesses+set}" = set; then
+  enableval="$enable_coprocesses"
+  opt_coproc=$enableval
+fi; 
 # Check whether --enable-debugger or --disable-debugger was given.
 if test "${enable_debugger+set}" = set; then
   enableval="$enable_debugger"
@@ -1812,6 +1791,11 @@ if test "${enable_extended_glob+set}" = set; then
   enableval="$enable_extended_glob"
   opt_extended_glob=$enableval
 fi; 
+# Check whether --enable-extended-glob-default or --disable-extended-glob-default was given.
+if test "${enable_extended_glob_default+set}" = set; then
+  enableval="$enable_extended_glob_default"
+  opt_extglob_default=$enableval
+fi; 
 # Check whether --enable-help-builtin or --disable-help-builtin was given.
 if test "${enable_help_builtin+set}" = set; then
   enableval="$enable_help_builtin"
@@ -1911,6 +1895,11 @@ fi;
 
 
 
+
+
+
+
+
 if test $opt_alias = yes; then
 cat >>confdefs.h <<\_ACEOF
 @%:@define ALIAS 1
@@ -2000,6 +1989,17 @@ cat >>confdefs.h <<\_ACEOF
 @%:@define EXTENDED_GLOB 1
 _ACEOF
 
+fi
+if test $opt_extglob_default = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define EXTGLOB_DEFAULT 1
+_ACEOF
+
+else
+cat >>confdefs.h <<\_ACEOF
+@%:@define EXTGLOB_DEFAULT 0
+_ACEOF
+
 fi
 if test $opt_cond_command = yes ; then
 cat >>confdefs.h <<\_ACEOF
@@ -2012,6 +2012,12 @@ cat >>confdefs.h <<\_ACEOF
 @%:@define COND_REGEXP 1
 _ACEOF
 
+fi
+if test $opt_coproc = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define COPROCESS_SUPPORT 1
+_ACEOF
+
 fi
 if test $opt_arith_for_command = yes; then
 cat >>confdefs.h <<\_ACEOF
@@ -2042,6 +2048,18 @@ cat >>confdefs.h <<\_ACEOF
 @%:@define DEBUGGER 1
 _ACEOF
 
+fi
+if test $opt_casemod_attrs = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define CASEMOD_ATTRS 1
+_ACEOF
+
+fi
+if test $opt_casemod_expansions = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define CASEMOD_EXPANSIONS 1
+_ACEOF
+
 fi
 
 if test $opt_memscramble = yes; then
@@ -2057,7 +2075,7 @@ else
        TESTSCRIPT=run-all
 fi
 
-HELPDIR= HELPDIRDEFINE= HELPINSTALL=
+HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
 if test "$opt_separate_help" != no; then
        if test "$opt_separate_help" = "yes" ; then
                HELPDIR='${datadir}/bash'
@@ -2066,6 +2084,7 @@ if test "$opt_separate_help" != no; then
        fi
        HELPDIRDEFINE='-H ${HELPDIR}'
        HELPINSTALL='install-help'
+       HELPFILES_TARGET='helpdoc'
 fi
 HELPSTRINGS=
 if test "$opt_single_longdoc_strings" != "yes"; then
@@ -2089,6 +2108,7 @@ fi
 
 
 
+
 echo ""
 echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
 echo ""
@@ -4145,19 +4165,16 @@ fi
 
 
 
-if test -z "$CC_FOR_BUILD"; then
-    if test "x$cross_compiling" = "xno"; then
-       CC_FOR_BUILD='$(CC)'
-    else
-       CC_FOR_BUILD=gcc
-    fi
-fi
-
-
 
-test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1
+if test -z "$CFLAGS"; then
+       AUTO_CFLAGS="-g ${GCC+-O2}"
+       AUTO_LDFLAGS="-g ${GCC+-O2}"
+else
+       AUTO_CFLAGS= AUTO_LDFLAGS=
+fi
 
-test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2"
+CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
+# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"}   # XXX
 
 if test "$opt_profiling" = "yes"; then
        PROFILE_FLAGS=-pg
@@ -4168,7 +4185,12 @@ if test "$opt_profiling" = "yes"; then
        DEBUG= MALLOC_DEBUG=
 fi
 
+prefer_shared=yes
+prefer_static=no
+
 if test "$opt_static_link" = yes; then
+       prefer_static=yes
+       prefer_shared=no
        # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
        if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then
                STATIC_LD="-static" 
@@ -4179,15 +4201,25 @@ if test "$opt_static_link" = yes; then
        fi
 fi
 
+# set the appropriate make variables for building the "build tools"
+# modify defaults based on whether or not we are cross compiling, since the
+# options for the target host may not be appropriate for the build host
 if test "X$cross_compiling" = "Xno"; then
-       CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"}
+       CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
+       CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"}    # XXX - should it be '$(CPPFLAGS)'
        LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+       # CFLAGS set above to default value if not passed in environment
+       CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+       LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
 else
+       CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
        CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
        LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
+       CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
+       LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
 fi
 
-test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g"
+
 
 
 
@@ -4871,7 +4903,7 @@ _ACEOF
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
-               darwin8*)       READLINE_LIB='${READLINE_LIBRARY}' ;;
+               darwin[89]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
                *)              READLINE_LIB=-lreadline ;;
                esac
        fi
@@ -4912,7 +4944,7 @@ _ACEOF
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
-               darwin8*)       HISTORY_LIB='${HISTORY_LIBRARY}' ;;
+               darwin[89]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
                *)              HISTORY_LIB=-lhistory ;;
                esac
        fi
@@ -5225,6 +5257,41 @@ if test x$SIZE = x; then
 fi
 
 
+# Checks for stat-related time functions.
+
+# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2012 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# st_atim.tv_nsec - Linux, Solaris, Cygwin
+# st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE
+# st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE
+# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1)
+
+# st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway)
+# st_birthtim - Cygwin 1.7.0+
+
+
+
+# Configure checks for struct timespec
+
+# Copyright (C) 2000-2001, 2003-2007, 2009-2011, 2012 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Original written by Paul Eggert and Jim Meyering.
+# Modified by Chet Ramey for bash
+
+
+
+
+
 cat >>confdefs.h <<\_ACEOF
 @%:@define _GNU_SOURCE 1
 _ACEOF
@@ -5821,6 +5888,133 @@ _ACEOF
 
 fi
 
+echo "$as_me:$LINENO: checking for working volatile" >&5
+echo $ECHO_N "checking for working volatile... $ECHO_C" >&6
+if test "${ac_cv_c_volatile+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+volatile int x;
+int * volatile y;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_volatile=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_volatile=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+echo "${ECHO_T}$ac_cv_c_volatile" >&6
+if test $ac_cv_c_volatile = no; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define volatile 
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+echo $ECHO_N "checking for C/C++ restrict keyword... $ECHO_C" >&6
+if test "${ac_cv_c_restrict+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_c_restrict=no
+   # Try the official restrict keyword, then gcc's __restrict, and
+   # the less common variants.
+   for ac_kw in restrict __restrict __restrict__ _Restrict; do
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+float * $ac_kw x;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_restrict=$ac_kw; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+   done
+  
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+echo "${ECHO_T}$ac_cv_c_restrict" >&6
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) 
+cat >>confdefs.h <<\_ACEOF
+@%:@define restrict 
+_ACEOF
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+@%:@define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
 
 
         MKINSTALLDIRS=
@@ -7776,7 +7970,7 @@ fi;
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
@@ -7806,7 +8000,7 @@ fi;
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
@@ -8998,7 +9192,7 @@ fi;
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
@@ -9028,7 +9222,7 @@ fi;
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
@@ -10136,13 +10330,17 @@ done
 
 
 
+
+
+
 
 
 
 
 for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
                 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
-                stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h
+                stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+                regex.h syslog.h ulimit.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -11819,9 +12017,10 @@ _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for isinf" >&5
-echo $ECHO_N "checking for isinf... $ECHO_C" >&6
-if test "${ac_cv_func_isinf+set}" = set; then
+
+echo "$as_me:$LINENO: checking for mkfifo" >&5
+echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6
+if test "${ac_cv_func_mkfifo+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -11830,12 +12029,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define isinf to an innocuous variant, in case <limits.h> declares isinf.
+/* Define mkfifo to an innocuous variant, in case <limits.h> declares mkfifo.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define isinf innocuous_isinf
+#define mkfifo innocuous_mkfifo
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char isinf (); below.
+    which can conflict with char mkfifo (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -11845,7 +12044,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef isinf
+#undef mkfifo
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -11854,14 +12053,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char isinf ();
+char mkfifo ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_isinf) || defined (__stub___isinf)
+#if defined (__stub_mkfifo) || defined (__stub___mkfifo)
 choke me
 #else
-char (*f) () = isinf;
+char (*f) () = mkfifo;
 #endif
 #ifdef __cplusplus
 }
@@ -11870,7 +12069,7 @@ char (*f) () = isinf;
 int
 main ()
 {
-return f != isinf;
+return f != mkfifo;
   ;
   return 0;
 }
@@ -11897,28 +12096,63 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_isinf=yes
+  ac_cv_func_mkfifo=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_isinf=no
+ac_cv_func_mkfifo=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5
-echo "${ECHO_T}$ac_cv_func_isinf" >&6
-if test $ac_cv_func_isinf = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5
+echo "${ECHO_T}$ac_cv_func_mkfifo" >&6
+if test $ac_cv_func_mkfifo = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_ISINF_IN_LIBC 1
+@%:@define HAVE_MKFIFO 1
+_ACEOF
+
+else
+  cat >>confdefs.h <<\_ACEOF
+@%:@define MKFIFO_MISSING 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for isnan" >&5
-echo $ECHO_N "checking for isnan... $ECHO_C" >&6
-if test "${ac_cv_func_isnan+set}" = set; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \
+               getpagesize getpeername getrlimit getrusage gettimeofday \
+               kill killpg lstat readlink sbrk select setdtablesize \
+               setitimer tcgetpgrp uname ulimit waitpid
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -11927,12 +12161,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define isnan to an innocuous variant, in case <limits.h> declares isnan.
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define isnan innocuous_isnan
+#define $ac_func innocuous_$ac_func
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char isnan (); below.
+    which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -11942,7 +12176,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef isnan
+#undef $ac_func
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -11951,14 +12185,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char isnan ();
+char $ac_func ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_isnan) || defined (__stub___isnan)
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-char (*f) () = isnan;
+char (*f) () = $ac_func;
 #endif
 #ifdef __cplusplus
 }
@@ -11967,7 +12201,7 @@ char (*f) () = isnan;
 int
 main ()
 {
-return f != isnan;
+return f != $ac_func;
   ;
   return 0;
 }
@@ -11994,29 +12228,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_isnan=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_isnan=no
+eval "$as_ac_var=no"
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5
-echo "${ECHO_T}$ac_cv_func_isnan" >&6
-if test $ac_cv_func_isnan = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_ISNAN_IN_LIBC 1
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
 fi
+done
 
 
-echo "$as_me:$LINENO: checking for mkfifo" >&5
-echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6
-if test "${ac_cv_func_mkfifo+set}" = set; then
+for ac_func in rename
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -12025,12 +12263,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define mkfifo to an innocuous variant, in case <limits.h> declares mkfifo.
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define mkfifo innocuous_mkfifo
+#define $ac_func innocuous_$ac_func
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char mkfifo (); below.
+    which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -12040,7 +12278,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef mkfifo
+#undef $ac_func
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -12049,14 +12287,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char mkfifo ();
+char $ac_func ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_mkfifo) || defined (__stub___mkfifo)
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-char (*f) () = mkfifo;
+char (*f) () = $ac_func;
 #endif
 #ifdef __cplusplus
 }
@@ -12065,7 +12303,7 @@ char (*f) () = mkfifo;
 int
 main ()
 {
-return f != mkfifo;
+return f != $ac_func;
   ;
   return 0;
 }
@@ -12092,29 +12330,34 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_mkfifo=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_mkfifo=no
+eval "$as_ac_var=no"
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5
-echo "${ECHO_T}$ac_cv_func_mkfifo" >&6
-if test $ac_cv_func_mkfifo = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MKFIFO 1
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
 else
-  cat >>confdefs.h <<\_ACEOF
-@%:@define MKFIFO_MISSING 1
-_ACEOF
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
 
 fi
+done
 
 
 
 
 
 
-for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \
-               getpagesize getpeername getrlimit getrusage gettimeofday \
-               kill killpg lstat readlink sbrk select setdtablesize \
-               tcgetpgrp uname ulimit waitpid
+
+
+
+
+
+
+
+
+
+for ac_func in bcopy bzero confstr faccessat fnmatch \
+               getaddrinfo gethostbyname getservbyname getservent inet_aton \
+               imaxdiv memmove pathconf putenv raise regcomp regexec \
+               setenv setlinebuf setlocale setvbuf siginterrupt strchr \
+               sysconf syslog tcgetattr times ttyname tzset unsetenv
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12244,7 +12497,9 @@ fi
 done
 
 
-for ac_func in rename
+
+
+for ac_func in vasprintf asprintf
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12342,15 +12597,6 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
 @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  
-else
-  case $LIB@&t@OBJS in
-    "$ac_func.$ac_objext"   | \
-  *" $ac_func.$ac_objext"   | \
-    "$ac_func.$ac_objext "* | \
-  *" $ac_func.$ac_objext "* ) ;;
-  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
-esac
-
 fi
 done
 
@@ -12360,34 +12606,7 @@ done
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in bcopy bzero confstr fnmatch \
-               getaddrinfo gethostbyname getservbyname getservent inet_aton \
-               memmove pathconf putenv raise regcomp regexec \
-               setenv setlinebuf setlocale setvbuf siginterrupt strchr \
-               sysconf tcgetattr times ttyname tzset unsetenv
+for ac_func in isascii isblank isgraph isprint isspace isxdigit
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12491,9 +12710,7 @@ done
 
 
 
-
-
-for ac_func in vsnprintf snprintf vasprintf asprintf
+for ac_func in getpwent getpwnam getpwuid
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12596,11 +12813,7 @@ done
 
 
 
-
-
-
-
-for ac_func in isascii isblank isgraph isprint isspace isxdigit
+for ac_func in getcwd memset
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12698,13 +12911,27 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
 @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  
+else
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
+
 fi
 done
 
 
 
 
-for ac_func in getpwent getpwnam getpwuid
+
+
+
+
+
+for ac_func in strcasecmp strcasestr strerror strftime strnlen strpbrk strstr
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12802,6 +13029,15 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
 @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
  
+else
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
+
 fi
 done
 
@@ -12813,7 +13049,7 @@ done
 
 
 
-for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr
+for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -12925,13 +13161,7 @@ done
 
 
 
-
-
-
-
-
-
-for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax
+for ac_func in dprintf
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -13043,9 +13273,12 @@ done
 
 
 
-echo "$as_me:$LINENO: checking whether confstr is declared" >&5
-echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_confstr+set}" = set; then
+for ac_func in strchrnul
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -13054,21 +13287,54 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
 {
-#ifndef confstr
-  char *p = (char *) confstr;
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
 #endif
 
+int
+main ()
+{
+return f != $ac_func;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -13082,42 +13348,192 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_have_decl_confstr=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_have_decl_confstr=no
+eval "$as_ac_var=no"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5
-echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6
-if test $ac_cv_have_decl_confstr = yes; then
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_CONFSTR 1
-_ACEOF
-
-
-else
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
   cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_CONFSTR 0
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+else
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
 
 fi
+done
 
 
-echo "$as_me:$LINENO: checking whether printf is declared" >&5
-echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_printf+set}" = set; then
+
+echo "$as_me:$LINENO: checking whether AUDIT_USER_TTY is declared" >&5
+echo $ECHO_N "checking whether AUDIT_USER_TTY is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_AUDIT_USER_TTY+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <linux/audit.h>
+
+int
+main ()
+{
+#ifndef AUDIT_USER_TTY
+  char *p = (char *) AUDIT_USER_TTY;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_AUDIT_USER_TTY=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_AUDIT_USER_TTY=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_AUDIT_USER_TTY" >&5
+echo "${ECHO_T}$ac_cv_have_decl_AUDIT_USER_TTY" >&6
+if test $ac_cv_have_decl_AUDIT_USER_TTY = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_AUDIT_USER_TTY 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_AUDIT_USER_TTY 0
+_ACEOF
+
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking whether confstr is declared" >&5
+echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_confstr+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef confstr
+  char *p = (char *) confstr;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_confstr=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_confstr=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5
+echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6
+if test $ac_cv_have_decl_confstr = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_CONFSTR 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_CONFSTR 0
+_ACEOF
+
+
+fi
+
+
+echo "$as_me:$LINENO: checking whether printf is declared" >&5
+echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_printf+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -13611,7 +14027,6 @@ _ACEOF
 fi
 
 
-    
 
 
 
@@ -15701,9 +16116,9 @@ fi
 done
 
 
-echo "$as_me:$LINENO: checking for mbsrtowcs" >&5
-echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6
-if test "${ac_cv_func_mbsrtowcs+set}" = set; then
+echo "$as_me:$LINENO: checking for mbrlen" >&5
+echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6
+if test "${ac_cv_func_mbrlen+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -15712,12 +16127,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define mbsrtowcs to an innocuous variant, in case <limits.h> declares mbsrtowcs.
+/* Define mbrlen to an innocuous variant, in case <limits.h> declares mbrlen.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define mbsrtowcs innocuous_mbsrtowcs
+#define mbrlen innocuous_mbrlen
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char mbsrtowcs (); below.
+    which can conflict with char mbrlen (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -15727,7 +16142,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef mbsrtowcs
+#undef mbrlen
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -15736,14 +16151,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char mbsrtowcs ();
+char mbrlen ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs)
+#if defined (__stub_mbrlen) || defined (__stub___mbrlen)
 choke me
 #else
-char (*f) () = mbsrtowcs;
+char (*f) () = mbrlen;
 #endif
 #ifdef __cplusplus
 }
@@ -15752,7 +16167,7 @@ char (*f) () = mbsrtowcs;
 int
 main ()
 {
-return f != mbsrtowcs;
+return f != mbrlen;
   ;
   return 0;
 }
@@ -15779,28 +16194,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_mbsrtowcs=yes
+  ac_cv_func_mbrlen=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_mbsrtowcs=no
+ac_cv_func_mbrlen=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5
-echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6
-if test $ac_cv_func_mbsrtowcs = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5
+echo "${ECHO_T}$ac_cv_func_mbrlen" >&6
+if test $ac_cv_func_mbrlen = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MBSRTOWCS 1
+@%:@define HAVE_MBRLEN 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for mbrlen" >&5
-echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6
-if test "${ac_cv_func_mbrlen+set}" = set; then
+echo "$as_me:$LINENO: checking for mbscasecmp" >&5
+echo $ECHO_N "checking for mbscasecmp... $ECHO_C" >&6
+if test "${ac_cv_func_mbscasecmp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -15809,12 +16224,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define mbrlen to an innocuous variant, in case <limits.h> declares mbrlen.
+/* Define mbscasecmp to an innocuous variant, in case <limits.h> declares mbscasecmp.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define mbrlen innocuous_mbrlen
+#define mbscasecmp innocuous_mbscasecmp
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char mbrlen (); below.
+    which can conflict with char mbscasecmp (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -15824,7 +16239,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef mbrlen
+#undef mbscasecmp
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -15833,14 +16248,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char mbrlen ();
+char mbscasecmp ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_mbrlen) || defined (__stub___mbrlen)
+#if defined (__stub_mbscasecmp) || defined (__stub___mbscasecmp)
 choke me
 #else
-char (*f) () = mbrlen;
+char (*f) () = mbscasecmp;
 #endif
 #ifdef __cplusplus
 }
@@ -15849,7 +16264,7 @@ char (*f) () = mbrlen;
 int
 main ()
 {
-return f != mbrlen;
+return f != mbscasecmp;
   ;
   return 0;
 }
@@ -15876,29 +16291,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_mbrlen=yes
+  ac_cv_func_mbscasecmp=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_mbrlen=no
+ac_cv_func_mbscasecmp=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5
-echo "${ECHO_T}$ac_cv_func_mbrlen" >&6
-if test $ac_cv_func_mbrlen = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mbscasecmp" >&5
+echo "${ECHO_T}$ac_cv_func_mbscasecmp" >&6
+if test $ac_cv_func_mbscasecmp = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MBRLEN 1
+@%:@define HAVE_MBSCMP 1
 _ACEOF
 
 fi
 
-
-echo "$as_me:$LINENO: checking for wcrtomb" >&5
-echo $ECHO_N "checking for wcrtomb... $ECHO_C" >&6
-if test "${ac_cv_func_wcrtomb+set}" = set; then
+echo "$as_me:$LINENO: checking for mbscmp" >&5
+echo $ECHO_N "checking for mbscmp... $ECHO_C" >&6
+if test "${ac_cv_func_mbscmp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -15907,12 +16321,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define wcrtomb to an innocuous variant, in case <limits.h> declares wcrtomb.
+/* Define mbscmp to an innocuous variant, in case <limits.h> declares mbscmp.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define wcrtomb innocuous_wcrtomb
+#define mbscmp innocuous_mbscmp
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char wcrtomb (); below.
+    which can conflict with char mbscmp (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -15922,7 +16336,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef wcrtomb
+#undef mbscmp
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -15931,14 +16345,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char wcrtomb ();
+char mbscmp ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_wcrtomb) || defined (__stub___wcrtomb)
+#if defined (__stub_mbscmp) || defined (__stub___mbscmp)
 choke me
 #else
-char (*f) () = wcrtomb;
+char (*f) () = mbscmp;
 #endif
 #ifdef __cplusplus
 }
@@ -15947,7 +16361,7 @@ char (*f) () = wcrtomb;
 int
 main ()
 {
-return f != wcrtomb;
+return f != mbscmp;
   ;
   return 0;
 }
@@ -15974,28 +16388,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_wcrtomb=yes
+  ac_cv_func_mbscmp=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_wcrtomb=no
+ac_cv_func_mbscmp=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5
-echo "${ECHO_T}$ac_cv_func_wcrtomb" >&6
-if test $ac_cv_func_wcrtomb = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mbscmp" >&5
+echo "${ECHO_T}$ac_cv_func_mbscmp" >&6
+if test $ac_cv_func_mbscmp = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCRTOMB 1
+@%:@define HAVE_MBSCMP 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for wcscoll" >&5
-echo $ECHO_N "checking for wcscoll... $ECHO_C" >&6
-if test "${ac_cv_func_wcscoll+set}" = set; then
+echo "$as_me:$LINENO: checking for mbsnrtowcs" >&5
+echo $ECHO_N "checking for mbsnrtowcs... $ECHO_C" >&6
+if test "${ac_cv_func_mbsnrtowcs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16004,12 +16418,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define wcscoll to an innocuous variant, in case <limits.h> declares wcscoll.
+/* Define mbsnrtowcs to an innocuous variant, in case <limits.h> declares mbsnrtowcs.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define wcscoll innocuous_wcscoll
+#define mbsnrtowcs innocuous_mbsnrtowcs
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char wcscoll (); below.
+    which can conflict with char mbsnrtowcs (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -16019,7 +16433,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef wcscoll
+#undef mbsnrtowcs
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -16028,14 +16442,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char wcscoll ();
+char mbsnrtowcs ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_wcscoll) || defined (__stub___wcscoll)
+#if defined (__stub_mbsnrtowcs) || defined (__stub___mbsnrtowcs)
 choke me
 #else
-char (*f) () = wcscoll;
+char (*f) () = mbsnrtowcs;
 #endif
 #ifdef __cplusplus
 }
@@ -16044,7 +16458,7 @@ char (*f) () = wcscoll;
 int
 main ()
 {
-return f != wcscoll;
+return f != mbsnrtowcs;
   ;
   return 0;
 }
@@ -16071,28 +16485,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_wcscoll=yes
+  ac_cv_func_mbsnrtowcs=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_wcscoll=no
+ac_cv_func_mbsnrtowcs=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5
-echo "${ECHO_T}$ac_cv_func_wcscoll" >&6
-if test $ac_cv_func_wcscoll = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mbsnrtowcs" >&5
+echo "${ECHO_T}$ac_cv_func_mbsnrtowcs" >&6
+if test $ac_cv_func_mbsnrtowcs = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCSCOLL 1
+@%:@define HAVE_MBSNRTOWCS 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for wcsdup" >&5
-echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6
-if test "${ac_cv_func_wcsdup+set}" = set; then
+echo "$as_me:$LINENO: checking for mbsrtowcs" >&5
+echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6
+if test "${ac_cv_func_mbsrtowcs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16101,12 +16515,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define wcsdup to an innocuous variant, in case <limits.h> declares wcsdup.
+/* Define mbsrtowcs to an innocuous variant, in case <limits.h> declares mbsrtowcs.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define wcsdup innocuous_wcsdup
+#define mbsrtowcs innocuous_mbsrtowcs
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char wcsdup (); below.
+    which can conflict with char mbsrtowcs (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -16116,7 +16530,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef wcsdup
+#undef mbsrtowcs
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -16125,14 +16539,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char wcsdup ();
+char mbsrtowcs ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_wcsdup) || defined (__stub___wcsdup)
+#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs)
 choke me
 #else
-char (*f) () = wcsdup;
+char (*f) () = mbsrtowcs;
 #endif
 #ifdef __cplusplus
 }
@@ -16141,7 +16555,7 @@ char (*f) () = wcsdup;
 int
 main ()
 {
-return f != wcsdup;
+return f != mbsrtowcs;
   ;
   return 0;
 }
@@ -16168,28 +16582,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_wcsdup=yes
+  ac_cv_func_mbsrtowcs=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_wcsdup=no
+ac_cv_func_mbsrtowcs=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5
-echo "${ECHO_T}$ac_cv_func_wcsdup" >&6
-if test $ac_cv_func_wcsdup = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5
+echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6
+if test $ac_cv_func_mbsrtowcs = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCSDUP 1
+@%:@define HAVE_MBSRTOWCS 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for wcwidth" >&5
-echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6
-if test "${ac_cv_func_wcwidth+set}" = set; then
+
+
+for ac_func in mbschr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16198,12 +16617,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define wcwidth to an innocuous variant, in case <limits.h> declares wcwidth.
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define wcwidth innocuous_wcwidth
+#define $ac_func innocuous_$ac_func
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char wcwidth (); below.
+    which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -16213,7 +16632,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef wcwidth
+#undef $ac_func
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -16222,14 +16641,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char wcwidth ();
+char $ac_func ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_wcwidth) || defined (__stub___wcwidth)
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-char (*f) () = wcwidth;
+char (*f) () = $ac_func;
 #endif
 #ifdef __cplusplus
 }
@@ -16238,7 +16657,7 @@ char (*f) () = wcwidth;
 int
 main ()
 {
-return f != wcwidth;
+return f != $ac_func;
   ;
   return 0;
 }
@@ -16265,28 +16684,40 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_wcwidth=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_wcwidth=no
+eval "$as_ac_var=no"
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5
-echo "${ECHO_T}$ac_cv_func_wcwidth" >&6
-if test $ac_cv_func_wcwidth = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCWIDTH 1
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
+else
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
 
 fi
+done
 
-echo "$as_me:$LINENO: checking for wctype" >&5
-echo $ECHO_N "checking for wctype... $ECHO_C" >&6
-if test "${ac_cv_func_wctype+set}" = set; then
+
+
+echo "$as_me:$LINENO: checking for wcrtomb" >&5
+echo $ECHO_N "checking for wcrtomb... $ECHO_C" >&6
+if test "${ac_cv_func_wcrtomb+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16295,12 +16726,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define wctype to an innocuous variant, in case <limits.h> declares wctype.
+/* Define wcrtomb to an innocuous variant, in case <limits.h> declares wcrtomb.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define wctype innocuous_wctype
+#define wcrtomb innocuous_wcrtomb
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char wctype (); below.
+    which can conflict with char wcrtomb (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -16310,7 +16741,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef wctype
+#undef wcrtomb
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -16319,14 +16750,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char wctype ();
+char wcrtomb ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_wctype) || defined (__stub___wctype)
+#if defined (__stub_wcrtomb) || defined (__stub___wcrtomb)
 choke me
 #else
-char (*f) () = wctype;
+char (*f) () = wcrtomb;
 #endif
 #ifdef __cplusplus
 }
@@ -16335,7 +16766,7 @@ char (*f) () = wctype;
 int
 main ()
 {
-return f != wctype;
+return f != wcrtomb;
   ;
   return 0;
 }
@@ -16362,30 +16793,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_wctype=yes
+  ac_cv_func_wcrtomb=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_wctype=no
+ac_cv_func_wcrtomb=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5
-echo "${ECHO_T}$ac_cv_func_wctype" >&6
-if test $ac_cv_func_wctype = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5
+echo "${ECHO_T}$ac_cv_func_wcrtomb" >&6
+if test $ac_cv_func_wcrtomb = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCTYPE 1
+@%:@define HAVE_WCRTOMB 1
 _ACEOF
 
 fi
 
-
-
-  echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
-echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6
-if test "${ac_cv_func_mbrtowc+set}" = set; then
+echo "$as_me:$LINENO: checking for wcscoll" >&5
+echo $ECHO_N "checking for wcscoll... $ECHO_C" >&6
+if test "${ac_cv_func_wcscoll+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16394,11 +16823,47 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-@%:@include <wchar.h>
+/* Define wcscoll to an innocuous variant, in case <limits.h> declares wcscoll.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define wcscoll innocuous_wcscoll
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char wcscoll (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef wcscoll
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char wcscoll ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_wcscoll) || defined (__stub___wcscoll)
+choke me
+#else
+char (*f) () = wcscoll;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
 int
 main ()
 {
-mbstate_t state; return ! (sizeof state && mbrtowc);
+return f != wcscoll;
   ;
   return 0;
 }
@@ -16425,44 +16890,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_mbrtowc=yes
+  ac_cv_func_wcscoll=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func_mbrtowc=no
+ac_cv_func_wcscoll=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5
-echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6
-  if test $ac_cv_func_mbrtowc = yes; then
-    
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MBRTOWC 1
-_ACEOF
-
-  fi
-
-if test $ac_cv_func_mbrtowc = yes; then
-       cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MBSTATE_T 1
+echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5
+echo "${ECHO_T}$ac_cv_func_wcscoll" >&6
+if test $ac_cv_func_wcscoll = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WCSCOLL 1
 _ACEOF
 
 fi
 
-
-
-
-
-
-for ac_func in iswlower iswupper towlower towupper iswctype
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
+echo "$as_me:$LINENO: checking for wcsdup" >&5
+echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6
+if test "${ac_cv_func_wcsdup+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16471,12 +16920,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+/* Define wcsdup to an innocuous variant, in case <limits.h> declares wcsdup.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+#define wcsdup innocuous_wcsdup
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
+    which can conflict with char wcsdup (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 
@@ -16486,7 +16935,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 # include <assert.h>
 #endif
 
-#undef $ac_func
+#undef wcsdup
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -16495,14 +16944,14 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char $ac_func ();
+char wcsdup ();
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#if defined (__stub_wcsdup) || defined (__stub___wcsdup)
 choke me
 #else
-char (*f) () = $ac_func;
+char (*f) () = wcsdup;
 #endif
 #ifdef __cplusplus
 }
@@ -16511,7 +16960,7 @@ char (*f) () = $ac_func;
 int
 main ()
 {
-return f != $ac_func;
+return f != wcsdup;
   ;
   return 0;
 }
@@ -16538,30 +16987,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
+  ac_cv_func_wcsdup=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-eval "$as_ac_var=no"
+ac_cv_func_wcsdup=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5
+echo "${ECHO_T}$ac_cv_func_wcsdup" >&6
+if test $ac_cv_func_wcsdup = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WCSDUP 1
 _ACEOF
-fi
-done
 
+fi
 
-echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
-echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-if test "${bash_cv_langinfo_codeset+set}" = set; then
+echo "$as_me:$LINENO: checking for wcwidth" >&5
+echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6
+if test "${ac_cv_func_wcwidth+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16570,11 +17017,47 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <langinfo.h>
+/* Define wcwidth to an innocuous variant, in case <limits.h> declares wcwidth.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define wcwidth innocuous_wcwidth
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char wcwidth (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef wcwidth
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char wcwidth ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_wcwidth) || defined (__stub___wcwidth)
+choke me
+#else
+char (*f) () = wcwidth;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
 int
 main ()
 {
-char* cs = nl_langinfo(CODESET);
+return f != wcwidth;
   ;
   return 0;
 }
@@ -16601,28 +17084,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_langinfo_codeset=yes
+  ac_cv_func_wcwidth=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_langinfo_codeset=no
+ac_cv_func_wcwidth=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5
-echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6
-if test $bash_cv_langinfo_codeset = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5
+echo "${ECHO_T}$ac_cv_func_wcwidth" >&6
+if test $ac_cv_func_wcwidth = yes; then
   cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_LANGINFO_CODESET 1
+@%:@define HAVE_WCWIDTH 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5
-echo $ECHO_N "checking for wchar_t in wchar.h... $ECHO_C" >&6
-if test "${bash_cv_type_wchar_t+set}" = set; then
+echo "$as_me:$LINENO: checking for wctype" >&5
+echo $ECHO_N "checking for wctype... $ECHO_C" >&6
+if test "${ac_cv_func_wctype+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16631,22 +17114,54 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <wchar.h>
+/* Define wctype to an innocuous variant, in case <limits.h> declares wctype.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define wctype innocuous_wctype
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char wctype (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef wctype
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char wctype ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_wctype) || defined (__stub___wctype)
+choke me
+#else
+char (*f) () = wctype;
+#endif
+#ifdef __cplusplus
+}
+#endif
 
 int
 main ()
 {
-
-        wchar_t foo;
-        foo = 0;
-
+return f != wctype;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -16660,34 +17175,39 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_wchar_t=yes
+  ac_cv_func_wctype=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_type_wchar_t=no
+ac_cv_func_wctype=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5
-echo "${ECHO_T}$bash_cv_type_wchar_t" >&6
-if test $bash_cv_type_wchar_t = yes; then
-        
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCHAR_T 1
+echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5
+echo "${ECHO_T}$ac_cv_func_wctype" >&6
+if test $ac_cv_func_wctype = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WCTYPE 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5
-echo $ECHO_N "checking for wctype_t in wctype.h... $ECHO_C" >&6
-if test "${bash_cv_type_wctype_t+set}" = set; then
+
+
+for ac_func in wcswidth
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16696,21 +17216,54 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <wctype.h>
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
 int
 main ()
 {
-
-        wctype_t foo;
-        foo = 0;
-
+return f != $ac_func;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -16724,34 +17277,47 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_wctype_t=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_type_wctype_t=no
+eval "$as_ac_var=no"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5
-echo "${ECHO_T}$bash_cv_type_wctype_t" >&6
-if test $bash_cv_type_wctype_t = yes; then
-        
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WCTYPE_T 1
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
+else
+  case $LIB@&t@OBJS in
+    "$ac_func.$ac_objext"   | \
+  *" $ac_func.$ac_objext"   | \
+    "$ac_func.$ac_objext "* | \
+  *" $ac_func.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;;
+esac
 
 fi
+done
 
-echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5
-echo $ECHO_N "checking for wint_t in wctype.h... $ECHO_C" >&6
-if test "${bash_cv_type_wint_t+set}" = set; then
+
+
+
+  echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6
+if test "${ac_cv_func_mbrtowc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16760,21 +17326,18 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <wctype.h>
+@%:@include <wchar.h>
 int
 main ()
 {
-
-        wint_t foo;
-        foo = 0;
-
+mbstate_t state; return ! (sizeof state && mbrtowc);
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -16788,60 +17351,99 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_wint_t=yes
+  ac_cv_func_mbrtowc=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_type_wint_t=no
+ac_cv_func_mbrtowc=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5
-echo "${ECHO_T}$bash_cv_type_wint_t" >&6
-if test $bash_cv_type_wint_t = yes; then
-        
+echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5
+echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6
+  if test $ac_cv_func_mbrtowc = yes; then
+    
 cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_WINT_T 1
+@%:@define HAVE_MBRTOWC 1
+_ACEOF
+
+  fi
+
+if test $ac_cv_func_mbrtowc = yes; then
+       cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_MBSTATE_T 1
 _ACEOF
 
 fi
 
 
 
-if test "$opt_static_link" != yes; then
 
-echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+
+
+for ac_func in iswlower iswupper towlower towupper iswctype
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
+{
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
   ;
   return 0;
 }
@@ -16868,37 +17470,30 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_dl_dlopen=no
+eval "$as_ac_var=no"
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
   cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBDL 1
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
-  LIBS="-ldl $LIBS"
-
 fi
+done
 
 
-
-
-for ac_func in dlopen dlclose dlsym
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
+echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
+echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
+if test "${bash_cv_langinfo_codeset+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -16907,47 +17502,11 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
+#include <langinfo.h>
 int
 main ()
 {
-return f != $ac_func;
+char* cs = nl_langinfo(CODESET);
   ;
   return 0;
 }
@@ -16974,31 +17533,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
+  bash_cv_langinfo_codeset=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-eval "$as_ac_var=no"
+bash_cv_langinfo_codeset=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5
+echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6
+if test $bash_cv_langinfo_codeset = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_LANGINFO_CODESET 1
 _ACEOF
-fi
-done
 
 fi
 
-echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5
-echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_sys_siglist+set}" = set; then
+echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5
+echo $ECHO_N "checking for wchar_t in wchar.h... $ECHO_C" >&6
+if test "${bash_cv_type_wchar_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -17007,19 +17563,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <signal.h>
-/* NetBSD declares sys_siglist in unistd.h.  */
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
+#include <wchar.h>
 
 int
 main ()
 {
-#ifndef sys_siglist
-  char *p = (char *) sys_siglist;
-#endif
+
+        wchar_t foo;
+        foo = 0;
 
   ;
   return 0;
@@ -17047,40 +17598,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_have_decl_sys_siglist=yes
+  bash_cv_type_wchar_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_have_decl_sys_siglist=no
+bash_cv_type_wchar_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5
-echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6
-if test $ac_cv_have_decl_sys_siglist = yes; then
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_SYS_SIGLIST 1
-_ACEOF
-
-
-else
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_SYS_SIGLIST 0
+echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5
+echo "${ECHO_T}$bash_cv_type_wchar_t" >&6
+if test $bash_cv_type_wchar_t = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WCHAR_T 1
 _ACEOF
 
-
 fi
 
-
-
-
-if test "$ac_cv_func_inet_aton" != 'yes'; then
-
-echo "$as_me:$LINENO: checking for inet_aton" >&5
-echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6
-if test "${bash_cv_func_inet_aton+set}" = set; then
+echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5
+echo $ECHO_N "checking for wctype_t in wctype.h... $ECHO_C" >&6
+if test "${bash_cv_type_wctype_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -17089,22 +17628,21 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct in_addr ap;
+#include <wctype.h>
 int
 main ()
 {
- inet_aton("127.0.0.1", &ap); 
+
+        wctype_t foo;
+        foo = 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17118,76 +17656,57 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_func_inet_aton=yes
+  bash_cv_type_wctype_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_func_inet_aton=no
+bash_cv_type_wctype_t=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5
-echo "${ECHO_T}$bash_cv_func_inet_aton" >&6
-if test $bash_cv_func_inet_aton = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_INET_ATON 1
+echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5
+echo "${ECHO_T}$bash_cv_type_wctype_t" >&6
+if test $bash_cv_type_wctype_t = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WCTYPE_T 1
 _ACEOF
 
-else
-  case $LIB@&t@OBJS in
-    "inet_aton.$ac_objext"   | \
-  *" inet_aton.$ac_objext"   | \
-    "inet_aton.$ac_objext "* | \
-  *" inet_aton.$ac_objext "* ) ;;
-  *) LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" ;;
-esac
-
-fi
-
 fi
 
-case "$host_os" in
-irix4*)        
-echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5
-echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6
-if test "${ac_cv_lib_sun_getpwent+set}" = set; then
+echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5
+echo $ECHO_N "checking for wint_t in wctype.h... $ECHO_C" >&6
+if test "${bash_cv_type_wint_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsun  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getpwent ();
+#include <wctype.h>
 int
 main ()
 {
-getpwent ();
+
+        wint_t foo;
+        foo = 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17201,162 +17720,161 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_sun_getpwent=yes
+  bash_cv_type_wint_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_sun_getpwent=no
+bash_cv_type_wint_t=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5
-echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6
-if test $ac_cv_lib_sun_getpwent = yes; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBSUN 1
-_ACEOF
-
-  LIBS="-lsun $LIBS"
-
-fi
- ;;
-esac
+echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5
+echo "${ECHO_T}$bash_cv_type_wint_t" >&6
+if test $bash_cv_type_wint_t = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_WINT_T 1
+_ACEOF
 
-if test "$ac_cv_func_getpeername" = no; then
-       
-if test "X$bash_cv_have_socklib" = "X"; then
-_bash_needmsg=
-else
-echo "$as_me:$LINENO: checking for socket library" >&5
-echo $ECHO_N "checking for socket library... $ECHO_C" >&6
-_bash_needmsg=yes
 fi
-if test "${bash_cv_have_socklib+set}" = set; then
+
+echo "$as_me:$LINENO: checking for wcwidth broken with unicode combining characters" >&5
+echo $ECHO_N "checking for wcwidth broken with unicode combining characters... $ECHO_C" >&6
+if test "${bash_cv_wcwidth_broken+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5
-echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_getpeername+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket -lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getpeername ();
-int
-main ()
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <locale.h>
+#include <wchar.h>
+
+main(c, v)
+int     c;
+char    **v;
 {
-getpeername ();
-  ;
-  return 0;
+        int     w;
+
+        setlocale(LC_ALL, "en_US.UTF-8");
+        w = wcwidth (0x0301);
+        exit (w == 0);  /* exit 0 if wcwidth broken */
 }
+
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+  (eval $ac_link) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_socket_getpeername=yes
+  bash_cv_wcwidth_broken=yes
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_socket_getpeername=no
+( exit $ac_status )
+bash_cv_wcwdith_broken=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6
-if test $ac_cv_lib_socket_getpeername = yes; then
-  bash_cv_have_socklib=yes
-else
-  bash_cv_have_socklib=no
 fi
+echo "$as_me:$LINENO: result: $bash_cv_wcwidth_broken" >&5
+echo "${ECHO_T}$bash_cv_wcwidth_broken" >&6
+if test $bash_cv_wcwidth_broken = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define WCWIDTH_BROKEN 1
+_ACEOF
 
 fi
 
-if test "X$_bash_needmsg" = Xyes; then
-  echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5
-echo "${ECHO_T}$bash_cv_have_socklib" >&6
-  _bash_needmsg=
-fi
-if test $bash_cv_have_socklib = yes; then
-  # check for libnsl, add it to LIBS if present
-  if test "X$bash_cv_have_libnsl" = "X"; then
-    _bash_needmsg=
-  else
-    echo "$as_me:$LINENO: checking for libnsl" >&5
-echo $ECHO_N "checking for libnsl... $ECHO_C" >&6
-    _bash_needmsg=yes
-  fi
-  if test "${bash_cv_have_libnsl+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5
-echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_t_open+set}" = set; then
+if test "$am_cv_func_iconv" = yes; then
+       OLDLIBS="$LIBS"
+       LIBS="$LIBS $LIBICONV"
+       
+for ac_func in locale_charset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
 
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
+{
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char t_open ();
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
 int
 main ()
 {
-t_open ();
+return f != $ac_func;
   ;
   return 0;
 }
@@ -17383,72 +17901,58 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_nsl_t_open=yes
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_nsl_t_open=no
+eval "$as_ac_var=no"
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6
-if test $ac_cv_lib_nsl_t_open = yes; then
-  bash_cv_have_libnsl=yes
-else
-  bash_cv_have_libnsl=no
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 fi
+done
 
+       LIBS="$OLDLIBS"
 fi
 
-  if test "X$_bash_needmsg" = Xyes; then
-    echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5
-echo "${ECHO_T}$bash_cv_have_libnsl" >&6
-    _bash_needmsg=
-  fi
-  if test $bash_cv_have_libnsl = yes; then
-    LIBS="-lsocket -lnsl $LIBS"
-  else
-    LIBS="-lsocket $LIBS"
-  fi
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_LIBSOCKET 1
-_ACEOF
 
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_GETPEERNAME 1
-_ACEOF
 
-fi
+if test "$opt_static_link" != yes; then
 
-fi
-if test "$ac_cv_func_gethostbyname" = no; then
-       if test "X$bash_cv_have_gethostbyname" = "X"; then
-_bash_needmsg=yes
-else
-echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5
-echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6
-_bash_needmsg=
-fi
-if test "${bash_cv_have_gethostbyname+set}" = set; then
+echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <netdb.h>
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
 int
 main ()
 {
- struct hostent *hp;
-  hp = gethostbyname("localhost");
-
+dlopen ();
   ;
   return 0;
 }
@@ -17475,78 +17979,38 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_have_gethostbyname=yes
+  ac_cv_lib_dl_dlopen=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_have_gethostbyname=no
+ac_cv_lib_dl_dlopen=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-if test "X$_bash_needmsg" = Xyes; then
-    echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5
-echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6
+LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5
-echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6
-if test "$bash_cv_have_gethostbyname" = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_GETHOSTBYNAME 1
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBDL 1
 _ACEOF
 
-fi
+  LIBS="-ldl $LIBS"
 
 fi
 
-echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-if test "${ac_cv_type_uid_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then
-  ac_cv_type_uid_t=yes
-else
-  ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6
-if test $ac_cv_type_uid_t = no; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define uid_t int
-_ACEOF
 
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define gid_t int
-_ACEOF
 
-fi
 
-echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5
-echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6
-if test "${ac_cv_type_getgroups+set}" = set; then
+for ac_func in dlopen dlclose dlsym
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_type_getgroups=cross
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -17554,82 +18018,98 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Thanks to Mike Rendell for this test.  */
-#include <sys/types.h>
-#define NGID 256
-#undef MAX
-#define MAX(x, y) ((x) > (y) ? (x) : (y))
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
 
 int
 main ()
 {
-  gid_t gidset[NGID];
-  int i, n;
-  union { gid_t gval; long lval; }  val;
-
-  val.lval = -1;
-  for (i = 0; i < NGID; i++)
-    gidset[i] = val.gval;
-  n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
-                gidset);
-  /* Exit non-zero if getgroups seems to require an array of ints.  This
-     happens when gid_t is short but getgroups modifies an array of ints.  */
-  exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0);
+return f != $ac_func;
+  ;
+  return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
+rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_getgroups=gid_t
+  eval "$as_ac_var=yes"
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-ac_cv_type_getgroups=int
+eval "$as_ac_var=no"
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-if test $ac_cv_type_getgroups = cross; then
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <unistd.h>
-
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then
-  ac_cv_type_getgroups=gid_t
-else
-  ac_cv_type_getgroups=int
 fi
-rm -f conftest*
+done
 
 fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5
-echo "${ECHO_T}$ac_cv_type_getgroups" >&6
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GETGROUPS_T $ac_cv_type_getgroups
-_ACEOF
 
-
-echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
+echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5
+echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_sys_siglist+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -17638,14 +18118,20 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+
 int
 main ()
 {
-if ((off_t *) 0)
-  return 0;
-if (sizeof (off_t))
-  return 0;
+#ifndef sys_siglist
+  char *p = (char *) sys_siglist;
+#endif
+
   ;
   return 0;
 }
@@ -17672,30 +18158,40 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_off_t=yes
+  ac_cv_have_decl_sys_siglist=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_off_t=no
+ac_cv_have_decl_sys_siglist=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-if test $ac_cv_type_off_t = yes; then
-  :
-else
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5
+echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6
+if test $ac_cv_have_decl_sys_siglist = yes; then
   
 cat >>confdefs.h <<_ACEOF
-@%:@define off_t long
+@%:@define HAVE_DECL_SYS_SIGLIST 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_SYS_SIGLIST 0
 _ACEOF
 
+
 fi
 
-echo "$as_me:$LINENO: checking for mode_t" >&5
-echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
-if test "${ac_cv_type_mode_t+set}" = set; then
+
+
+
+if test "$ac_cv_func_inet_aton" != 'yes'; then
+
+echo "$as_me:$LINENO: checking for inet_aton" >&5
+echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6
+if test "${bash_cv_func_inet_aton+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -17704,21 +18200,22 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+struct in_addr ap;
 int
 main ()
 {
-if ((mode_t *) 0)
-  return 0;
-if (sizeof (mode_t))
-  return 0;
+ inet_aton("127.0.0.1", &ap); 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17732,97 +18229,76 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_mode_t=yes
+  bash_cv_func_inet_aton=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_mode_t=no
+bash_cv_func_inet_aton=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
-echo "${ECHO_T}$ac_cv_type_mode_t" >&6
-if test $ac_cv_type_mode_t = yes; then
-  :
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define mode_t int
+echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5
+echo "${ECHO_T}$bash_cv_func_inet_aton" >&6
+if test $bash_cv_func_inet_aton = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_INET_ATON 1
 _ACEOF
 
+else
+  case $LIB@&t@OBJS in
+    "inet_aton.$ac_objext"   | \
+  *" inet_aton.$ac_objext"   | \
+    "inet_aton.$ac_objext "* | \
+  *" inet_aton.$ac_objext "* ) ;;
+  *) LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" ;;
+esac
+
 fi
 
-echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-if test "${ac_cv_type_uid_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then
-  ac_cv_type_uid_t=yes
-else
-  ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6
-if test $ac_cv_type_uid_t = no; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define uid_t int
-_ACEOF
-
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define gid_t int
-_ACEOF
-
 fi
 
-echo "$as_me:$LINENO: checking for pid_t" >&5
-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-if test "${ac_cv_type_pid_t+set}" = set; then
+case "$host_os" in
+irix4*)        
+echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5
+echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6
+if test "${ac_cv_lib_sun_getpwent+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsun  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char getpwent ();
 int
 main ()
 {
-if ((pid_t *) 0)
-  return 0;
-if (sizeof (pid_t))
-  return 0;
+getpwent ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17836,59 +18312,80 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_pid_t=yes
+  ac_cv_lib_sun_getpwent=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_pid_t=no
+ac_cv_lib_sun_getpwent=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-if test $ac_cv_type_pid_t = yes; then
-  :
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define pid_t int
+echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5
+echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6
+if test $ac_cv_lib_sun_getpwent = yes; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBSUN 1
 _ACEOF
 
+  LIBS="-lsun $LIBS"
+
 fi
+ ;;
+esac
 
-echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
+if test "$ac_cv_func_getpeername" = no; then
+       
+if test "X$bash_cv_have_socklib" = "X"; then
+_bash_needmsg=
+else
+echo "$as_me:$LINENO: checking for socket library" >&5
+echo $ECHO_N "checking for socket library... $ECHO_C" >&6
+_bash_needmsg=yes
+fi
+if test "${bash_cv_have_socklib+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5
+echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6
+if test "${ac_cv_lib_socket_getpeername+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket -lnsl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char getpeername ();
 int
 main ()
 {
-if ((size_t *) 0)
-  return 0;
-if (sizeof (size_t))
-  return 0;
+getpeername ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17902,59 +18399,82 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_size_t=yes
+  ac_cv_lib_socket_getpeername=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_size_t=no
+ac_cv_lib_socket_getpeername=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-if test $ac_cv_type_size_t = yes; then
-  :
+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6
+if test $ac_cv_lib_socket_getpeername = yes; then
+  bash_cv_have_socklib=yes
 else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned
-_ACEOF
+  bash_cv_have_socklib=no
+fi
 
 fi
 
-echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
+if test "X$_bash_needmsg" = Xyes; then
+  echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5
+echo "${ECHO_T}$bash_cv_have_socklib" >&6
+  _bash_needmsg=
+fi
+if test $bash_cv_have_socklib = yes; then
+  # check for libnsl, add it to LIBS if present
+  if test "X$bash_cv_have_libnsl" = "X"; then
+    _bash_needmsg=
+  else
+    echo "$as_me:$LINENO: checking for libnsl" >&5
+echo $ECHO_N "checking for libnsl... $ECHO_C" >&6
+    _bash_needmsg=yes
+  fi
+  if test "${bash_cv_have_libnsl+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5
+echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6
+if test "${ac_cv_lib_nsl_t_open+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char t_open ();
 int
 main ()
 {
-if ((ssize_t *) 0)
-  return 0;
-if (sizeof (ssize_t))
-  return 0;
+t_open ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -17968,59 +18488,85 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_ssize_t=yes
+  ac_cv_lib_nsl_t_open=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_ssize_t=no
+ac_cv_lib_nsl_t_open=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
-  :
+echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6
+if test $ac_cv_lib_nsl_t_open = yes; then
+  bash_cv_have_libnsl=yes
 else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define ssize_t int
+  bash_cv_have_libnsl=no
+fi
+
+fi
+
+  if test "X$_bash_needmsg" = Xyes; then
+    echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5
+echo "${ECHO_T}$bash_cv_have_libnsl" >&6
+    _bash_needmsg=
+  fi
+  if test $bash_cv_have_libnsl = yes; then
+    LIBS="-lsocket -lnsl $LIBS"
+  else
+    LIBS="-lsocket $LIBS"
+  fi
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_LIBSOCKET 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_GETPEERNAME 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for time_t" >&5
-echo $ECHO_N "checking for time_t... $ECHO_C" >&6
-if test "${ac_cv_type_time_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+if test "$ac_cv_func_gethostbyname" = no; then
+       if test "X$bash_cv_have_gethostbyname" = "X"; then
+_bash_needmsg=yes
 else
-  cat >conftest.$ac_ext <<_ACEOF
+echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5
+echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6
+_bash_needmsg=
+fi
+if test "${bash_cv_have_gethostbyname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+#include <netdb.h>
 int
 main ()
 {
-if ((time_t *) 0)
-  return 0;
-if (sizeof (time_t))
-  return 0;
+ struct hostent *hp;
+  hp = gethostbyname("localhost");
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -18034,39 +18580,84 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_time_t=yes
+  bash_cv_have_gethostbyname=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_time_t=no
+bash_cv_have_gethostbyname=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5
-echo "${ECHO_T}$ac_cv_type_time_t" >&6
-if test $ac_cv_type_time_t = yes; then
-  :
+
+if test "X$_bash_needmsg" = Xyes; then
+    echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5
+echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5
+echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6
+if test "$bash_cv_have_gethostbyname" = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_GETHOSTBYNAME 1
+_ACEOF
+
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
+echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
+if test "${ac_cv_type_uid_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define time_t long
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+
 _ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "uid_t" >/dev/null 2>&1; then
+  ac_cv_type_uid_t=yes
+else
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
 
 fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
+echo "${ECHO_T}$ac_cv_type_uid_t" >&6
+if test $ac_cv_type_uid_t = no; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define uid_t int
+_ACEOF
 
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define gid_t int
+_ACEOF
 
+fi
 
-echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${bash_cv_type_long_long+set}" = set; then
+echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5
+echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6
+if test "${ac_cv_type_getgroups+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_type_getgroups=cross
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18074,64 +18665,82 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Thanks to Mike Rendell for this test.  */
+#include <sys/types.h>
+#define NGID 256
+#undef MAX
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
 
-long long ll = 1; int i = 63;
 int
 main ()
 {
+  gid_t gidset[NGID];
+  int i, n;
+  union { gid_t gval; long lval; }  val;
 
-long long llm = (long long) -1;
-return ll << i | ll >> i | llm / ll | llm % ll;
-
-  ;
-  return 0;
+  val.lval = -1;
+  for (i = 0; i < NGID; i++)
+    gidset[i] = val.gval;
+  n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
+                gidset);
+  /* Exit non-zero if getgroups seems to require an array of ints.  This
+     happens when gid_t is short but getgroups modifies an array of ints.  */
+  exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0);
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+  (eval $ac_link) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_long_long='long long'
+  ac_cv_type_getgroups=gid_t
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_type_long_long='long'
+( exit $ac_status )
+ac_cv_type_getgroups=int
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5
-echo "${ECHO_T}$bash_cv_type_long_long" >&6
-if test "$bash_cv_type_long_long" = 'long long'; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_LONG_LONG 1
+if test $ac_cv_type_getgroups = cross; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+
 _ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then
+  ac_cv_type_getgroups=gid_t
+else
+  ac_cv_type_getgroups=int
+fi
+rm -f conftest*
 
 fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5
+echo "${ECHO_T}$ac_cv_type_getgroups" >&6
 
+cat >>confdefs.h <<_ACEOF
+@%:@define GETGROUPS_T $ac_cv_type_getgroups
+_ACEOF
 
-echo "$as_me:$LINENO: checking for unsigned long long" >&5
-echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6
-if test "${bash_cv_type_unsigned_long_long+set}" = set; then
+
+echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6
+if test "${ac_cv_type_off_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -18140,22 +18749,21 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-unsigned long long ull = 1; int i = 63;
+$ac_includes_default
 int
 main ()
 {
-
-unsigned long long ullmax = (unsigned long long) -1;
-return ull << i | ull >> i | ullmax / ull | ullmax % ull;
-
+if ((off_t *) 0)
+  return 0;
+if (sizeof (off_t))
+  return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -18169,35 +18777,36 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_unsigned_long_long='unsigned long long'
+  ac_cv_type_off_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_type_unsigned_long_long='unsigned long'
+ac_cv_type_off_t=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5
-echo "${ECHO_T}$bash_cv_type_unsigned_long_long" >&6
-if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_UNSIGNED_LONG_LONG 1
+echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6
+if test $ac_cv_type_off_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define off_t long
 _ACEOF
 
 fi
 
-
-echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
+echo "$as_me:$LINENO: checking for mode_t" >&5
+echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
+if test "${ac_cv_type_mode_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -18206,21 +18815,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
+$ac_includes_default
 int
 main ()
 {
-int i;
+if ((mode_t *) 0)
+  return 0;
+if (sizeof (mode_t))
+  return 0;
   ;
   return 0;
 }
@@ -18247,27 +18849,68 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_signal=void
+  ac_cv_type_mode_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_signal=int
+ac_cv_type_mode_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
-
+echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+echo "${ECHO_T}$ac_cv_type_mode_t" >&6
+if test $ac_cv_type_mode_t = yes; then
+  :
+else
+  
 cat >>confdefs.h <<_ACEOF
-@%:@define RETSIGTYPE $ac_cv_type_signal
+@%:@define mode_t int
 _ACEOF
 
+fi
 
+echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
+echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
+if test "${ac_cv_type_uid_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
 
-echo "$as_me:$LINENO: checking for char" >&5
-echo $ECHO_N "checking for char... $ECHO_C" >&6
-if test "${ac_cv_type_char+set}" = set; then
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "uid_t" >/dev/null 2>&1; then
+  ac_cv_type_uid_t=yes
+else
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
+echo "${ECHO_T}$ac_cv_type_uid_t" >&6
+if test $ac_cv_type_uid_t = no; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define uid_t int
+_ACEOF
+
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define gid_t int
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for pid_t" >&5
+echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
+if test "${ac_cv_type_pid_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -18280,9 +18923,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((char *) 0)
+if ((pid_t *) 0)
   return 0;
-if (sizeof (char))
+if (sizeof (pid_t))
   return 0;
   ;
   return 0;
@@ -18310,31 +18953,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_char=yes
+  ac_cv_type_pid_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_char=no
+ac_cv_type_pid_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
-echo "${ECHO_T}$ac_cv_type_char" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+echo "${ECHO_T}$ac_cv_type_pid_t" >&6
+if test $ac_cv_type_pid_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define pid_t int
+_ACEOF
 
-echo "$as_me:$LINENO: checking size of char" >&5
-echo $ECHO_N "checking size of char... $ECHO_C" >&6
-if test "${ac_cv_sizeof_char+set}" = set; then
+fi
+
+echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_char" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18344,9 +18989,10 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= 0)@:>@;
-test_array @<:@0@:>@ = 0
-
+if ((size_t *) 0)
+  return 0;
+if (sizeof (size_t))
+  return 0;
   ;
   return 0;
 }
@@ -18373,9 +19019,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_size_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define size_t unsigned
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
+if test "${ac_cv_type_ssize_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18385,9 +19055,10 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
-
+if ((ssize_t *) 0)
+  return 0;
+if (sizeof (ssize_t))
+  return 0;
   ;
   return 0;
 }
@@ -18414,25 +19085,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
+  ac_cv_type_ssize_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr $ac_mid + 1`
-                   if test $ac_lo -le $ac_mid; then
-                     ac_lo= ac_hi=
-                     break
-                   fi
-                   ac_mid=`expr 2 '*' $ac_mid + 1`
+ac_cv_type_ssize_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
+echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
+if test $ac_cv_type_ssize_t = yes; then
+  :
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define ssize_t int
+_ACEOF
 
-cat >conftest.$ac_ext <<_ACEOF
+fi
+
+echo "$as_me:$LINENO: checking for time_t" >&5
+echo $ECHO_N "checking for time_t... $ECHO_C" >&6
+if test "${ac_cv_type_time_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18442,9 +19121,10 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) < 0)@:>@;
-test_array @<:@0@:>@ = 0
-
+if ((time_t *) 0)
+  return 0;
+if (sizeof (time_t))
+  return 0;
   ;
   return 0;
 }
@@ -18471,28 +19151,56 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
+  ac_cv_type_time_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_time_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5
+echo "${ECHO_T}$ac_cv_type_time_t" >&6
+if test $ac_cv_type_time_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define time_t long
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for long long" >&5
+echo $ECHO_N "checking for long long... $ECHO_C" >&6
+if test "${bash_cv_type_long_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+long long ll = 1; int i = 63;
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
+
+long long llm = (long long) -1;
+return ll << i | ll >> i | llm / ll | llm % ll;
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -18506,55 +19214,128 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
+  bash_cv_type_long_long='long long'
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_hi=`expr '(' $ac_mid ')' - 1`
-                      if test $ac_mid -le $ac_hi; then
-                        ac_lo= ac_hi=
-                        break
-                      fi
-                      ac_mid=`expr 2 '*' $ac_mid`
+bash_cv_type_long_long='long'
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5
+echo "${ECHO_T}$bash_cv_type_long_long" >&6
+if test "$bash_cv_type_long_long" = 'long long'; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_LONG_LONG 1
+_ACEOF
+
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+
+
+echo "$as_me:$LINENO: checking for unsigned long long" >&5
+echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6
+if test "${bash_cv_type_unsigned_long_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+
+unsigned long long ull = 1; int i = 63;
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
+
+unsigned long long ullmax = (unsigned long long) -1;
+return ull << i | ull >> i | ullmax / ull | ullmax % ull;
 
   ;
   return 0;
 }
 _ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_type_unsigned_long_long='unsigned long long'
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_type_unsigned_long_long='unsigned long'
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5
+echo "${ECHO_T}$bash_cv_type_unsigned_long_long" >&6
+if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_UNSIGNED_LONG_LONG 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+# undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>conftest.er1
@@ -18577,30 +19358,27 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
+  ac_cv_type_signal=void
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
+ac_cv_type_signal=int
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_char=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
+
+cat >>confdefs.h <<_ACEOF
+@%:@define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for sig_atomic_t in signal.h" >&5
+echo $ECHO_N "checking for sig_atomic_t in signal.h... $ECHO_C" >&6
+if test "${ac_cv_have_sig_atomic_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18608,80 +19386,125 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (char)); }
-unsigned long ulongval () { return (long) (sizeof (char)); }
-@%:@include <stdio.h>
-@%:@include <stdlib.h>
+
+#include <signal.h>
+
 int
 main ()
 {
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (char))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (char))))
-       exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (char))))
-       exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
+ sig_atomic_t x; 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
+rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_char=`cat conftest.val`
+  ac_cv_have_sig_atomic_t=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ac_cv_have_sig_atomic_t=no
 fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-rm -f conftest.val
+echo "$as_me:$LINENO: result: $ac_cv_have_sig_atomic_t" >&5
+echo "${ECHO_T}$ac_cv_have_sig_atomic_t" >&6
+if test "$ac_cv_have_sig_atomic_t" = "no"
+then
+    echo "$as_me:$LINENO: checking for sig_atomic_t" >&5
+echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6
+if test "${ac_cv_type_sig_atomic_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_cv_sizeof_char=0
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((sig_atomic_t *) 0)
+  return 0;
+if (sizeof (sig_atomic_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_sig_atomic_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_sig_atomic_t=no
 fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
-echo "${ECHO_T}$ac_cv_sizeof_char" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5
+echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6
+if test $ac_cv_type_sig_atomic_t = yes; then
+  :
+else
+  
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_CHAR $ac_cv_sizeof_char
+@%:@define sig_atomic_t int
 _ACEOF
 
+fi
 
-echo "$as_me:$LINENO: checking for short" >&5
-echo $ECHO_N "checking for short... $ECHO_C" >&6
-if test "${ac_cv_type_short+set}" = set; then
+fi
+
+
+echo "$as_me:$LINENO: checking for char" >&5
+echo $ECHO_N "checking for char... $ECHO_C" >&6
+if test "${ac_cv_type_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -18694,9 +19517,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((short *) 0)
+if ((char *) 0)
   return 0;
-if (sizeof (short))
+if (sizeof (char))
   return 0;
   ;
   return 0;
@@ -18724,24 +19547,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_short=yes
+  ac_cv_type_char=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_short=no
+ac_cv_type_char=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
-echo "${ECHO_T}$ac_cv_type_short" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
+echo "${ECHO_T}$ac_cv_type_char" >&6
 
-echo "$as_me:$LINENO: checking size of short" >&5
-echo $ECHO_N "checking size of short... $ECHO_C" >&6
-if test "${ac_cv_sizeof_short+set}" = set; then
+echo "$as_me:$LINENO: checking size of char" >&5
+echo $ECHO_N "checking size of char... $ECHO_C" >&6
+if test "${ac_cv_sizeof_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_short" = yes; then
+  if test "$ac_cv_type_char" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -18758,7 +19581,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -18799,7 +19622,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -18856,7 +19679,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -18897,7 +19720,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -18962,7 +19785,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_short=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+?*) ac_cv_sizeof_char=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
+echo "$as_me: error: cannot compute sizeof (char), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -19023,8 +19846,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (short)); }
-unsigned long ulongval () { return (long) (sizeof (short)); }
+long longval () { return (long) (sizeof (char)); }
+unsigned long ulongval () { return (long) (sizeof (char)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -19034,17 +19857,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (short))) < 0)
+  if (((long) (sizeof (char))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (short))))
+      if (i != ((long) (sizeof (char))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (short))))
+      if (i != ((long) (sizeof (char))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -19065,16 +19888,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_short=`cat conftest.val`
+  ac_cv_sizeof_char=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
+echo "$as_me: error: cannot compute sizeof (char), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_short=0
+  ac_cv_sizeof_char=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
-echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
+echo "${ECHO_T}$ac_cv_sizeof_char" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
+@%:@define SIZEOF_CHAR $ac_cv_sizeof_char
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for int" >&5
-echo $ECHO_N "checking for int... $ECHO_C" >&6
-if test "${ac_cv_type_int+set}" = set; then
+echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -19108,9 +19931,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((int *) 0)
+if ((short *) 0)
   return 0;
-if (sizeof (int))
+if (sizeof (short))
   return 0;
   ;
   return 0;
@@ -19138,24 +19961,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_int=yes
+  ac_cv_type_short=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_int=no
+ac_cv_type_short=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
-echo "${ECHO_T}$ac_cv_type_int" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
 
-echo "$as_me:$LINENO: checking size of int" >&5
-echo $ECHO_N "checking size of int... $ECHO_C" >&6
-if test "${ac_cv_sizeof_int+set}" = set; then
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_int" = yes; then
+  if test "$ac_cv_type_short" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -19172,7 +19995,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19213,7 +20036,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19270,7 +20093,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19311,7 +20134,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19376,7 +20199,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_int=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
+echo "$as_me: error: cannot compute sizeof (short), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -19437,8 +20260,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (int)); }
-unsigned long ulongval () { return (long) (sizeof (int)); }
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -19448,17 +20271,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (int))) < 0)
+  if (((long) (sizeof (short))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (int))))
+      if (i != ((long) (sizeof (short))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (int))))
+      if (i != ((long) (sizeof (short))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -19479,16 +20302,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_int=`cat conftest.val`
+  ac_cv_sizeof_short=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
+echo "$as_me: error: cannot compute sizeof (short), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_int=0
+  ac_cv_sizeof_short=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_INT $ac_cv_sizeof_int
+@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for long" >&5
-echo $ECHO_N "checking for long... $ECHO_C" >&6
-if test "${ac_cv_type_long+set}" = set; then
+echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -19522,9 +20345,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((long *) 0)
+if ((int *) 0)
   return 0;
-if (sizeof (long))
+if (sizeof (int))
   return 0;
   ;
   return 0;
@@ -19552,24 +20375,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_long=yes
+  ac_cv_type_int=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_long=no
+ac_cv_type_int=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
-echo "${ECHO_T}$ac_cv_type_long" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
 
-echo "$as_me:$LINENO: checking size of long" >&5
-echo $ECHO_N "checking size of long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long+set}" = set; then
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_long" = yes; then
+  if test "$ac_cv_type_int" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -19586,7 +20409,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19627,7 +20450,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19684,7 +20507,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19725,7 +20548,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -19790,7 +20613,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
+echo "$as_me: error: cannot compute sizeof (int), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -19851,8 +20674,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (long)); }
-unsigned long ulongval () { return (long) (sizeof (long)); }
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -19862,17 +20685,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (long))) < 0)
+  if (((long) (sizeof (int))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (long))))
+      if (i != ((long) (sizeof (int))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (long))))
+      if (i != ((long) (sizeof (int))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -19893,16 +20716,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_long=`cat conftest.val`
+  ac_cv_sizeof_int=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
+echo "$as_me: error: cannot compute sizeof (int), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_long=0
+  ac_cv_sizeof_int=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_LONG $ac_cv_sizeof_long
+@%:@define SIZEOF_INT $ac_cv_sizeof_int
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for char *" >&5
-echo $ECHO_N "checking for char *... $ECHO_C" >&6
-if test "${ac_cv_type_char_p+set}" = set; then
+echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -19936,9 +20759,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((char * *) 0)
+if ((long *) 0)
   return 0;
-if (sizeof (char *))
+if (sizeof (long))
   return 0;
   ;
   return 0;
@@ -19966,24 +20789,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_char_p=yes
+  ac_cv_type_long=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_char_p=no
+ac_cv_type_long=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5
-echo "${ECHO_T}$ac_cv_type_char_p" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
 
-echo "$as_me:$LINENO: checking size of char *" >&5
-echo $ECHO_N "checking size of char *... $ECHO_C" >&6
-if test "${ac_cv_sizeof_char_p+set}" = set; then
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_char_p" = yes; then
+  if test "$ac_cv_type_long" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -20000,7 +20823,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20041,7 +20864,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20098,7 +20921,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20139,7 +20962,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20204,7 +21027,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_char_p=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char *), 77
+echo "$as_me: error: cannot compute sizeof (long), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -20265,8 +21088,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (char *)); }
-unsigned long ulongval () { return (long) (sizeof (char *)); }
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -20276,17 +21099,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (char *))) < 0)
+  if (((long) (sizeof (long))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (char *))))
+      if (i != ((long) (sizeof (long))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (char *))))
+      if (i != ((long) (sizeof (long))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -20307,16 +21130,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_char_p=`cat conftest.val`
+  ac_cv_sizeof_long=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char *), 77
+echo "$as_me: error: cannot compute sizeof (long), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_char_p=0
+  ac_cv_sizeof_long=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5
-echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
+@%:@define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for double" >&5
-echo $ECHO_N "checking for double... $ECHO_C" >&6
-if test "${ac_cv_type_double+set}" = set; then
+echo "$as_me:$LINENO: checking for char *" >&5
+echo $ECHO_N "checking for char *... $ECHO_C" >&6
+if test "${ac_cv_type_char_p+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -20350,9 +21173,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((double *) 0)
+if ((char * *) 0)
   return 0;
-if (sizeof (double))
+if (sizeof (char *))
   return 0;
   ;
   return 0;
@@ -20380,24 +21203,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_double=yes
+  ac_cv_type_char_p=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_double=no
+ac_cv_type_char_p=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5
-echo "${ECHO_T}$ac_cv_type_double" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5
+echo "${ECHO_T}$ac_cv_type_char_p" >&6
 
-echo "$as_me:$LINENO: checking size of double" >&5
-echo $ECHO_N "checking size of double... $ECHO_C" >&6
-if test "${ac_cv_sizeof_double+set}" = set; then
+echo "$as_me:$LINENO: checking size of char *" >&5
+echo $ECHO_N "checking size of char *... $ECHO_C" >&6
+if test "${ac_cv_sizeof_char_p+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_double" = yes; then
+  if test "$ac_cv_type_char_p" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -20414,7 +21237,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20455,7 +21278,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20512,7 +21335,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20553,7 +21376,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20618,7 +21441,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_double=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+?*) ac_cv_sizeof_char_p=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (double), 77
+echo "$as_me: error: cannot compute sizeof (char *), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -20679,8 +21502,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (double)); }
-unsigned long ulongval () { return (long) (sizeof (double)); }
+long longval () { return (long) (sizeof (char *)); }
+unsigned long ulongval () { return (long) (sizeof (char *)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -20690,17 +21513,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (double))) < 0)
+  if (((long) (sizeof (char *))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (double))))
+      if (i != ((long) (sizeof (char *))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (double))))
+      if (i != ((long) (sizeof (char *))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -20721,16 +21544,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_double=`cat conftest.val`
+  ac_cv_sizeof_char_p=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (double), 77
+echo "$as_me: error: cannot compute sizeof (char *), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_double=0
+  ac_cv_sizeof_char_p=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
-echo "${ECHO_T}$ac_cv_sizeof_double" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5
+echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
+@%:@define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${ac_cv_type_long_long+set}" = set; then
+echo "$as_me:$LINENO: checking for double" >&5
+echo $ECHO_N "checking for double... $ECHO_C" >&6
+if test "${ac_cv_type_double+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -20764,9 +21587,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((long long *) 0)
+if ((double *) 0)
   return 0;
-if (sizeof (long long))
+if (sizeof (double))
   return 0;
   ;
   return 0;
@@ -20794,24 +21617,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_long_long=yes
+  ac_cv_type_double=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_long_long=no
+ac_cv_type_double=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6
+echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5
+echo "${ECHO_T}$ac_cv_type_double" >&6
 
-echo "$as_me:$LINENO: checking size of long long" >&5
-echo $ECHO_N "checking size of long long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long_long+set}" = set; then
+echo "$as_me:$LINENO: checking size of double" >&5
+echo $ECHO_N "checking size of double... $ECHO_C" >&6
+if test "${ac_cv_sizeof_double+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test "$ac_cv_type_long_long" = yes; then
+  if test "$ac_cv_type_double" = yes; then
   # The cast to unsigned long works around a bug in the HP C Compiler
   # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
   # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -20828,7 +21651,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20869,7 +21692,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20926,7 +21749,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) < 0)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) < 0)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -20967,7 +21790,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
@@ -21032,7 +21855,7 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@;
 test_array @<:@0@:>@ = 0
 
   ;
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 case $ac_lo in
-?*) ac_cv_sizeof_long_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+?*) ac_cv_sizeof_double=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
+echo "$as_me: error: cannot compute sizeof (double), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
@@ -21093,8 +21916,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-long longval () { return (long) (sizeof (long long)); }
-unsigned long ulongval () { return (long) (sizeof (long long)); }
+long longval () { return (long) (sizeof (double)); }
+unsigned long ulongval () { return (long) (sizeof (double)); }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>
 int
@@ -21104,17 +21927,17 @@ main ()
   FILE *f = fopen ("conftest.val", "w");
   if (! f)
     exit (1);
-  if (((long) (sizeof (long long))) < 0)
+  if (((long) (sizeof (double))) < 0)
     {
       long i = longval ();
-      if (i != ((long) (sizeof (long long))))
+      if (i != ((long) (sizeof (double))))
        exit (1);
       fprintf (f, "%ld\n", i);
     }
   else
     {
       unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (long long))))
+      if (i != ((long) (sizeof (double))))
        exit (1);
       fprintf (f, "%lu\n", i);
     }
@@ -21135,16 +21958,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_sizeof_long_long=`cat conftest.val`
+  ac_cv_sizeof_double=`cat conftest.val`
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
 See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
+echo "$as_me: error: cannot compute sizeof (double), 77
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 fi
 fi
 rm -f conftest.val
 else
-  ac_cv_sizeof_long_long=0
+  ac_cv_sizeof_double=0
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
+echo "${ECHO_T}$ac_cv_sizeof_double" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
 _ACEOF
 
 
-
-echo "$as_me:$LINENO: checking for u_int" >&5
-echo $ECHO_N "checking for u_int... $ECHO_C" >&6
-if test "${ac_cv_type_u_int+set}" = set; then
+echo "$as_me:$LINENO: checking for long long" >&5
+echo $ECHO_N "checking for long long... $ECHO_C" >&6
+if test "${ac_cv_type_long_long+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21179,9 +22001,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_int *) 0)
+if ((long long *) 0)
   return 0;
-if (sizeof (u_int))
+if (sizeof (long long))
   return 0;
   ;
   return 0;
@@ -21209,33 +22031,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_int=yes
+  ac_cv_type_long_long=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_int=no
+ac_cv_type_long_long=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5
-echo "${ECHO_T}$ac_cv_type_u_int" >&6
-if test $ac_cv_type_u_int = yes; then
-  :
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define u_int unsigned int
-_ACEOF
-
-fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
+echo "${ECHO_T}$ac_cv_type_long_long" >&6
 
-echo "$as_me:$LINENO: checking for u_long" >&5
-echo $ECHO_N "checking for u_long... $ECHO_C" >&6
-if test "${ac_cv_type_u_long+set}" = set; then
+echo "$as_me:$LINENO: checking size of long long" >&5
+echo $ECHO_N "checking size of long long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long_long+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  if test "$ac_cv_type_long_long" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -21245,10 +22065,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_long *) 0)
-  return 0;
-if (sizeof (u_long))
-  return 0;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= 0)@:>@;
+test_array @<:@0@:>@ = 0
+
   ;
   return 0;
 }
@@ -21275,36 +22094,9 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_long=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_u_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5
-echo "${ECHO_T}$ac_cv_type_u_long" >&6
-if test $ac_cv_type_u_long = yes; then
-  :
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define u_long unsigned long
-_ACEOF
-
-fi
-
-
-
-if test "$ac_cv_sizeof_short" = 2; then
-  echo "$as_me:$LINENO: checking for bits16_t" >&5
-echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -21314,10 +22106,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits16_t *) 0)
-  return 0;
-if (sizeof (bits16_t))
-  return 0;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
   ;
   return 0;
 }
@@ -21344,34 +22135,25 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits16_t=yes
+  ac_hi=$ac_mid; break
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits16_t=no
+ac_lo=`expr $ac_mid + 1`
+                   if test $ac_lo -le $ac_mid; then
+                     ac_lo= ac_hi=
+                     break
+                   fi
+                   ac_mid=`expr 2 '*' $ac_mid + 1`
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
-if test $ac_cv_type_bits16_t = yes; then
-  :
+  done
 else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define bits16_t short
-_ACEOF
-
-fi
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-elif test "$ac_cv_sizeof_char" = 2; then
-  echo "$as_me:$LINENO: checking for bits16_t" >&5
-echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -21381,10 +22163,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits16_t *) 0)
-  return 0;
-if (sizeof (bits16_t))
-  return 0;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) < 0)@:>@;
+test_array @<:@0@:>@ = 0
+
   ;
   return 0;
 }
@@ -21411,35 +22192,10 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits16_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_bits16_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
-if test $ac_cv_type_bits16_t = yes; then
-  :
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define bits16_t char
-_ACEOF
-
-fi
-
-else
-  echo "$as_me:$LINENO: checking for bits16_t" >&5
-echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
@@ -21448,10 +22204,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits16_t *) 0)
-  return 0;
-if (sizeof (bits16_t))
-  return 0;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
   ;
   return 0;
 }
@@ -21478,36 +22233,32 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits16_t=yes
+  ac_lo=$ac_mid; break
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits16_t=no
+ac_hi=`expr '(' $ac_mid ')' - 1`
+                      if test $ac_mid -le $ac_hi; then
+                        ac_lo= ac_hi=
+                        break
+                      fi
+                      ac_mid=`expr 2 '*' $ac_mid`
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
-if test $ac_cv_type_bits16_t = yes; then
-  :
+  done
 else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define bits16_t short
-_ACEOF
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_lo= ac_hi=
 fi
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-
-if test "$ac_cv_sizeof_short" = 2; then
-  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
-echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -21518,10 +22269,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits16_t *) 0)
-  return 0;
-if (sizeof (u_bits16_t))
-  return 0;
+static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
   ;
   return 0;
 }
@@ -21548,31 +22298,112 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits16_t=yes
+  ac_hi=$ac_mid
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits16_t=no
+ac_lo=`expr '(' $ac_mid ')' + 1`
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (long long)); }
+unsigned long ulongval () { return (long) (sizeof (long long)); }
+@%:@include <stdio.h>
+@%:@include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (long long))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (long long))))
+       exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (long long))))
+       exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long_long=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long long), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
-if test $ac_cv_type_u_bits16_t = yes; then
-  :
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
 else
-  
+  ac_cv_sizeof_long_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits16_t unsigned short
+@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
 _ACEOF
 
-fi
 
-elif test "$ac_cv_sizeof_char" = 2; then
-  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
-echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits16_t+set}" = set; then
+
+echo "$as_me:$LINENO: checking for u_int" >&5
+echo $ECHO_N "checking for u_int... $ECHO_C" >&6
+if test "${ac_cv_type_u_int+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21585,9 +22416,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits16_t *) 0)
+if ((u_int *) 0)
   return 0;
-if (sizeof (u_bits16_t))
+if (sizeof (u_int))
   return 0;
   ;
   return 0;
@@ -21615,31 +22446,30 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits16_t=yes
+  ac_cv_type_u_int=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits16_t=no
+ac_cv_type_u_int=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
-if test $ac_cv_type_u_bits16_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5
+echo "${ECHO_T}$ac_cv_type_u_int" >&6
+if test $ac_cv_type_u_int = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits16_t unsigned char
+@%:@define u_int unsigned int
 _ACEOF
 
 fi
 
-else
-  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
-echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits16_t+set}" = set; then
+echo "$as_me:$LINENO: checking for u_long" >&5
+echo $ECHO_N "checking for u_long... $ECHO_C" >&6
+if test "${ac_cv_type_u_long+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21652,9 +22482,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits16_t *) 0)
+if ((u_long *) 0)
   return 0;
-if (sizeof (u_bits16_t))
+if (sizeof (u_long))
   return 0;
   ;
   return 0;
@@ -21682,34 +22512,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits16_t=yes
+  ac_cv_type_u_long=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits16_t=no
+ac_cv_type_u_long=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
-if test $ac_cv_type_u_bits16_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5
+echo "${ECHO_T}$ac_cv_type_u_long" >&6
+if test $ac_cv_type_u_long = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits16_t unsigned short
+@%:@define u_long unsigned long
 _ACEOF
 
 fi
 
-fi
 
 
-if test "$ac_cv_sizeof_int" = 4; then
-  echo "$as_me:$LINENO: checking for bits32_t" >&5
-echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits32_t+set}" = set; then
+if test "$ac_cv_sizeof_short" = 2; then
+  echo "$as_me:$LINENO: checking for bits16_t" >&5
+echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits16_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21722,9 +22551,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits32_t *) 0)
+if ((bits16_t *) 0)
   return 0;
-if (sizeof (bits32_t))
+if (sizeof (bits16_t))
   return 0;
   ;
   return 0;
@@ -21752,31 +22581,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits32_t=yes
+  ac_cv_type_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits32_t=no
+ac_cv_type_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
-if test $ac_cv_type_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
+if test $ac_cv_type_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits32_t int
+@%:@define bits16_t short
 _ACEOF
 
 fi
 
-elif test "$ac_cv_sizeof_long" = 4; then
-  echo "$as_me:$LINENO: checking for bits32_t" >&5
-echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits32_t+set}" = set; then
+elif test "$ac_cv_sizeof_char" = 2; then
+  echo "$as_me:$LINENO: checking for bits16_t" >&5
+echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits16_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21789,9 +22618,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits32_t *) 0)
+if ((bits16_t *) 0)
   return 0;
-if (sizeof (bits32_t))
+if (sizeof (bits16_t))
   return 0;
   ;
   return 0;
@@ -21819,32 +22648,32 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits32_t=yes
+  ac_cv_type_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits32_t=no
+ac_cv_type_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
-if test $ac_cv_type_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
+if test $ac_cv_type_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits32_t long
+@%:@define bits16_t char
 _ACEOF
 
 fi
 
 else
-  echo "$as_me:$LINENO: checking for bits32_t" >&5
-echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  echo "$as_me:$LINENO: checking for bits16_t" >&5
+echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits16_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -21856,9 +22685,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits32_t *) 0)
+if ((bits16_t *) 0)
   return 0;
-if (sizeof (bits32_t))
+if (sizeof (bits16_t))
   return 0;
   ;
   return 0;
@@ -21886,23 +22715,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits32_t=yes
+  ac_cv_type_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits32_t=no
+ac_cv_type_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
-if test $ac_cv_type_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits16_t" >&6
+if test $ac_cv_type_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits32_t int
+@%:@define bits16_t short
 _ACEOF
 
 fi
 fi
 
 
-if test "$ac_cv_sizeof_int" = 4; then
-  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
-echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits32_t+set}" = set; then
+if test "$ac_cv_sizeof_short" = 2; then
+  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
+echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits16_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21926,9 +22755,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits32_t *) 0)
+if ((u_bits16_t *) 0)
   return 0;
-if (sizeof (u_bits32_t))
+if (sizeof (u_bits16_t))
   return 0;
   ;
   return 0;
@@ -21956,31 +22785,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits32_t=yes
+  ac_cv_type_u_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits32_t=no
+ac_cv_type_u_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
-if test $ac_cv_type_u_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
+if test $ac_cv_type_u_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits32_t unsigned int
+@%:@define u_bits16_t unsigned short
 _ACEOF
 
 fi
 
-elif test "$ac_cv_sizeof_long" = 4; then
-  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
-echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits32_t+set}" = set; then
+elif test "$ac_cv_sizeof_char" = 2; then
+  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
+echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits16_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -21993,9 +22822,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits32_t *) 0)
+if ((u_bits16_t *) 0)
   return 0;
-if (sizeof (u_bits32_t))
+if (sizeof (u_bits16_t))
   return 0;
   ;
   return 0;
@@ -22023,31 +22852,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits32_t=yes
+  ac_cv_type_u_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits32_t=no
+ac_cv_type_u_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
-if test $ac_cv_type_u_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
+if test $ac_cv_type_u_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits32_t unsigned long
+@%:@define u_bits16_t unsigned char
 _ACEOF
 
 fi
 
 else
-  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
-echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_bits32_t+set}" = set; then
+  echo "$as_me:$LINENO: checking for u_bits16_t" >&5
+echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits16_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22060,9 +22889,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((u_bits32_t *) 0)
+if ((u_bits16_t *) 0)
   return 0;
-if (sizeof (u_bits32_t))
+if (sizeof (u_bits16_t))
   return 0;
   ;
   return 0;
@@ -22090,23 +22919,23 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_u_bits32_t=yes
+  ac_cv_type_u_bits16_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_bits32_t=no
+ac_cv_type_u_bits16_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
-if test $ac_cv_type_u_bits32_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6
+if test $ac_cv_type_u_bits16_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define u_bits32_t unsigned int
+@%:@define u_bits16_t unsigned short
 _ACEOF
 
 fi
 fi
 
 
-if test "$ac_cv_sizeof_char_p" = 8; then
-  echo "$as_me:$LINENO: checking for bits64_t" >&5
-echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits64_t+set}" = set; then
+if test "$ac_cv_sizeof_int" = 4; then
+  echo "$as_me:$LINENO: checking for bits32_t" >&5
+echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22130,9 +22959,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits64_t *) 0)
+if ((bits32_t *) 0)
   return 0;
-if (sizeof (bits64_t))
+if (sizeof (bits32_t))
   return 0;
   ;
   return 0;
@@ -22160,31 +22989,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits64_t=yes
+  ac_cv_type_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits64_t=no
+ac_cv_type_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
-if test $ac_cv_type_bits64_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
+if test $ac_cv_type_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits64_t char *
+@%:@define bits32_t int
 _ACEOF
 
 fi
 
-elif test "$ac_cv_sizeof_double" = 8; then
-  echo "$as_me:$LINENO: checking for bits64_t" >&5
-echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits64_t+set}" = set; then
+elif test "$ac_cv_sizeof_long" = 4; then
+  echo "$as_me:$LINENO: checking for bits32_t" >&5
+echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22197,9 +23026,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits64_t *) 0)
+if ((bits32_t *) 0)
   return 0;
-if (sizeof (bits64_t))
+if (sizeof (bits32_t))
   return 0;
   ;
   return 0;
@@ -22227,31 +23056,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits64_t=yes
+  ac_cv_type_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits64_t=no
+ac_cv_type_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
-if test $ac_cv_type_bits64_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
+if test $ac_cv_type_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits64_t double
+@%:@define bits32_t long
 _ACEOF
 
 fi
 
-elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
-  echo "$as_me:$LINENO: checking for bits64_t" >&5
-echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits64_t+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for bits32_t" >&5
+echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22264,9 +23093,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits64_t *) 0)
+if ((bits32_t *) 0)
   return 0;
-if (sizeof (bits64_t))
+if (sizeof (bits32_t))
   return 0;
   ;
   return 0;
@@ -22294,31 +23123,34 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits64_t=yes
+  ac_cv_type_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits64_t=no
+ac_cv_type_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
-if test $ac_cv_type_bits64_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits32_t" >&6
+if test $ac_cv_type_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits64_t long long
+@%:@define bits32_t int
 _ACEOF
 
 fi
 
-elif test "$ac_cv_sizeof_long" = 8; then
-  echo "$as_me:$LINENO: checking for bits64_t" >&5
-echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits64_t+set}" = set; then
+fi
+
+
+if test "$ac_cv_sizeof_int" = 4; then
+  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
+echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22331,9 +23163,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits64_t *) 0)
+if ((u_bits32_t *) 0)
   return 0;
-if (sizeof (bits64_t))
+if (sizeof (u_bits32_t))
   return 0;
   ;
   return 0;
@@ -22361,31 +23193,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits64_t=yes
+  ac_cv_type_u_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits64_t=no
+ac_cv_type_u_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
-if test $ac_cv_type_bits64_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
+if test $ac_cv_type_u_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits64_t long
+@%:@define u_bits32_t unsigned int
 _ACEOF
 
 fi
 
-else
-  echo "$as_me:$LINENO: checking for bits64_t" >&5
-echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
-if test "${ac_cv_type_bits64_t+set}" = set; then
+elif test "$ac_cv_sizeof_long" = 4; then
+  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
+echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22398,9 +23230,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((bits64_t *) 0)
+if ((u_bits32_t *) 0)
   return 0;
-if (sizeof (bits64_t))
+if (sizeof (u_bits32_t))
   return 0;
   ;
   return 0;
@@ -22428,35 +23260,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_bits64_t=yes
+  ac_cv_type_u_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_bits64_t=no
+ac_cv_type_u_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
-echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
-if test $ac_cv_type_bits64_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
+if test $ac_cv_type_u_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define bits64_t double
+@%:@define u_bits32_t unsigned long
 _ACEOF
 
 fi
 
-fi
-
-
-
-if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
-  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for u_bits32_t" >&5
+echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6
+if test "${ac_cv_type_u_bits32_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22469,9 +23297,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((ptrdiff_t *) 0)
+if ((u_bits32_t *) 0)
   return 0;
-if (sizeof (ptrdiff_t))
+if (sizeof (u_bits32_t))
   return 0;
   ;
   return 0;
@@ -22499,31 +23327,34 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_ptrdiff_t=yes
+  ac_cv_type_u_bits32_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_ptrdiff_t=no
+ac_cv_type_u_bits32_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
-if test $ac_cv_type_ptrdiff_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6
+if test $ac_cv_type_u_bits32_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define ptrdiff_t int
+@%:@define u_bits32_t unsigned int
 _ACEOF
 
 fi
 
-elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
-  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+fi
+
+
+if test "$ac_cv_sizeof_char_p" = 8; then
+  echo "$as_me:$LINENO: checking for bits64_t" >&5
+echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits64_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22536,9 +23367,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((ptrdiff_t *) 0)
+if ((bits64_t *) 0)
   return 0;
-if (sizeof (ptrdiff_t))
+if (sizeof (bits64_t))
   return 0;
   ;
   return 0;
@@ -22566,31 +23397,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_ptrdiff_t=yes
+  ac_cv_type_bits64_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_ptrdiff_t=no
+ac_cv_type_bits64_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
-if test $ac_cv_type_ptrdiff_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
+if test $ac_cv_type_bits64_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define ptrdiff_t long
+@%:@define bits64_t char *
 _ACEOF
 
 fi
 
-elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
-  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+elif test "$ac_cv_sizeof_double" = 8; then
+  echo "$as_me:$LINENO: checking for bits64_t" >&5
+echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits64_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22603,9 +23434,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((ptrdiff_t *) 0)
+if ((bits64_t *) 0)
   return 0;
-if (sizeof (ptrdiff_t))
+if (sizeof (bits64_t))
   return 0;
   ;
   return 0;
@@ -22633,31 +23464,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_ptrdiff_t=yes
+  ac_cv_type_bits64_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_ptrdiff_t=no
+ac_cv_type_bits64_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
-if test $ac_cv_type_ptrdiff_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
+if test $ac_cv_type_bits64_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define ptrdiff_t long long
+@%:@define bits64_t double
 _ACEOF
 
 fi
 
-else
-  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
+  echo "$as_me:$LINENO: checking for bits64_t" >&5
+echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits64_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22670,9 +23501,9 @@ $ac_includes_default
 int
 main ()
 {
-if ((ptrdiff_t *) 0)
+if ((bits64_t *) 0)
   return 0;
-if (sizeof (ptrdiff_t))
+if (sizeof (bits64_t))
   return 0;
   ;
   return 0;
@@ -22700,33 +23531,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_ptrdiff_t=yes
+  ac_cv_type_bits64_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_ptrdiff_t=no
+ac_cv_type_bits64_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
-if test $ac_cv_type_ptrdiff_t = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
+if test $ac_cv_type_bits64_t = yes; then
   :
 else
   
 cat >>confdefs.h <<_ACEOF
-@%:@define ptrdiff_t int
+@%:@define bits64_t long long
 _ACEOF
 
 fi
 
-fi
-
-
-echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
-echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
-if test "${ac_cv_header_stat_broken+set}" = set; then
+elif test "$ac_cv_sizeof_long" = 8; then
+  echo "$as_me:$LINENO: checking for bits64_t" >&5
+echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits64_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22735,86 +23564,65 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(S_ISBLK) && defined(S_IFDIR)
-# if S_ISBLK (S_IFDIR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISBLK) && defined(S_IFCHR)
-# if S_ISBLK (S_IFCHR)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISLNK) && defined(S_IFREG)
-# if S_ISLNK (S_IFREG)
-You lose.
-# endif
-#endif
-
-#if defined(S_ISSOCK) && defined(S_IFREG)
-# if S_ISSOCK (S_IFREG)
-You lose.
-# endif
-#endif
-
+$ac_includes_default
+int
+main ()
+{
+if ((bits64_t *) 0)
+  return 0;
+if (sizeof (bits64_t))
+  return 0;
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "You lose" >/dev/null 2>&1; then
-  ac_cv_header_stat_broken=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_bits64_t=yes
 else
-  ac_cv_header_stat_broken=no
-fi
-rm -f conftest*
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_type_bits64_t=no
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
-echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
-if test $ac_cv_header_stat_broken = yes; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define STAT_MACROS_BROKEN 1
-_ACEOF
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-
-echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5
-echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6
-if test "${ac_cv_sys_interpreter+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo '#! /bin/cat
-exit 69
-' >conftest
-chmod u+x conftest
-(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null)
-if test $? -ne 69; then
-   ac_cv_sys_interpreter=yes
+echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
+if test $ac_cv_type_bits64_t = yes; then
+  :
 else
-   ac_cv_sys_interpreter=no
-fi
-rm -f conftest
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5
-echo "${ECHO_T}$ac_cv_sys_interpreter" >&6
-interpval=$ac_cv_sys_interpreter
-
-if test $ac_cv_sys_interpreter = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_HASH_BANG_EXEC 1
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define bits64_t long
 _ACEOF
 
 fi
 
-if test "$ac_cv_func_lstat" = "no"; then
-echo "$as_me:$LINENO: checking for lstat" >&5
-echo $ECHO_N "checking for lstat... $ECHO_C" >&6
-if test "${bash_cv_func_lstat+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for bits64_t" >&5
+echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6
+if test "${ac_cv_type_bits64_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22823,21 +23631,21 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
+$ac_includes_default
 int
 main ()
 {
- lstat(".",(struct stat *)0); 
+if ((bits64_t *) 0)
+  return 0;
+if (sizeof (bits64_t))
+  return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -22851,27 +23659,29 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_func_lstat=yes
+  ac_cv_type_bits64_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_func_lstat=no
+ac_cv_type_bits64_t=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5
-echo "${ECHO_T}$bash_cv_func_lstat" >&6
-if test $bash_cv_func_lstat = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_LSTAT 1
+echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5
+echo "${ECHO_T}$ac_cv_type_bits64_t" >&6
+if test $ac_cv_type_bits64_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define bits64_t double
 _ACEOF
 
 fi
 fi
 
 
-echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5
-echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6
-if test "${bash_cv_func_ctype_nonascii+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;}
-    bash_cv_func_ctype_nonascii=no
 
+if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
+  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22896,80 +23702,66 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-
-main(c, v)
-int    c;
-char   *v[];
+$ac_includes_default
+int
+main ()
 {
-       char    *deflocale;
-       unsigned char x;
-       int     r1, r2;
-
-#ifdef HAVE_SETLOCALE
-       /* We take a shot here.  If that locale is not known, try the
-          system default.  We try this one because '\342' (226) is
-          known to be a printable character in that locale. */
-       deflocale = setlocale(LC_ALL, "en_US.ISO8859-1");
-       if (deflocale == 0)
-               deflocale = setlocale(LC_ALL, "");
-#endif
-
-       x = '\342';
-       r1 = isprint(x);
-       x -= 128;
-       r2 = isprint(x);
-       exit (r1 == 0 || r2 == 0);
+if ((ptrdiff_t *) 0)
+  return 0;
+if (sizeof (ptrdiff_t))
+  return 0;
+  ;
+  return 0;
 }
-
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_func_ctype_nonascii=yes
+  ac_cv_type_ptrdiff_t=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-bash_cv_func_ctype_nonascii=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ac_cv_type_ptrdiff_t=no
 fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5
-echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6
-if test $bash_cv_func_ctype_nonascii = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define CTYPE_NON_ASCII 1
+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
+if test $ac_cv_type_ptrdiff_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define ptrdiff_t int
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5
-echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6
-if test "${bash_cv_dup2_broken+set}" = set; then
+elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
+  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;}
-     bash_cv_dup2_broken=no
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -22977,68 +23769,66 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <fcntl.h>
-main()
+$ac_includes_default
+int
+main ()
 {
-  int fd1, fd2, fl;
-  fd1 = open("/dev/null", 2);
-  if (fcntl(fd1, 2, 1) < 0)
-    exit(1);
-  fd2 = dup2(fd1, 1);
-  if (fd2 < 0)
-    exit(2);
-  fl = fcntl(fd2, 1, 0);
-  /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
-  exit(fl != 1);
+if ((ptrdiff_t *) 0)
+  return 0;
+if (sizeof (ptrdiff_t))
+  return 0;
+  ;
+  return 0;
 }
-
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_dup2_broken=yes
+  ac_cv_type_ptrdiff_t=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-bash_cv_dup2_broken=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ac_cv_type_ptrdiff_t=no
 fi
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5
-echo "${ECHO_T}$bash_cv_dup2_broken" >&6
-if test $bash_cv_dup2_broken = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define DUP2_BROKEN 1
+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
+if test $ac_cv_type_ptrdiff_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define ptrdiff_t long
 _ACEOF
 
 fi
 
-
-echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5
-echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6
-if test "${bash_cv_pgrp_pipe+set}" = set; then
+elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
+  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;}
-    bash_cv_pgrp_pipe=no
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -23046,121 +23836,88 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-main()
+$ac_includes_default
+int
+main ()
 {
-# ifdef GETPGRP_VOID
-#  define getpgID()    getpgrp()
-# else
-#  define getpgID()    getpgrp(0)
-#  define setpgid(x,y) setpgrp(x,y)
-# endif
-       int pid1, pid2, fds[2];
-       int status;
-       char ok;
-
-       switch (pid1 = fork()) {
-         case -1:
-           exit(1);
-         case 0:
-           setpgid(0, getpid());
-           exit(0);
-       }
-       setpgid(pid1, pid1);
-
-       sleep(2);       /* let first child die */
-
-       if (pipe(fds) < 0)
-         exit(2);
-
-       switch (pid2 = fork()) {
-         case -1:
-           exit(3);
-         case 0:
-           setpgid(0, pid1);
-           ok = getpgID() == pid1;
-           write(fds[1], &ok, 1);
-           exit(0);
-       }
-       setpgid(pid2, pid1);
-
-       close(fds[1]);
-       if (read(fds[0], &ok, 1) != 1)
-         exit(4);
-       wait(&status);
-       wait(&status);
-       exit(ok ? 0 : 5);
+if ((ptrdiff_t *) 0)
+  return 0;
+if (sizeof (ptrdiff_t))
+  return 0;
+  ;
+  return 0;
 }
-
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_pgrp_pipe=no
+  ac_cv_type_ptrdiff_t=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-bash_cv_pgrp_pipe=yes
+ac_cv_type_ptrdiff_t=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
+if test $ac_cv_type_ptrdiff_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define ptrdiff_t long long
+_ACEOF
 
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5
-echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6
-if test $bash_cv_pgrp_pipe = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define PGRP_PIPE 1
-_ACEOF
-
-fi
-
-
-echo "$as_me:$LINENO: checking for type of signal functions" >&5
-echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
-if test "${bash_cv_signal_vintage+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <signal.h>
+$ac_includes_default
 int
 main ()
 {
-
-    sigset_t ss;
-    struct sigaction sa;
-    sigemptyset(&ss); sigsuspend(&ss);
-    sigaction(SIGINT, &sa, (struct sigaction *) 0);
-    sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
-  
+if ((ptrdiff_t *) 0)
+  return 0;
+if (sizeof (ptrdiff_t))
+  return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -23174,151 +23931,127 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_signal_vintage=posix
+  ac_cv_type_ptrdiff_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+ac_cv_type_ptrdiff_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
+if test $ac_cv_type_ptrdiff_t = yes; then
+  :
+else
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define ptrdiff_t int
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <signal.h>
-int
-main ()
-{
 
-       int mask = sigmask(SIGINT);
-       sigsetmask(mask); sigblock(mask); sigpause(mask);
-    
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  bash_cv_signal_vintage=4.2bsd
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+fi
 
+fi
 
-      cat >conftest.$ac_ext <<_ACEOF
+
+echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
+echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
+if test "${ac_cv_header_stat_broken+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/stat.h>
 
-       #include <signal.h>
-       RETSIGTYPE foo() { }
-int
-main ()
-{
+#if defined(S_ISBLK) && defined(S_IFDIR)
+# if S_ISBLK (S_IFDIR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISBLK) && defined(S_IFCHR)
+# if S_ISBLK (S_IFCHR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISLNK) && defined(S_IFREG)
+# if S_ISLNK (S_IFREG)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISSOCK) && defined(S_IFREG)
+# if S_ISSOCK (S_IFREG)
+You lose.
+# endif
+#endif
 
-               int mask = sigmask(SIGINT);
-               sigset(SIGINT, foo); sigrelse(SIGINT);
-               sighold(SIGINT); sigpause(SIGINT);
-        
-  ;
-  return 0;
-}
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  bash_cv_signal_vintage=svr3
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "You lose" >/dev/null 2>&1; then
+  ac_cv_header_stat_broken=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-bash_cv_signal_vintage=v7
-    
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  
+  ac_cv_header_stat_broken=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
 
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
+echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
+if test $ac_cv_header_stat_broken = yes; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define STAT_MACROS_BROKEN 1
+_ACEOF
 
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5
-echo "${ECHO_T}$bash_cv_signal_vintage" >&6
-if test "$bash_cv_signal_vintage" = posix; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_POSIX_SIGNALS 1
-_ACEOF
 
-elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_BSD_SIGNALS 1
-_ACEOF
+echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5
+echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6
+if test "${ac_cv_sys_interpreter+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  echo '#! /bin/cat
+exit 69
+' >conftest
+chmod u+x conftest
+(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null)
+if test $? -ne 69; then
+   ac_cv_sys_interpreter=yes
+else
+   ac_cv_sys_interpreter=no
+fi
+rm -f conftest
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5
+echo "${ECHO_T}$ac_cv_sys_interpreter" >&6
+interpval=$ac_cv_sys_interpreter
 
-elif test "$bash_cv_signal_vintage" = svr3; then
+if test $ac_cv_sys_interpreter = yes; then
 cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_USG_SIGHOLD 1
+@%:@define HAVE_HASH_BANG_EXEC 1
 _ACEOF
 
 fi
 
-
-echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5
-echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6
-if test "${bash_cv_sys_errlist+set}" = set; then
+if test "$ac_cv_func_lstat" = "no"; then
+echo "$as_me:$LINENO: checking for lstat" >&5
+echo $ECHO_N "checking for lstat... $ECHO_C" >&6
+if test "${bash_cv_func_lstat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23327,13 +24060,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <errno.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
 int
 main ()
 {
-extern char *sys_errlist[];
- extern int sys_nerr;
- char *msg = sys_errlist[sys_nerr - 1];
+ lstat(".",(struct stat *)0); 
   ;
   return 0;
 }
@@ -23360,35 +24094,38 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_sys_errlist=yes
+  bash_cv_func_lstat=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_sys_errlist=no
+bash_cv_func_lstat=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5
-echo "${ECHO_T}$bash_cv_sys_errlist" >&6
-if test $bash_cv_sys_errlist = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_SYS_ERRLIST 1
+echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5
+echo "${ECHO_T}$bash_cv_func_lstat" >&6
+if test $bash_cv_func_lstat = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_LSTAT 1
 _ACEOF
 
 fi
 
+fi
 
-echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5
-echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6
-if test "${bash_cv_sys_siglist+set}" = set; then
+
+echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5
+echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6
+if test "${bash_cv_func_ctype_nonascii+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;}
-        bash_cv_sys_siglist=no
+  { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;}
+    bash_cv_func_ctype_nonascii=no
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -23397,19 +24134,36 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-#include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if !HAVE_DECL_SYS_SIGLIST
-extern char *sys_siglist[];
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
 #endif
-main()
+#include <stdio.h>
+#include <ctype.h>
+
+main(c, v)
+int    c;
+char   *v[];
 {
-char *msg = sys_siglist[2];
-exit(msg == 0);
+       char    *deflocale;
+       unsigned char x;
+       int     r1, r2;
+
+#ifdef HAVE_SETLOCALE
+       /* We take a shot here.  If that locale is not known, try the
+          system default.  We try this one because '\342' (226) is
+          known to be a printable character in that locale. */
+       deflocale = setlocale(LC_ALL, "en_US.ISO8859-1");
+       if (deflocale == 0)
+               deflocale = setlocale(LC_ALL, "");
+#endif
+
+       x = '\342';
+       r1 = isprint(x);
+       x -= 128;
+       r2 = isprint(x);
+       exit (r1 == 0 || r2 == 0);
 }
+
 _ACEOF
 rm -f conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
@@ -23422,32 +24176,37 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_sys_siglist=yes
+  bash_cv_func_ctype_nonascii=yes
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-bash_cv_sys_siglist=no
+bash_cv_func_ctype_nonascii=no
 fi
 rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5
-echo "${ECHO_T}$bash_cv_sys_siglist" >&6
-if test $bash_cv_sys_siglist = yes; then
+echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5
+echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6
+if test $bash_cv_func_ctype_nonascii = yes; then
 cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_SYS_SIGLIST 1
+@%:@define CTYPE_NON_ASCII 1
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5
-echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6
-if test "${bash_cv_decl_under_sys_siglist+set}" = set; then
+echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5
+echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6
+if test "${bash_cv_dup2_broken+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;}
+     bash_cv_dup2_broken=no
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -23457,68 +24216,66 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 #include <sys/types.h>
-#include <signal.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-int
-main ()
+#include <fcntl.h>
+main()
 {
- char *msg = _sys_siglist[2]; 
-  ;
-  return 0;
+  int fd1, fd2, fl;
+  fd1 = open("/dev/null", 2);
+  if (fcntl(fd1, 2, 1) < 0)
+    exit(1);
+  fd2 = dup2(fd1, 1);
+  if (fd2 < 0)
+    exit(2);
+  fl = fcntl(fd2, 1, 0);
+  /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
+  exit(fl != 1);
 }
+
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_decl_under_sys_siglist=yes
+  bash_cv_dup2_broken=yes
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_decl_under_sys_siglist=no
+( exit $ac_status )
+bash_cv_dup2_broken=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5
-echo "${ECHO_T}$bash_cv_decl_under_sys_siglist" >&6
-if test $bash_cv_decl_under_sys_siglist = yes; then
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5
+echo "${ECHO_T}$bash_cv_dup2_broken" >&6
+if test $bash_cv_dup2_broken = yes; then
 cat >>confdefs.h <<\_ACEOF
-@%:@define UNDER_SYS_SIGLIST_DECLARED 1
+@%:@define DUP2_BROKEN 1
 _ACEOF
 
 fi
 
 
-echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5
-echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6
-if test "${bash_cv_under_sys_siglist+set}" = set; then
+echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5
+echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6
+if test "${bash_cv_pgrp_pipe+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5
-echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;}
-        bash_cv_under_sys_siglist=no
+  { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;}
+    bash_cv_pgrp_pipe=no
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -23527,19 +24284,54 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-#include <sys/types.h>
-#include <signal.h>
 #ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifndef UNDER_SYS_SIGLIST_DECLARED
-extern char *_sys_siglist[];
+#  include <unistd.h>
 #endif
 main()
 {
-char *msg = (char *)_sys_siglist[2];
-exit(msg == 0);
+# ifdef GETPGRP_VOID
+#  define getpgID()    getpgrp()
+# else
+#  define getpgID()    getpgrp(0)
+#  define setpgid(x,y) setpgrp(x,y)
+# endif
+       int pid1, pid2, fds[2];
+       int status;
+       char ok;
+
+       switch (pid1 = fork()) {
+         case -1:
+           exit(1);
+         case 0:
+           setpgid(0, getpid());
+           exit(0);
+       }
+       setpgid(pid1, pid1);
+
+       sleep(2);       /* let first child die */
+
+       if (pipe(fds) < 0)
+         exit(2);
+
+       switch (pid2 = fork()) {
+         case -1:
+           exit(3);
+         case 0:
+           setpgid(0, pid1);
+           ok = getpgID() == pid1;
+           write(fds[1], &ok, 1);
+           exit(0);
+       }
+       setpgid(pid2, pid1);
+
+       close(fds[1]);
+       if (read(fds[0], &ok, 1) != 1)
+         exit(4);
+       wait(&status);
+       wait(&status);
+       exit(ok ? 0 : 5);
 }
+
 _ACEOF
 rm -f conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
@@ -23552,60 +24344,60 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_under_sys_siglist=yes
+  bash_cv_pgrp_pipe=no
 else
   echo "$as_me: program exited with status $ac_status" >&5
 echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-bash_cv_under_sys_siglist=no
+bash_cv_pgrp_pipe=yes
 fi
 rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
+
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5
-echo "${ECHO_T}$bash_cv_under_sys_siglist" >&6
-if test $bash_cv_under_sys_siglist = yes; then
+echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5
+echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6
+if test $bash_cv_pgrp_pipe = yes; then
 cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_UNDER_SYS_SIGLIST 1
+@%:@define PGRP_PIPE 1
 _ACEOF
 
 fi
 
 
-echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5
-echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6
-if test "${bash_cv_void_sighandler+set}" = set; then
+echo "$as_me:$LINENO: checking for type of signal functions" >&5
+echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6
+if test "${bash_cv_signal_vintage+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
+  
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
 #include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();
 int
 main ()
 {
-int i;
+
+    sigset_t ss;
+    struct sigaction sa;
+    sigemptyset(&ss); sigsuspend(&ss);
+    sigaction(SIGINT, &sa, (struct sigaction *) 0);
+    sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
+  
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -23619,35 +24411,1540 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_void_sighandler=yes
+  bash_cv_signal_vintage=posix
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_void_sighandler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5
-echo "${ECHO_T}$bash_cv_void_sighandler" >&6
-if test $bash_cv_void_sighandler = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define VOID_SIGHANDLER 1
-_ACEOF
 
-fi
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <signal.h>
+int
+main ()
+{
+
+       int mask = sigmask(SIGINT);
+       sigsetmask(mask); sigblock(mask); sigpause(mask);
+    
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_signal_vintage=4.2bsd
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+       #include <signal.h>
+       RETSIGTYPE foo() { }
+int
+main ()
+{
+
+               int mask = sigmask(SIGINT);
+               sigset(SIGINT, foo); sigrelse(SIGINT);
+               sighold(SIGINT); sigpause(SIGINT);
+        
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_signal_vintage=svr3
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_signal_vintage=v7
+    
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5
+echo "${ECHO_T}$bash_cv_signal_vintage" >&6
+if test "$bash_cv_signal_vintage" = posix; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_POSIX_SIGNALS 1
+_ACEOF
+
+elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_BSD_SIGNALS 1
+_ACEOF
+
+elif test "$bash_cv_signal_vintage" = svr3; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_USG_SIGHOLD 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5
+echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6
+if test "${bash_cv_sys_errlist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+extern char *sys_errlist[];
+ extern int sys_nerr;
+ char *msg = sys_errlist[sys_nerr - 1];
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_sys_errlist=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_sys_errlist=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5
+echo "${ECHO_T}$bash_cv_sys_errlist" >&6
+if test $bash_cv_sys_errlist = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_SYS_ERRLIST 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5
+echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6
+if test "${bash_cv_sys_siglist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;}
+        bash_cv_sys_siglist=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <signal.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if !HAVE_DECL_SYS_SIGLIST
+extern char *sys_siglist[];
+#endif
+main()
+{
+char *msg = sys_siglist[2];
+exit(msg == 0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_sys_siglist=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+bash_cv_sys_siglist=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5
+echo "${ECHO_T}$bash_cv_sys_siglist" >&6
+if test $bash_cv_sys_siglist = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_SYS_SIGLIST 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5
+echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6
+if test "${bash_cv_decl_under_sys_siglist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <signal.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int
+main ()
+{
+ char *msg = _sys_siglist[2]; 
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_decl_under_sys_siglist=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_decl_under_sys_siglist=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5
+echo "${ECHO_T}$bash_cv_decl_under_sys_siglist" >&6
+if test $bash_cv_decl_under_sys_siglist = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define UNDER_SYS_SIGLIST_DECLARED 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5
+echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6
+if test "${bash_cv_under_sys_siglist+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5
+echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;}
+        bash_cv_under_sys_siglist=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <signal.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifndef UNDER_SYS_SIGLIST_DECLARED
+extern char *_sys_siglist[];
+#endif
+main()
+{
+char *msg = (char *)_sys_siglist[2];
+exit(msg == 0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_under_sys_siglist=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+bash_cv_under_sys_siglist=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5
+echo "${ECHO_T}$bash_cv_under_sys_siglist" >&6
+if test $bash_cv_under_sys_siglist = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_UNDER_SYS_SIGLIST 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5
+echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6
+if test "${bash_cv_void_sighandler+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+void (*signal ()) ();
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_void_sighandler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_void_sighandler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5
+echo "${ECHO_T}$bash_cv_void_sighandler" >&6
+if test $bash_cv_void_sighandler = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define VOID_SIGHANDLER 1
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for clock_t" >&5
+echo $ECHO_N "checking for clock_t... $ECHO_C" >&6
+if test "${bash_cv_type_clock_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/times.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "clock_t" >/dev/null 2>&1; then
+  bash_cv_type_clock_t=yes
+else
+  bash_cv_type_clock_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5
+echo "${ECHO_T}$bash_cv_type_clock_t" >&6
+
+if test $bash_cv_type_clock_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define clock_t long
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for sigset_t" >&5
+echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6
+if test "${bash_cv_type_sigset_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <signal.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "sigset_t" >/dev/null 2>&1; then
+  bash_cv_type_sigset_t=yes
+else
+  bash_cv_type_sigset_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5
+echo "${ECHO_T}$bash_cv_type_sigset_t" >&6
+
+if test $bash_cv_type_sigset_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define sigset_t int
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for quad_t" >&5
+echo $ECHO_N "checking for quad_t... $ECHO_C" >&6
+if test "${bash_cv_type_quad_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "quad_t" >/dev/null 2>&1; then
+  bash_cv_type_quad_t=yes
+else
+  bash_cv_type_quad_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5
+echo "${ECHO_T}$bash_cv_type_quad_t" >&6
+if test $bash_cv_type_quad_t = yes; then
+       cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_QUAD_T 1
+_ACEOF
+
+       fi
+if test $bash_cv_type_quad_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define quad_t long
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for intmax_t" >&5
+echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
+if test "${bash_cv_type_intmax_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "intmax_t" >/dev/null 2>&1; then
+  bash_cv_type_intmax_t=yes
+else
+  bash_cv_type_intmax_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5
+echo "${ECHO_T}$bash_cv_type_intmax_t" >&6
+
+if test $bash_cv_type_intmax_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define intmax_t $bash_cv_type_long_long
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for uintmax_t" >&5
+echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6
+if test "${bash_cv_type_uintmax_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "uintmax_t" >/dev/null 2>&1; then
+  bash_cv_type_uintmax_t=yes
+else
+  bash_cv_type_uintmax_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5
+echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6
+
+if test $bash_cv_type_uintmax_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define uintmax_t $bash_cv_type_unsigned_long_long
+_ACEOF
+
+fi
+
+if test "$ac_cv_header_sys_socket_h" = "yes"; then
+
+
+echo "$as_me:$LINENO: checking for socklen_t" >&5
+echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
+if test "${bash_cv_type_socklen_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/socket.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "socklen_t" >/dev/null 2>&1; then
+  bash_cv_type_socklen_t=yes
+else
+  bash_cv_type_socklen_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5
+echo "${ECHO_T}$bash_cv_type_socklen_t" >&6
+if test $bash_cv_type_socklen_t = yes; then
+       cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_SOCKLEN_T 1
+_ACEOF
+
+       fi
+if test $bash_cv_type_socklen_t = no; then
+  cat >>confdefs.h <<_ACEOF
+@%:@define socklen_t int
+_ACEOF
+
+fi
+
+fi
+echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5
+echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6
+if test "${bash_cv_type_rlimit+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/resource.h>
+int
+main ()
+{
+rlim_t xxx;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_type_rlimit=rlim_t
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5
+echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;}
+         bash_cv_type_rlimit=long
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+main()
+{
+#ifdef HAVE_QUAD_T
+  struct rlimit rl;
+  if (sizeof(rl.rlim_cur) == sizeof(quad_t))
+    exit(0);
+#endif
+  exit(1);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_type_rlimit=quad_t
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+bash_cv_type_rlimit=long
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5
+echo "${ECHO_T}$bash_cv_type_rlimit" >&6
+if test $bash_cv_type_rlimit = quad_t; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define RLIMTYPE quad_t
+_ACEOF
+
+elif test $bash_cv_type_rlimit = rlim_t; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define RLIMTYPE rlim_t
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for intmax_t" >&5
+echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
+if test "${ac_cv_type_intmax_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((intmax_t *) 0)
+  return 0;
+if (sizeof (intmax_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_intmax_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_intmax_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
+echo "${ECHO_T}$ac_cv_type_intmax_t" >&6
+
+echo "$as_me:$LINENO: checking size of intmax_t" >&5
+echo $ECHO_N "checking size of intmax_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_intmax_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_intmax_t" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array @<:@1 - 2 * !(((long) (sizeof (intmax_t))) >= 0)@:>@;
+test_array @<:@0@:>@ = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array @<:@1 - 2 * !(((long) (sizeof (intmax_t))) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+                   if test $ac_lo -le $ac_mid; then
+                     ac_lo= ac_hi=
+                     break
+                   fi
+                   ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array @<:@1 - 2 * !(((long) (sizeof (intmax_t))) < 0)@:>@;
+test_array @<:@0@:>@ = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array @<:@1 - 2 * !(((long) (sizeof (intmax_t))) >= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+                      if test $ac_mid -le $ac_hi; then
+                        ac_lo= ac_hi=
+                        break
+                      fi
+                      ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array @<:@1 - 2 * !(((long) (sizeof (intmax_t))) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_intmax_t=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (intmax_t), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (intmax_t)); }
+unsigned long ulongval () { return (long) (sizeof (intmax_t)); }
+@%:@include <stdio.h>
+@%:@include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (intmax_t))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (intmax_t))))
+       exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (intmax_t))))
+       exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_intmax_t=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (intmax_t), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_intmax_t=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_intmax_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_intmax_t" >&6
+cat >>confdefs.h <<_ACEOF
+@%:@define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t
+_ACEOF
+
+
+
+
+echo "$as_me:$LINENO: checking for struct termios.c_line" >&5
+echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6
+if test "${ac_cv_member_struct_termios_c_line+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <termios.h>
+
+
+int
+main ()
+{
+static struct termios ac_aggr;
+if (ac_aggr.c_line)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_termios_c_line=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <termios.h>
+
+
+int
+main ()
+{
+static struct termios ac_aggr;
+if (sizeof ac_aggr.c_line)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_termios_c_line=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_member_struct_termios_c_line=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5
+echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6
+if test $ac_cv_member_struct_termios_c_line = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define TERMIOS_LDISC 1
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for struct termio.c_line" >&5
+echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6
+if test "${ac_cv_member_struct_termio_c_line+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <termio.h>
+
+
+int
+main ()
+{
+static struct termio ac_aggr;
+if (ac_aggr.c_line)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_termio_c_line=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
+#include <sys/types.h>
+#include <termio.h>
 
 
-echo "$as_me:$LINENO: checking for clock_t" >&5
-echo $ECHO_N "checking for clock_t... $ECHO_C" >&6
-if test "${bash_cv_type_clock_t+set}" = set; then
+int
+main ()
+{
+static struct termio ac_aggr;
+if (sizeof ac_aggr.c_line)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_termio_c_line=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_member_struct_termio_c_line=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5
+echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6
+if test $ac_cv_member_struct_termio_c_line = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define TERMIO_LDISC 1
+_ACEOF
+
+fi
+
+
+
+echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5
+echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6
+if test "${bash_cv_dirent_has_dino+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23656,42 +25953,82 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
+#include <stdio.h>
 #include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#include <sys/times.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#if defined(HAVE_DIRENT_H)
+# include <dirent.h>
+#else
+# define dirent direct
+# ifdef HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif /* SYSNDIR */
+# ifdef HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif /* SYSDIR */
+# ifdef HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif /* HAVE_DIRENT_H */
+
+int
+main ()
+{
+
+struct dirent d; int z; z = d.d_ino;
 
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "clock_t" >/dev/null 2>&1; then
-  bash_cv_type_clock_t=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_dirent_has_dino=yes
 else
-  bash_cv_type_clock_t=no
-fi
-rm -f conftest*
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+bash_cv_dirent_has_dino=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5
-echo "${ECHO_T}$bash_cv_type_clock_t" >&6
-
-if test $bash_cv_type_clock_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define clock_t long
+echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5
+echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6
+if test $bash_cv_dirent_has_dino = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_DIRENT_D_INO 1
 _ACEOF
 
 fi
 
 
-
-echo "$as_me:$LINENO: checking for sigset_t" >&5
-echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6
-if test "${bash_cv_type_sigset_t+set}" = set; then
+echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5
+echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6
+if test "${bash_cv_dirent_has_d_fileno+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23700,42 +26037,82 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
+#include <stdio.h>
 #include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#include <signal.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#if defined(HAVE_DIRENT_H)
+# include <dirent.h>
+#else
+# define dirent direct
+# ifdef HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif /* SYSNDIR */
+# ifdef HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif /* SYSDIR */
+# ifdef HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif /* HAVE_DIRENT_H */
+
+int
+main ()
+{
+
+struct dirent d; int z; z = d.d_fileno;
 
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "sigset_t" >/dev/null 2>&1; then
-  bash_cv_type_sigset_t=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_dirent_has_d_fileno=yes
 else
-  bash_cv_type_sigset_t=no
-fi
-rm -f conftest*
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+bash_cv_dirent_has_d_fileno=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5
-echo "${ECHO_T}$bash_cv_type_sigset_t" >&6
-
-if test $bash_cv_type_sigset_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define sigset_t int
+echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5
+echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6
+if test $bash_cv_dirent_has_d_fileno = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_DIRENT_D_FILENO 1
 _ACEOF
 
 fi
 
 
-
-echo "$as_me:$LINENO: checking for quad_t" >&5
-echo $ECHO_N "checking for quad_t... $ECHO_C" >&6
-if test "${bash_cv_type_quad_t+set}" = set; then
+echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5
+echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6
+if test "${bash_cv_dirent_has_d_namlen+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23744,47 +26121,81 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
+#include <stdio.h>
 #include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#if defined(HAVE_DIRENT_H)
+# include <dirent.h>
+#else
+# define dirent direct
+# ifdef HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif /* SYSNDIR */
+# ifdef HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif /* SYSDIR */
+# ifdef HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif /* HAVE_DIRENT_H */
+
+int
+main ()
+{
 
+struct dirent d; int z; z = d.d_namlen;
 
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "quad_t" >/dev/null 2>&1; then
-  bash_cv_type_quad_t=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_dirent_has_d_namlen=yes
 else
-  bash_cv_type_quad_t=no
-fi
-rm -f conftest*
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+bash_cv_dirent_has_d_namlen=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5
-echo "${ECHO_T}$bash_cv_type_quad_t" >&6
-if test $bash_cv_type_quad_t = yes; then
-       cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_QUAD_T 1
-_ACEOF
-
-       fi
-if test $bash_cv_type_quad_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define quad_t long
+echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5
+echo "${ECHO_T}$bash_cv_dirent_has_d_namlen" >&6
+if test $bash_cv_dirent_has_d_namlen = yes; then
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_DIRENT_D_NAMLEN 1
 _ACEOF
 
 fi
 
-
-
-echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
-if test "${bash_cv_type_intmax_t+set}" = set; then
+echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5
+echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
+if test "${bash_cv_struct_winsize_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23794,134 +26205,166 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-
+#include <sys/ioctl.h>
+int
+main ()
+{
+struct winsize x;
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "intmax_t" >/dev/null 2>&1; then
-  bash_cv_type_intmax_t=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_struct_winsize_header=ioctl_h
 else
-  bash_cv_type_intmax_t=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5
-echo "${ECHO_T}$bash_cv_type_intmax_t" >&6
-
-if test $bash_cv_type_intmax_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define intmax_t $bash_cv_type_long_long
-_ACEOF
-
-fi
-
-
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-echo "$as_me:$LINENO: checking for uintmax_t" >&5
-echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6
-if test "${bash_cv_type_uintmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-
+#include <termios.h>
+int
+main ()
+{
+struct winsize x;
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uintmax_t" >/dev/null 2>&1; then
-  bash_cv_type_uintmax_t=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_struct_winsize_header=termios_h
 else
-  bash_cv_type_uintmax_t=no
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+bash_cv_struct_winsize_header=other
 fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5
-echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6
+if test $bash_cv_struct_winsize_header = ioctl_h; then
+  echo "$as_me:$LINENO: result: sys/ioctl.h" >&5
+echo "${ECHO_T}sys/ioctl.h" >&6
+  cat >>confdefs.h <<\_ACEOF
+@%:@define STRUCT_WINSIZE_IN_SYS_IOCTL 1
+_ACEOF
 
-if test $bash_cv_type_uintmax_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define uintmax_t $bash_cv_type_unsigned_long_long
+elif test $bash_cv_struct_winsize_header = termios_h; then
+  echo "$as_me:$LINENO: result: termios.h" >&5
+echo "${ECHO_T}termios.h" >&6
+  cat >>confdefs.h <<\_ACEOF
+@%:@define STRUCT_WINSIZE_IN_TERMIOS 1
 _ACEOF
 
+else
+  echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
 fi
 
-if test "$ac_cv_header_sys_socket_h" = "yes"; then
-
-
-echo "$as_me:$LINENO: checking for socklen_t" >&5
-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
-if test "${bash_cv_type_socklen_t+set}" = set; then
+echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5
+echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6
+if test "${bash_cv_struct_timeval+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
+  
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/time.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "struct timeval" >/dev/null 2>&1; then
+  bash_cv_struct_timeval=yes
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#include <sys/socket.h>
+#include <time.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "socklen_t" >/dev/null 2>&1; then
-  bash_cv_type_socklen_t=yes
+  $EGREP "struct timeval" >/dev/null 2>&1; then
+  bash_cv_struct_timeval=yes
 else
-  bash_cv_type_socklen_t=no
+  bash_cv_struct_timeval=no
 fi
 rm -f conftest*
 
 fi
+rm -f conftest*
 
-echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5
-echo "${ECHO_T}$bash_cv_type_socklen_t" >&6
-if test $bash_cv_type_socklen_t = yes; then
-       cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_SOCKLEN_T 1
-_ACEOF
 
-       fi
-if test $bash_cv_type_socklen_t = no; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define socklen_t int
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5
+echo "${ECHO_T}$bash_cv_struct_timeval" >&6
+if test $bash_cv_struct_timeval = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_TIMEVAL 1
 _ACEOF
 
 fi
 
-fi
-echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5
-echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6
-if test "${bash_cv_type_rlimit+set}" = set; then
+echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5
+echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -23930,12 +26373,13 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/resource.h>
+$ac_includes_default
 int
 main ()
 {
-rlim_t xxx;
+static struct stat ac_aggr;
+if (ac_aggr.st_blocks)
+return 0;
   ;
   return 0;
 }
@@ -23962,83 +26406,138 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_rlimit=rlim_t
+  ac_cv_member_struct_stat_st_blocks=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
-if test "$cross_compiling" = yes; then
-  { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5
-echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;}
-         bash_cv_type_rlimit=long
-else
-  cat >conftest.$ac_ext <<_ACEOF
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-main()
+$ac_includes_default
+int
+main ()
 {
-#ifdef HAVE_QUAD_T
-  struct rlimit rl;
-  if (sizeof(rl.rlim_cur) == sizeof(quad_t))
-    exit(0);
-#endif
-  exit(1);
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_blocks)
+return 0;
+  ;
+  return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_type_rlimit=quad_t
+  ac_cv_member_struct_stat_st_blocks=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-bash_cv_type_rlimit=long
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ac_cv_member_struct_stat_st_blocks=no
 fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6
+if test $ac_cv_member_struct_stat_st_blocks = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
 
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5
-echo "${ECHO_T}$bash_cv_type_rlimit" >&6
-if test $bash_cv_type_rlimit = quad_t; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define RLIMTYPE quad_t
+echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
+if test "${ac_cv_struct_tm+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <time.h>
 
-elif test $bash_cv_type_rlimit = rlim_t; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define RLIMTYPE rlim_t
+int
+main ()
+{
+struct tm *tp; tp->tm_sec;
+  ;
+  return 0;
+}
 _ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm=time.h
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_struct_tm=sys/time.h
 fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6
+if test $ac_cv_struct_tm = sys/time.h; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define TM_IN_SYS_TIME 1
+_ACEOF
 
+fi
 
-
-echo "$as_me:$LINENO: checking for struct termios.c_line" >&5
-echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6
-if test "${ac_cv_member_struct_termios_c_line+set}" = set; then
+echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5
+echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6
+if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24047,16 +26546,15 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
 #include <sys/types.h>
-#include <termios.h>
+#include <$ac_cv_struct_tm>
 
 
 int
 main ()
 {
-static struct termios ac_aggr;
-if (ac_aggr.c_line)
+static struct tm ac_aggr;
+if (ac_aggr.tm_zone)
 return 0;
   ;
   return 0;
@@ -24084,7 +26582,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_termios_c_line=yes
+  ac_cv_member_struct_tm_tm_zone=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -24095,16 +26593,15 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
 #include <sys/types.h>
-#include <termios.h>
+#include <$ac_cv_struct_tm>
 
 
 int
 main ()
 {
-static struct termios ac_aggr;
-if (sizeof ac_aggr.c_line)
+static struct tm ac_aggr;
+if (sizeof ac_aggr.tm_zone)
 return 0;
   ;
   return 0;
@@ -24132,31 +26629,38 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_termios_c_line=yes
+  ac_cv_member_struct_tm_tm_zone=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_member_struct_termios_c_line=no
+ac_cv_member_struct_tm_tm_zone=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5
-echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6
-if test $ac_cv_member_struct_termios_c_line = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define TERMIOS_LDISC 1
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5
+echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6
+if test $ac_cv_member_struct_tm_tm_zone = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_STRUCT_TM_TM_ZONE 1
 _ACEOF
 
-fi
 
+fi
 
+if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
+  
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_TM_ZONE 1
+_ACEOF
 
-echo "$as_me:$LINENO: checking for struct termio.c_line" >&5
-echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6
-if test "${ac_cv_member_struct_termio_c_line+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for tzname" >&5
+echo $ECHO_N "checking for tzname... $ECHO_C" >&6
+if test "${ac_cv_var_tzname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24165,24 +26669,22 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <termio.h>
-
+#include <time.h>
+#ifndef tzname /* For SGI.  */
+extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
+#endif
 
 int
 main ()
 {
-static struct termio ac_aggr;
-if (ac_aggr.c_line)
-return 0;
+atoi(*tzname);
   ;
   return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -24196,85 +26698,180 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_termio_c_line=yes
+  ac_cv_var_tzname=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_var_tzname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
+echo "${ECHO_T}$ac_cv_var_tzname" >&6
+  if test $ac_cv_var_tzname = yes; then
+    
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_TZNAME 1
+_ACEOF
+
+  fi
+fi
+
+echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5
+echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6
+if test "${bash_cv_struct_timezone+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+#include <sys/time.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "struct timezone" >/dev/null 2>&1; then
+  bash_cv_struct_timezone=yes
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
 
-#include <sys/types.h>
-#include <termio.h>
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "struct timezone" >/dev/null 2>&1; then
+  bash_cv_struct_timezone=yes
+else
+  bash_cv_struct_timezone=no
+fi
+rm -f conftest*
+
+fi
+rm -f conftest*
 
 
-int
-main ()
+fi
+
+echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5
+echo "${ECHO_T}$bash_cv_struct_timezone" >&6
+if test $bash_cv_struct_timezone = yes; then
+  cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_TIMEZONE 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for offset of exit status in return status from wait" >&5
+echo $ECHO_N "checking for offset of exit status in return status from wait... $ECHO_C" >&6
+if test "${bash_cv_wexitstatus_offset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5
+echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;}
+    bash_cv_wexitstatus_offset=0
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <sys/wait.h>
+
+main(c, v)
+     int c;
+     char **v;
 {
-static struct termio ac_aggr;
-if (sizeof ac_aggr.c_line)
-return 0;
-  ;
-  return 0;
+  pid_t pid, p;
+  int s, i, n;
+
+  s = 0;
+  pid = fork();
+  if (pid == 0)
+    exit (42);
+
+  /* wait for the process */
+  p = wait(&s);
+  if (p != pid)
+    exit (255);
+
+  /* crack s */
+  for (i = 0; i < (sizeof(s) - 8); i++)
+    {
+      n = (s >> i) & 0xff;
+      if (n == 42)
+       exit (i);
+    }
+
+  exit (254);
 }
+
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_termio_c_line=yes
+  bash_cv_wexitstatus_offset=0
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_member_struct_termio_c_line=no
+( exit $ac_status )
+bash_cv_wexitstatus_offset=$?
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5
-echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6
-if test $ac_cv_member_struct_termio_c_line = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define TERMIO_LDISC 1
-_ACEOF
 
+if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
+  { echo "$as_me:$LINENO: WARNING: bad exit status from test program -- defaulting to 0" >&5
+echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;}
+  bash_cv_wexitstatus_offset=0
 fi
+echo "$as_me:$LINENO: result: $bash_cv_wexitstatus_offset" >&5
+echo "${ECHO_T}$bash_cv_wexitstatus_offset" >&6
 
+cat >>confdefs.h <<_ACEOF
+@%:@define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset
+_ACEOF
 
 
-echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5
-echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_dino+set}" = set; then
+
+
+  AC_CHECK_HEADERS_ONCE(sys/time.h)
+  echo "$as_me:$LINENO: checking for struct timespec in <time.h>" >&5
+echo $ECHO_N "checking for struct timespec in <time.h>... $ECHO_C" >&6
+if test "${bash_cv_sys_struct_timespec_in_time_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24283,33 +26880,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
+#include <time.h>
+          
 int
 main ()
 {
-
-struct dirent d; int z; z = d.d_ino;
-
+static struct timespec x; x.tv_sec = x.tv_nsec;
   ;
   return 0;
 }
@@ -24336,29 +26912,36 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_dirent_has_dino=yes
+  bash_cv_sys_struct_timespec_in_time_h=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_dirent_has_dino=no
+bash_cv_sys_struct_timespec_in_time_h=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+echo "$as_me:$LINENO: result: $bash_cv_sys_struct_timespec_in_time_h" >&5
+echo "${ECHO_T}$bash_cv_sys_struct_timespec_in_time_h" >&6
 
-echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6
-if test $bash_cv_dirent_has_dino = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_STRUCT_DIRENT_D_INO 1
+  HAVE_STRUCT_TIMESPEC=0
+  TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
+  if test $bash_cv_sys_struct_timespec_in_time_h = yes; then
+    cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_TIMESPEC 1
 _ACEOF
 
-fi
-
+    cat >>confdefs.h <<\_ACEOF
+@%:@define TIME_H_DEFINES_STRUCT_TIMESPEC 1
+_ACEOF
 
-echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5
-echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_d_fileno+set}" = set; then
+    TIME_H_DEFINES_STRUCT_TIMESPEC=1
+  else
+    echo "$as_me:$LINENO: checking for struct timespec in <sys/time.h>" >&5
+echo $ECHO_N "checking for struct timespec in <sys/time.h>... $ECHO_C" >&6
+if test "${bash_cv_sys_struct_timespec_in_sys_time_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24367,33 +26950,12 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
+#include <sys/time.h>
+            
 int
 main ()
 {
-
-struct dirent d; int z; z = d.d_fileno;
-
+static struct timespec x; x.tv_sec = x.tv_nsec;
   ;
   return 0;
 }
@@ -24420,64 +26982,45 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_dirent_has_d_fileno=yes
+  bash_cv_sys_struct_timespec_in_sys_time_h=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_dirent_has_d_fileno=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6
-if test $bash_cv_dirent_has_d_fileno = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_STRUCT_DIRENT_D_FILENO 1
-_ACEOF
-
-fi
-
-
-echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5
-echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6
-if test "${bash_cv_dirent_has_d_namlen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-
+bash_cv_sys_struct_timespec_in_sys_time_h=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5
+echo "${ECHO_T}$bash_cv_sys_struct_timespec_in_sys_time_h" >&6
+    if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then
+      SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+      cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_TIMESPEC 1
+_ACEOF
+
+      cat >>confdefs.h <<\_ACEOF
+@%:@define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1
+_ACEOF
+
+    else
+      echo "$as_me:$LINENO: checking for struct timespec in <pthread.h>" >&5
+echo $ECHO_N "checking for struct timespec in <pthread.h>... $ECHO_C" >&6
+if test "${bash_cv_sys_struct_timespec_in_pthread_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <pthread.h>
+              
 int
 main ()
 {
-
-struct dirent d; int z; z = d.d_namlen;
-
+static struct timespec x; x.tv_sec = x.tv_nsec;
   ;
   return 0;
 }
@@ -24504,28 +27047,42 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_dirent_has_d_namlen=yes
+  bash_cv_sys_struct_timespec_in_pthread_h=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_dirent_has_d_namlen=no
+bash_cv_sys_struct_timespec_in_pthread_h=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+echo "$as_me:$LINENO: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5
+echo "${ECHO_T}$bash_cv_sys_struct_timespec_in_pthread_h" >&6
+      if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then
+        PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+       cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_STRUCT_TIMESPEC 1
+_ACEOF
 
-echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5
-echo "${ECHO_T}$bash_cv_dirent_has_d_namlen" >&6
-if test $bash_cv_dirent_has_d_namlen = yes; then
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_STRUCT_DIRENT_D_NAMLEN 1
+       cat >>confdefs.h <<\_ACEOF
+@%:@define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1
 _ACEOF
 
-fi
+      fi
+    fi
+  fi
+  
+  
+  
 
-echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5
-echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6
-if test "${bash_cv_struct_winsize_header+set}" = set; then
+
+
+  
+  AC_CHECK_HEADERS_ONCE(sys/time.h)
+
+  echo "$as_me:$LINENO: checking for struct stat.st_atim.tv_nsec" >&5
+echo $ECHO_N "checking for struct stat.st_atim.tv_nsec... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_atim_tv_nsec+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24535,11 +27092,14 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/ioctl.h>
+     #include <sys/stat.h>
+
 int
 main ()
 {
-struct winsize x;
+static struct stat ac_aggr;
+if (ac_aggr.st_atim.tv_nsec)
+return 0;
   ;
   return 0;
 }
@@ -24566,7 +27126,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_struct_winsize_header=ioctl_h
+  ac_cv_member_struct_stat_st_atim_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -24578,11 +27138,14 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <termios.h>
+     #include <sys/stat.h>
+
 int
 main ()
 {
-struct winsize x;
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atim.tv_nsec)
+return 0;
   ;
   return 0;
 }
@@ -24609,56 +27172,29 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  bash_cv_struct_winsize_header=termios_h
+  ac_cv_member_struct_stat_st_atim_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-bash_cv_struct_winsize_header=other
+ac_cv_member_struct_stat_st_atim_tv_nsec=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-if test $bash_cv_struct_winsize_header = ioctl_h; then
-  echo "$as_me:$LINENO: result: sys/ioctl.h" >&5
-echo "${ECHO_T}sys/ioctl.h" >&6
-  cat >>confdefs.h <<\_ACEOF
-@%:@define STRUCT_WINSIZE_IN_SYS_IOCTL 1
-_ACEOF
-
-elif test $bash_cv_struct_winsize_header = termios_h; then
-  echo "$as_me:$LINENO: result: termios.h" >&5
-echo "${ECHO_T}termios.h" >&6
-  cat >>confdefs.h <<\_ACEOF
-@%:@define STRUCT_WINSIZE_IN_TERMIOS 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: not found" >&5
-echo "${ECHO_T}not found" >&6
-fi
-
-echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5
-echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6
-if test "${bash_cv_struct_timeval+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atim_tv_nsec" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_atim_tv_nsec" >&6
+if test $ac_cv_member_struct_stat_st_atim_tv_nsec = yes; then
   
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/time.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "struct timeval" >/dev/null 2>&1; then
-  bash_cv_struct_timeval=yes
+echo "$as_me:$LINENO: checking whether struct stat.st_atim is of type struct timespec" >&5
+echo $ECHO_N "checking whether struct stat.st_atim is of type struct timespec... $ECHO_C" >&6
+if test "${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -24666,35 +27202,70 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <time.h>
 
+            #include <sys/types.h>
+            #include <sys/stat.h>
+            #if HAVE_SYS_TIME_H
+            # include <sys/time.h>
+            #endif
+            #include <time.h>
+            struct timespec ts;
+            struct stat st;
+          
+int
+main ()
+{
+
+            st.st_atim = ts;
+          
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "struct timeval" >/dev/null 2>&1; then
-  bash_cv_struct_timeval=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes
 else
-  bash_cv_struct_timeval=no
-fi
-rm -f conftest*
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no
 fi
-rm -f conftest*
-
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5
-echo "${ECHO_T}$bash_cv_struct_timeval" >&6
-if test $bash_cv_struct_timeval = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_TIMEVAL 1
+echo "$as_me:$LINENO: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5
+echo "${ECHO_T}$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6
+     if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
+       
+cat >>confdefs.h <<\_ACEOF
+@%:@define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1
 _ACEOF
 
-fi
-
-echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5
-echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6
-if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then
+     fi
+else
+  echo "$as_me:$LINENO: checking for struct stat.st_atimespec.tv_nsec" >&5
+echo $ECHO_N "checking for struct stat.st_atimespec.tv_nsec... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_atimespec_tv_nsec+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24703,12 +27274,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+#include <sys/types.h>
+        #include <sys/stat.h>
+
 int
 main ()
 {
 static struct stat ac_aggr;
-if (ac_aggr.st_blocks)
+if (ac_aggr.st_atimespec.tv_nsec)
 return 0;
   ;
   return 0;
@@ -24736,7 +27309,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_stat_st_blocks=yes
+  ac_cv_member_struct_stat_st_atimespec_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -24747,12 +27320,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+#include <sys/types.h>
+        #include <sys/stat.h>
+
 int
 main ()
 {
 static struct stat ac_aggr;
-if (sizeof ac_aggr.st_blocks)
+if (sizeof ac_aggr.st_atimespec.tv_nsec)
 return 0;
   ;
   return 0;
@@ -24780,31 +27355,30 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_stat_st_blocks=yes
+  ac_cv_member_struct_stat_st_atimespec_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_member_struct_stat_st_blocks=no
+ac_cv_member_struct_stat_st_atimespec_tv_nsec=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5
-echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6
-if test $ac_cv_member_struct_stat_st_blocks = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atimespec_tv_nsec" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_atimespec_tv_nsec" >&6
+if test $ac_cv_member_struct_stat_st_atimespec_tv_nsec = yes; then
   
 cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_STRUCT_STAT_ST_BLOCKS 1
+@%:@define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1
 _ACEOF
 
 
-fi
-
-echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
-echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
-if test "${ac_cv_struct_tm+set}" = set; then
+else
+  echo "$as_me:$LINENO: checking for struct stat.st_atimensec" >&5
+echo $ECHO_N "checking for struct stat.st_atimensec... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_atimensec+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -24814,12 +27388,14 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <time.h>
+           #include <sys/stat.h>
 
 int
 main ()
 {
-struct tm *tp; tp->tm_sec;
+static struct stat ac_aggr;
+if (ac_aggr.st_atimensec)
+return 0;
   ;
   return 0;
 }
@@ -24846,45 +27422,25 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_struct_tm=time.h
+  ac_cv_member_struct_stat_st_atimensec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_struct_tm=sys/time.h
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
-echo "${ECHO_T}$ac_cv_struct_tm" >&6
-if test $ac_cv_struct_tm = sys/time.h; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define TM_IN_SYS_TIME 1
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5
-echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6
-if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <$ac_cv_struct_tm>
-
+           #include <sys/stat.h>
 
 int
 main ()
 {
-static struct tm ac_aggr;
-if (ac_aggr.tm_zone)
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atimensec)
 return 0;
   ;
   return 0;
@@ -24912,26 +27468,46 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_tm_tm_zone=yes
+  ac_cv_member_struct_stat_st_atimensec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
+ac_cv_member_struct_stat_st_atimensec=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atimensec" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_atimensec" >&6
+if test $ac_cv_member_struct_stat_st_atimensec = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_STRUCT_STAT_ST_ATIMENSEC 1
+_ACEOF
+
+
+else
+  echo "$as_me:$LINENO: checking for struct stat.st_atim.st__tim.tv_nsec" >&5
+echo $ECHO_N "checking for struct stat.st_atim.st__tim.tv_nsec... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <$ac_cv_struct_tm>
-
+              #include <sys/stat.h>
 
 int
 main ()
 {
-static struct tm ac_aggr;
-if (sizeof ac_aggr.tm_zone)
+static struct stat ac_aggr;
+if (ac_aggr.st_atim.st__tim.tv_nsec)
 return 0;
   ;
   return 0;
@@ -24959,62 +27535,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_member_struct_tm_tm_zone=yes
+  ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_member_struct_tm_tm_zone=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5
-echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6
-if test $ac_cv_member_struct_tm_tm_zone = yes; then
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_STRUCT_TM_TM_ZONE 1
-_ACEOF
-
-
-fi
-
-if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_TM_ZONE 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for tzname" >&5
-echo $ECHO_N "checking for tzname... $ECHO_C" >&6
-if test "${ac_cv_var_tzname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <time.h>
-#ifndef tzname /* For SGI.  */
-extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
-#endif
+#include <sys/types.h>
+              #include <sys/stat.h>
 
 int
 main ()
 {
-atoi(*tzname);
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atim.st__tim.tv_nsec)
+return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -25028,85 +27575,42 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_var_tzname=yes
+  ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_var_tzname=no
+ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
-echo "${ECHO_T}$ac_cv_var_tzname" >&6
-  if test $ac_cv_var_tzname = yes; then
-    
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_TZNAME 1
-_ACEOF
-
-  fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5
-echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6
-if test "${bash_cv_struct_timezone+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" >&6
+if test $ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec = yes; then
   
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/time.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "struct timezone" >/dev/null 2>&1; then
-  bash_cv_struct_timezone=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <time.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "struct timezone" >/dev/null 2>&1; then
-  bash_cv_struct_timezone=yes
-else
-  bash_cv_struct_timezone=no
 fi
-rm -f conftest*
 
 fi
-rm -f conftest*
-
 
 fi
 
-echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5
-echo "${ECHO_T}$bash_cv_struct_timezone" >&6
-if test $bash_cv_struct_timezone = yes; then
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_STRUCT_TIMEZONE 1
-_ACEOF
-
 fi
 
 
+
 echo "$as_me:$LINENO: checking for the existence of strsignal" >&5
 echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6
 if test "${bash_cv_have_strsignal+set}" = set; then
@@ -25212,18 +27716,18 @@ main()
 {
 DIR *dir;
 int fd, err;
-err = mkdir("/tmp/bash-aclocal", 0700);
+err = mkdir("bash-aclocal", 0700);
 if (err < 0) {
   perror("mkdir");
   exit(1);
 }
-unlink("/tmp/bash-aclocal/not_a_directory");
-fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
+unlink("bash-aclocal/not_a_directory");
+fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
 write(fd, "\n", 1);
 close(fd);
-dir = opendir("/tmp/bash-aclocal/not_a_directory");
-unlink("/tmp/bash-aclocal/not_a_directory");
-rmdir("/tmp/bash-aclocal");
+dir = opendir("bash-aclocal/not_a_directory");
+unlink("bash-aclocal/not_a_directory");
+rmdir("bash-aclocal");
 exit (dir == 0);
 }
 _ACEOF
@@ -25318,6 +27822,83 @@ _ACEOF
 
 fi
 
+
+  AC_CHECK_FUNCS_ONCE(fpurge)
+  AC_CHECK_FUNCS_ONCE(__fpurge)
+  echo "$as_me:$LINENO: checking whether fpurge is declared" >&5
+echo $ECHO_N "checking whether fpurge is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_fpurge+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+
+int
+main ()
+{
+#ifndef fpurge
+  char *p = (char *) fpurge;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_fpurge=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_fpurge=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fpurge" >&5
+echo "${ECHO_T}$ac_cv_have_decl_fpurge" >&6
+if test $ac_cv_have_decl_fpurge = yes; then
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_FPURGE 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_DECL_FPURGE 0
+_ACEOF
+
+
+fi
+
+
+
 echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5
 echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6
 if test "${bash_cv_getenv_redef+set}" = set; then
@@ -25654,6 +28235,170 @@ _ACEOF
 fi
 
 
+  AC_CHECK_FUNCS_ONCE(snprintf)
+  if test X$ac_cv_func_snprintf = Xyes; then
+    echo "$as_me:$LINENO: checking for standard-conformant snprintf" >&5
+echo $ECHO_N "checking for standard-conformant snprintf... $ECHO_C" >&6
+if test "${bash_cv_func_snprintf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check standard snprintf if cross-compiling" >&5
+echo "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;}
+    bash_cv_func_snprintf=yes
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+
+main()
+{
+  int n;
+  n = snprintf (0, 0, "%s", "0123456");
+  exit(n != 7);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_func_snprintf=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+bash_cv_func_snprintf=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $bash_cv_func_snprintf" >&5
+echo "${ECHO_T}$bash_cv_func_snprintf" >&6
+    if test $bash_cv_func_snprintf = no; then
+      ac_cv_func_snprintf=no
+    fi
+  fi
+  if test $ac_cv_func_snprintf = no; then
+    
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_SNPRINTF 0
+_ACEOF
+
+  fi
+
+
+  AC_CHECK_FUNCS_ONCE(vsnprintf)
+  if test X$ac_cv_func_vsnprintf = Xyes; then
+    echo "$as_me:$LINENO: checking for standard-conformant vsnprintf" >&5
+echo $ECHO_N "checking for standard-conformant vsnprintf... $ECHO_C" >&6
+if test "${bash_cv_func_vsnprintf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  { echo "$as_me:$LINENO: WARNING: cannot check standard vsnprintf if cross-compiling" >&5
+echo "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;}
+    bash_cv_func_vsnprintf=yes
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#if HAVE_STDARG_H
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+#if HAVE_STDARG_H
+foo(const char *fmt, ...)
+#else
+foo(format, va_alist)
+     const char *format;
+     va_dcl
+#endif
+{
+  va_list args;
+  int n;
+
+#if HAVE_STDARG_H
+  va_start(args, fmt);
+#else
+  va_start(args);
+#endif
+  n = vsnprintf(0, 0, fmt, args);
+  va_end (args);
+  return n;
+}
+
+main()
+{
+  int n;
+  n = foo("%s", "0123456");
+  exit(n != 7);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  bash_cv_func_vsnprintf=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+bash_cv_func_vsnprintf=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $bash_cv_func_vsnprintf" >&5
+echo "${ECHO_T}$bash_cv_func_vsnprintf" >&6
+    if test $bash_cv_func_vsnprintf = no; then
+      ac_cv_func_vsnprintf=no
+    fi
+  fi
+  if test $ac_cv_func_vsnprintf = no; then
+    
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_VSNPRINTF 0
+_ACEOF
+
+  fi
+
+
 
 if test "$ac_cv_func_putenv" = "yes"; then
 
@@ -26129,19 +28874,19 @@ exit (1);
 #if defined (NeXT)
 exit (1);
 #endif
-err = mkdir("/tmp/bash-aclocal", 0700);
+err = mkdir("bash-aclocal", 0700);
 if (err < 0) {
   perror ("mkdir");
   exit(1);
 }
-fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
+fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
 if (fd == -1) {
-  rmdir ("/tmp/bash-aclocal");
+  rmdir ("bash-aclocal");
   exit (1);
 }
 close(fd);
-unlink ("/tmp/bash-aclocal/sh-np-autoconf");
-rmdir ("/tmp/bash-aclocal");
+unlink ("bash-aclocal/sh-np-autoconf");
+rmdir ("bash-aclocal");
 exit(0);
 }
 _ACEOF
@@ -27316,6 +30061,9 @@ sco3.2v4*)      LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
 sco3.2*)       LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
 sunos4*)       LOCAL_CFLAGS=-DSunOS4 ;;
 solaris2.5*)   LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
+solaris2.8*)   LOCAL_CFLAGS=-DSOLARIS  ;;
+solaris2.9*)   LOCAL_CFLAGS=-DSOLARIS  ;;
+solaris2.10*)  LOCAL_CFLAGS=-DSOLARIS  ;;
 solaris2*)     LOCAL_CFLAGS=-DSOLARIS ;;
 lynxos*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
 linux*)                LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
@@ -27329,7 +30077,7 @@ _ACEOF
 *qnx*)         LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
 powerux*)      LOCAL_LIBS="-lgen" ;;
 cygwin*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
-opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE" ;;
+opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE" ;;
 esac
 
 case "${host_os}-${CC}" in
@@ -27802,7 +30550,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by bash $as_me 3.2-maint, which was
+This file was extended by bash $as_me 4.2-maint, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27865,7 +30613,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-bash config.status 3.2-maint
+bash config.status 4.2-maint
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -28091,9 +30839,11 @@ s,@host@,$host,;t t
 s,@host_cpu@,$host_cpu,;t t
 s,@host_vendor@,$host_vendor,;t t
 s,@host_os@,$host_os,;t t
-s,@EMACS@,$EMACS,;t t
-s,@lispdir@,$lispdir,;t t
 s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t
+s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t
+s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t
+s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t
 s,@TESTSCRIPT@,$TESTSCRIPT,;t t
 s,@PURIFY@,$PURIFY,;t t
 s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t
@@ -28106,6 +30856,7 @@ s,@htmldir@,$htmldir,;t t
 s,@HELPDIR@,$HELPDIR,;t t
 s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t
 s,@HELPINSTALL@,$HELPINSTALL,;t t
+s,@HELPFILES_TARGET@,$HELPFILES_TARGET,;t t
 s,@HELPSTRINGS@,$HELPSTRINGS,;t t
 s,@CC@,$CC,;t t
 s,@CFLAGS@,$CFLAGS,;t t
@@ -28119,11 +30870,8 @@ s,@EGREP@,$EGREP,;t t
 s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t
 s,@SIGNAMES_H@,$SIGNAMES_H,;t t
 s,@SIGNAMES_O@,$SIGNAMES_O,;t t
-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
 s,@STATIC_LD@,$STATIC_LD,;t t
-s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t
-s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t
-s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t
+s,@LIBS_FOR_BUILD@,$LIBS_FOR_BUILD,;t t
 s,@RL_VERSION@,$RL_VERSION,;t t
 s,@RL_MAJOR@,$RL_MAJOR,;t t
 s,@RL_MINOR@,$RL_MINOR,;t t
@@ -28173,6 +30921,9 @@ s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
 s,@INTL_DEP@,$INTL_DEP,;t t
 s,@INTL_INC@,$INTL_INC,;t t
 s,@LIBINTL_H@,$LIBINTL_H,;t t
+s,@TIME_H_DEFINES_STRUCT_TIMESPEC@,$TIME_H_DEFINES_STRUCT_TIMESPEC,;t t
+s,@SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@,$SYS_TIME_H_DEFINES_STRUCT_TIMESPEC,;t t
+s,@PTHREAD_H_DEFINES_STRUCT_TIMESPEC@,$PTHREAD_H_DEFINES_STRUCT_TIMESPEC,;t t
 s,@SIGLIST_O@,$SIGLIST_O,;t t
 s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t
 s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t
index 1c96a3c7a6c7dcc3fb23d00e16d4edfd6ed7721c..98bf93d3942810ac137d9be6891312d01e73dd89 100644 (file)
                         '_AM_COND_ELSE' => 1,
                         'AC_SUBST_TRACE' => 1
                       }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '2',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'aclocal.m4',
+                        'configure.in'
+                      ],
+                      {
+                        'm4_pattern_forbid' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_C_VOLATILE' => 1,
+                        'AC_TYPE_OFF_T' => 1,
+                        'AC_FUNC_CLOSEDIR_VOID' => 1,
+                        'AC_REPLACE_FNMATCH' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_FUNC_STAT' => 1,
+                        'AC_FUNC_WAIT3' => 1,
+                        'AC_HEADER_TIME' => 1,
+                        'AC_FUNC_LSTAT' => 1,
+                        'AC_STRUCT_TM' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_FUNC_GETMNTENT' => 1,
+                        'AC_TYPE_MODE_T' => 1,
+                        'AC_FUNC_STRTOD' => 1,
+                        'AC_CHECK_HEADERS' => 1,
+                        'AC_FUNC_STRNLEN' => 1,
+                        'm4_sinclude' => 1,
+                        'AC_PROG_CXX' => 1,
+                        'AC_PATH_X' => 1,
+                        'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
+                        'AC_PROG_AWK' => 1,
+                        '_m4_warn' => 1,
+                        'AC_HEADER_STDC' => 1,
+                        'AC_HEADER_MAJOR' => 1,
+                        'AC_FUNC_ERROR_AT_LINE' => 1,
+                        'AC_PROG_GCC_TRADITIONAL' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_FUNC_MBRTOWC' => 1,
+                        'AC_STRUCT_ST_BLOCKS' => 1,
+                        'AC_TYPE_SIGNAL' => 1,
+                        'AC_TYPE_UID_T' => 1,
+                        'AC_PROG_MAKE_SET' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'm4_pattern_allow' => 1,
+                        'sinclude' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AC_FUNC_STRERROR_R' => 1,
+                        'AC_PROG_CC' => 1,
+                        'AC_DECL_SYS_SIGLIST' => 1,
+                        'AC_FUNC_FORK' => 1,
+                        'AC_FUNC_STRCOLL' => 1,
+                        'AC_FUNC_VPRINTF' => 1,
+                        'AC_PROG_YACC' => 1,
+                        'AC_INIT' => 1,
+                        'AC_STRUCT_TIMEZONE' => 1,
+                        'AC_FUNC_CHOWN' => 1,
+                        'AC_SUBST' => 1,
+                        'AC_FUNC_ALLOCA' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_FUNC_GETPGRP' => 1,
+                        'AC_PROG_RANLIB' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_FUNC_SETPGRP' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AC_FUNC_MMAP' => 1,
+                        'AC_FUNC_REALLOC' => 1,
+                        'AC_TYPE_SIZE_T' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AC_CHECK_TYPES' => 1,
+                        'AC_CHECK_MEMBERS' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AC_FUNC_UTIME_NULL' => 1,
+                        'AC_FUNC_SELECT_ARGTYPES' => 1,
+                        'AC_HEADER_STAT' => 1,
+                        'AC_FUNC_STRFTIME' => 1,
+                        'AC_PROG_CPP' => 1,
+                        'AC_C_INLINE' => 1,
+                        'AC_PROG_LEX' => 1,
+                        'AC_C_CONST' => 1,
+                        'AC_TYPE_PID_T' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'include' => 1,
+                        'AC_FUNC_SETVBUF_REVERSED' => 1,
+                        'AC_PROG_INSTALL' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AC_CHECK_LIB' => 1,
+                        'AC_FUNC_OBSTACK' => 1,
+                        'AC_FUNC_MALLOC' => 1,
+                        'AC_FUNC_GETGROUPS' => 1,
+                        'AC_FUNC_GETLOADAVG' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_FUNC_FSEEKO' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_FUNC_MKTIME' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_HEADER_SYS_WAIT' => 1,
+                        'AC_PROG_LN_S' => 1,
+                        'AC_FUNC_MEMCMP' => 1,
+                        'm4_include' => 1,
+                        'AC_HEADER_DIRENT' => 1,
+                        'AC_CHECK_FUNCS' => 1
+                      }
                     ], 'Autom4te::Request' )
            );
 
index 08ef8fdbd3ad735aab0031e0e6611bc57e2d8529..24019dcc3a15408f8aa417a18792738ec8b8a0b0 100644 (file)
@@ -176,12 +176,9 @@ m4trace:configure.in:51: -1- m4_pattern_allow([^host_vendor$])
 m4trace:configure.in:51: -1- AC_SUBST([host_os])
 m4trace:configure.in:51: -1- AC_SUBST_TRACE([host_os])
 m4trace:configure.in:51: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.in:102: -1- AC_SUBST([DEBUGGER_START_FILE])
-m4trace:configure.in:102: -1- AC_SUBST_TRACE([DEBUGGER_START_FILE])
-m4trace:configure.in:102: -1- m4_pattern_allow([^DEBUGGER_START_FILE$])
-m4trace:configure.in:106: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:106: the top level])
+m4trace:configure.in:103: -1- AC_SUBST([DEBUGGER_START_FILE])
+m4trace:configure.in:103: -1- AC_SUBST_TRACE([DEBUGGER_START_FILE])
+m4trace:configure.in:103: -1- m4_pattern_allow([^DEBUGGER_START_FILE$])
 m4trace:configure.in:107: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:107: the top level])
@@ -200,18 +197,18 @@ configure.in:111: the top level])
 m4trace:configure.in:112: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:112: the top level])
-m4trace:configure.in:123: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC])
-m4trace:configure.in:123: -1- m4_pattern_allow([^USING_BASH_MALLOC$])
-m4trace:configure.in:133: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS])
-m4trace:configure.in:133: -1- m4_pattern_allow([^DISABLE_MALLOC_WRAPPERS$])
-m4trace:configure.in:143: -1- AC_DEFINE_TRACE_LITERAL([AFS])
-m4trace:configure.in:143: -1- m4_pattern_allow([^AFS$])
-m4trace:configure.in:195: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+m4trace:configure.in:113: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:195: the top level])
-m4trace:configure.in:211: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+configure.in:113: the top level])
+m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC])
+m4trace:configure.in:124: -1- m4_pattern_allow([^USING_BASH_MALLOC$])
+m4trace:configure.in:134: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS])
+m4trace:configure.in:134: -1- m4_pattern_allow([^DISABLE_MALLOC_WRAPPERS$])
+m4trace:configure.in:144: -1- AC_DEFINE_TRACE_LITERAL([AFS])
+m4trace:configure.in:144: -1- m4_pattern_allow([^AFS$])
+m4trace:configure.in:196: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:211: the top level])
+configure.in:196: the top level])
 m4trace:configure.in:212: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:212: the top level])
@@ -308,215 +305,218 @@ configure.in:242: the top level])
 m4trace:configure.in:243: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:243: the top level])
-m4trace:configure.in:246: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+m4trace:configure.in:244: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:246: the top level])
+configure.in:244: the top level])
 m4trace:configure.in:247: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:247: the top level])
 m4trace:configure.in:248: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
 configure.in:248: the top level])
-m4trace:configure.in:251: -1- AC_SUBST([CC_FOR_BUILD])
-m4trace:configure.in:251: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
-m4trace:configure.in:251: -1- m4_pattern_allow([^CC_FOR_BUILD$])
-m4trace:configure.in:252: -1- AC_SUBST([CFLAGS_FOR_BUILD])
-m4trace:configure.in:252: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
-m4trace:configure.in:252: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
-m4trace:configure.in:253: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:253: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:253: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
-m4trace:configure.in:254: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:254: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:254: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
-m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
-m4trace:configure.in:263: -1- m4_pattern_allow([^ALIAS$])
-m4trace:configure.in:266: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
-m4trace:configure.in:266: -1- m4_pattern_allow([^PUSHD_AND_POPD$])
-m4trace:configure.in:269: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
-m4trace:configure.in:269: -1- m4_pattern_allow([^RESTRICTED_SHELL$])
-m4trace:configure.in:272: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
-m4trace:configure.in:272: -1- m4_pattern_allow([^PROCESS_SUBSTITUTION$])
-m4trace:configure.in:275: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
-m4trace:configure.in:275: -1- m4_pattern_allow([^PROMPT_STRING_DECODE$])
-m4trace:configure.in:278: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
-m4trace:configure.in:278: -1- m4_pattern_allow([^SELECT_COMMAND$])
-m4trace:configure.in:281: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
-m4trace:configure.in:281: -1- m4_pattern_allow([^HELP_BUILTIN$])
-m4trace:configure.in:284: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
-m4trace:configure.in:284: -1- m4_pattern_allow([^ARRAY_VARS$])
-m4trace:configure.in:287: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
-m4trace:configure.in:287: -1- m4_pattern_allow([^DPAREN_ARITHMETIC$])
-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
-m4trace:configure.in:290: -1- m4_pattern_allow([^BRACE_EXPANSION$])
-m4trace:configure.in:293: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
-m4trace:configure.in:293: -1- m4_pattern_allow([^DISABLED_BUILTINS$])
-m4trace:configure.in:296: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
-m4trace:configure.in:296: -1- m4_pattern_allow([^COMMAND_TIMING$])
-m4trace:configure.in:299: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
-m4trace:configure.in:299: -1- m4_pattern_allow([^DEFAULT_ECHO_TO_XPG$])
-m4trace:configure.in:302: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
-m4trace:configure.in:302: -1- m4_pattern_allow([^STRICT_POSIX$])
-m4trace:configure.in:305: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
-m4trace:configure.in:305: -1- m4_pattern_allow([^EXTENDED_GLOB$])
-m4trace:configure.in:308: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
-m4trace:configure.in:308: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
-m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
-m4trace:configure.in:310: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
-m4trace:configure.in:313: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
-m4trace:configure.in:313: -1- m4_pattern_allow([^COND_COMMAND$])
-m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
-m4trace:configure.in:316: -1- m4_pattern_allow([^COND_REGEXP$])
-m4trace:configure.in:319: -1- AC_DEFINE_TRACE_LITERAL([COPROCESS_SUPPORT])
-m4trace:configure.in:319: -1- m4_pattern_allow([^COPROCESS_SUPPORT$])
-m4trace:configure.in:322: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
-m4trace:configure.in:322: -1- m4_pattern_allow([^ARITH_FOR_COMMAND$])
-m4trace:configure.in:325: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
-m4trace:configure.in:325: -1- m4_pattern_allow([^NETWORK_REDIRECTIONS$])
-m4trace:configure.in:328: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
-m4trace:configure.in:328: -1- m4_pattern_allow([^PROGRAMMABLE_COMPLETION$])
-m4trace:configure.in:331: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
-m4trace:configure.in:331: -1- m4_pattern_allow([^NO_MULTIBYTE_SUPPORT$])
-m4trace:configure.in:334: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
-m4trace:configure.in:334: -1- m4_pattern_allow([^DEBUGGER$])
-m4trace:configure.in:337: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_ATTRS])
-m4trace:configure.in:337: -1- m4_pattern_allow([^CASEMOD_ATTRS$])
-m4trace:configure.in:340: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_EXPANSIONS])
-m4trace:configure.in:340: -1- m4_pattern_allow([^CASEMOD_EXPANSIONS$])
-m4trace:configure.in:344: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
-m4trace:configure.in:344: -1- m4_pattern_allow([^MEMSCRAMBLE$])
-m4trace:configure.in:370: -1- AC_SUBST([TESTSCRIPT])
-m4trace:configure.in:370: -1- AC_SUBST_TRACE([TESTSCRIPT])
-m4trace:configure.in:370: -1- m4_pattern_allow([^TESTSCRIPT$])
-m4trace:configure.in:371: -1- AC_SUBST([PURIFY])
-m4trace:configure.in:371: -1- AC_SUBST_TRACE([PURIFY])
-m4trace:configure.in:371: -1- m4_pattern_allow([^PURIFY$])
-m4trace:configure.in:372: -1- AC_SUBST([MALLOC_TARGET])
-m4trace:configure.in:372: -1- AC_SUBST_TRACE([MALLOC_TARGET])
-m4trace:configure.in:372: -1- m4_pattern_allow([^MALLOC_TARGET$])
-m4trace:configure.in:373: -1- AC_SUBST([MALLOC_SRC])
-m4trace:configure.in:373: -1- AC_SUBST_TRACE([MALLOC_SRC])
-m4trace:configure.in:373: -1- m4_pattern_allow([^MALLOC_SRC$])
-m4trace:configure.in:375: -1- AC_SUBST([MALLOC_LIB])
-m4trace:configure.in:375: -1- AC_SUBST_TRACE([MALLOC_LIB])
-m4trace:configure.in:375: -1- m4_pattern_allow([^MALLOC_LIB$])
-m4trace:configure.in:376: -1- AC_SUBST([MALLOC_LIBRARY])
-m4trace:configure.in:376: -1- AC_SUBST_TRACE([MALLOC_LIBRARY])
-m4trace:configure.in:376: -1- m4_pattern_allow([^MALLOC_LIBRARY$])
-m4trace:configure.in:377: -1- AC_SUBST([MALLOC_LDFLAGS])
-m4trace:configure.in:377: -1- AC_SUBST_TRACE([MALLOC_LDFLAGS])
-m4trace:configure.in:377: -1- m4_pattern_allow([^MALLOC_LDFLAGS$])
-m4trace:configure.in:378: -1- AC_SUBST([MALLOC_DEP])
-m4trace:configure.in:378: -1- AC_SUBST_TRACE([MALLOC_DEP])
-m4trace:configure.in:378: -1- m4_pattern_allow([^MALLOC_DEP$])
-m4trace:configure.in:380: -1- AC_SUBST([htmldir])
-m4trace:configure.in:380: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.in:380: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.in:382: -1- AC_SUBST([HELPDIR])
-m4trace:configure.in:382: -1- AC_SUBST_TRACE([HELPDIR])
-m4trace:configure.in:382: -1- m4_pattern_allow([^HELPDIR$])
-m4trace:configure.in:383: -1- AC_SUBST([HELPDIRDEFINE])
-m4trace:configure.in:383: -1- AC_SUBST_TRACE([HELPDIRDEFINE])
-m4trace:configure.in:383: -1- m4_pattern_allow([^HELPDIRDEFINE$])
-m4trace:configure.in:384: -1- AC_SUBST([HELPINSTALL])
-m4trace:configure.in:384: -1- AC_SUBST_TRACE([HELPINSTALL])
-m4trace:configure.in:384: -1- m4_pattern_allow([^HELPINSTALL$])
-m4trace:configure.in:385: -1- AC_SUBST([HELPFILES_TARGET])
-m4trace:configure.in:385: -1- AC_SUBST_TRACE([HELPFILES_TARGET])
-m4trace:configure.in:385: -1- m4_pattern_allow([^HELPFILES_TARGET$])
-m4trace:configure.in:386: -1- AC_SUBST([HELPSTRINGS])
-m4trace:configure.in:386: -1- AC_SUBST_TRACE([HELPSTRINGS])
-m4trace:configure.in:386: -1- m4_pattern_allow([^HELPSTRINGS$])
-m4trace:configure.in:395: -1- AC_SUBST([CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:395: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.in:395: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.in:395: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.in:395: -1- AC_SUBST([LIBS])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.in:395: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.in:395: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:395: -1- AC_SUBST([CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:395: -1- AC_SUBST([CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:395: -1- AC_SUBST([CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:395: -1- AC_SUBST([CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:395: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.in:395: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.in:395: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.in:395: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.in:395: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.in:395: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.in:395: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.in:399: -1- _m4_warn([obsolete], [The macro `AC_MINIX' is obsolete.
+m4trace:configure.in:249: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
+configure.in:249: the top level])
+m4trace:configure.in:252: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.in:252: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
+m4trace:configure.in:252: -1- m4_pattern_allow([^CC_FOR_BUILD$])
+m4trace:configure.in:253: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.in:253: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
+m4trace:configure.in:253: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
+m4trace:configure.in:254: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:254: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:254: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
+m4trace:configure.in:255: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:255: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:255: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
+m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
+m4trace:configure.in:264: -1- m4_pattern_allow([^ALIAS$])
+m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
+m4trace:configure.in:267: -1- m4_pattern_allow([^PUSHD_AND_POPD$])
+m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
+m4trace:configure.in:270: -1- m4_pattern_allow([^RESTRICTED_SHELL$])
+m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
+m4trace:configure.in:273: -1- m4_pattern_allow([^PROCESS_SUBSTITUTION$])
+m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
+m4trace:configure.in:276: -1- m4_pattern_allow([^PROMPT_STRING_DECODE$])
+m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
+m4trace:configure.in:279: -1- m4_pattern_allow([^SELECT_COMMAND$])
+m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
+m4trace:configure.in:282: -1- m4_pattern_allow([^HELP_BUILTIN$])
+m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
+m4trace:configure.in:285: -1- m4_pattern_allow([^ARRAY_VARS$])
+m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
+m4trace:configure.in:288: -1- m4_pattern_allow([^DPAREN_ARITHMETIC$])
+m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
+m4trace:configure.in:291: -1- m4_pattern_allow([^BRACE_EXPANSION$])
+m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
+m4trace:configure.in:294: -1- m4_pattern_allow([^DISABLED_BUILTINS$])
+m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
+m4trace:configure.in:297: -1- m4_pattern_allow([^COMMAND_TIMING$])
+m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
+m4trace:configure.in:300: -1- m4_pattern_allow([^DEFAULT_ECHO_TO_XPG$])
+m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
+m4trace:configure.in:303: -1- m4_pattern_allow([^STRICT_POSIX$])
+m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
+m4trace:configure.in:306: -1- m4_pattern_allow([^EXTENDED_GLOB$])
+m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.in:309: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
+m4trace:configure.in:311: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.in:311: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
+m4trace:configure.in:314: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
+m4trace:configure.in:314: -1- m4_pattern_allow([^COND_COMMAND$])
+m4trace:configure.in:317: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
+m4trace:configure.in:317: -1- m4_pattern_allow([^COND_REGEXP$])
+m4trace:configure.in:320: -1- AC_DEFINE_TRACE_LITERAL([COPROCESS_SUPPORT])
+m4trace:configure.in:320: -1- m4_pattern_allow([^COPROCESS_SUPPORT$])
+m4trace:configure.in:323: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
+m4trace:configure.in:323: -1- m4_pattern_allow([^ARITH_FOR_COMMAND$])
+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
+m4trace:configure.in:326: -1- m4_pattern_allow([^NETWORK_REDIRECTIONS$])
+m4trace:configure.in:329: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
+m4trace:configure.in:329: -1- m4_pattern_allow([^PROGRAMMABLE_COMPLETION$])
+m4trace:configure.in:332: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
+m4trace:configure.in:332: -1- m4_pattern_allow([^NO_MULTIBYTE_SUPPORT$])
+m4trace:configure.in:335: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
+m4trace:configure.in:335: -1- m4_pattern_allow([^DEBUGGER$])
+m4trace:configure.in:338: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_ATTRS])
+m4trace:configure.in:338: -1- m4_pattern_allow([^CASEMOD_ATTRS$])
+m4trace:configure.in:341: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_EXPANSIONS])
+m4trace:configure.in:341: -1- m4_pattern_allow([^CASEMOD_EXPANSIONS$])
+m4trace:configure.in:345: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
+m4trace:configure.in:345: -1- m4_pattern_allow([^MEMSCRAMBLE$])
+m4trace:configure.in:371: -1- AC_SUBST([TESTSCRIPT])
+m4trace:configure.in:371: -1- AC_SUBST_TRACE([TESTSCRIPT])
+m4trace:configure.in:371: -1- m4_pattern_allow([^TESTSCRIPT$])
+m4trace:configure.in:372: -1- AC_SUBST([PURIFY])
+m4trace:configure.in:372: -1- AC_SUBST_TRACE([PURIFY])
+m4trace:configure.in:372: -1- m4_pattern_allow([^PURIFY$])
+m4trace:configure.in:373: -1- AC_SUBST([MALLOC_TARGET])
+m4trace:configure.in:373: -1- AC_SUBST_TRACE([MALLOC_TARGET])
+m4trace:configure.in:373: -1- m4_pattern_allow([^MALLOC_TARGET$])
+m4trace:configure.in:374: -1- AC_SUBST([MALLOC_SRC])
+m4trace:configure.in:374: -1- AC_SUBST_TRACE([MALLOC_SRC])
+m4trace:configure.in:374: -1- m4_pattern_allow([^MALLOC_SRC$])
+m4trace:configure.in:376: -1- AC_SUBST([MALLOC_LIB])
+m4trace:configure.in:376: -1- AC_SUBST_TRACE([MALLOC_LIB])
+m4trace:configure.in:376: -1- m4_pattern_allow([^MALLOC_LIB$])
+m4trace:configure.in:377: -1- AC_SUBST([MALLOC_LIBRARY])
+m4trace:configure.in:377: -1- AC_SUBST_TRACE([MALLOC_LIBRARY])
+m4trace:configure.in:377: -1- m4_pattern_allow([^MALLOC_LIBRARY$])
+m4trace:configure.in:378: -1- AC_SUBST([MALLOC_LDFLAGS])
+m4trace:configure.in:378: -1- AC_SUBST_TRACE([MALLOC_LDFLAGS])
+m4trace:configure.in:378: -1- m4_pattern_allow([^MALLOC_LDFLAGS$])
+m4trace:configure.in:379: -1- AC_SUBST([MALLOC_DEP])
+m4trace:configure.in:379: -1- AC_SUBST_TRACE([MALLOC_DEP])
+m4trace:configure.in:379: -1- m4_pattern_allow([^MALLOC_DEP$])
+m4trace:configure.in:381: -1- AC_SUBST([htmldir])
+m4trace:configure.in:381: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.in:381: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.in:383: -1- AC_SUBST([HELPDIR])
+m4trace:configure.in:383: -1- AC_SUBST_TRACE([HELPDIR])
+m4trace:configure.in:383: -1- m4_pattern_allow([^HELPDIR$])
+m4trace:configure.in:384: -1- AC_SUBST([HELPDIRDEFINE])
+m4trace:configure.in:384: -1- AC_SUBST_TRACE([HELPDIRDEFINE])
+m4trace:configure.in:384: -1- m4_pattern_allow([^HELPDIRDEFINE$])
+m4trace:configure.in:385: -1- AC_SUBST([HELPINSTALL])
+m4trace:configure.in:385: -1- AC_SUBST_TRACE([HELPINSTALL])
+m4trace:configure.in:385: -1- m4_pattern_allow([^HELPINSTALL$])
+m4trace:configure.in:386: -1- AC_SUBST([HELPFILES_TARGET])
+m4trace:configure.in:386: -1- AC_SUBST_TRACE([HELPFILES_TARGET])
+m4trace:configure.in:386: -1- m4_pattern_allow([^HELPFILES_TARGET$])
+m4trace:configure.in:387: -1- AC_SUBST([HELPSTRINGS])
+m4trace:configure.in:387: -1- AC_SUBST_TRACE([HELPSTRINGS])
+m4trace:configure.in:387: -1- m4_pattern_allow([^HELPSTRINGS$])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:396: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.in:396: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.in:396: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.in:396: -1- AC_SUBST([LIBS])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.in:396: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:396: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:396: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.in:396: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.in:396: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.in:396: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.in:396: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.in:396: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.in:396: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.in:400: -1- _m4_warn([obsolete], [The macro `AC_MINIX' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/specific.m4:437: AC_MINIX is expanded from...
-configure.in:399: the top level])
-m4trace:configure.in:399: -1- AC_SUBST([CPP])
-m4trace:configure.in:399: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.in:399: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.in:399: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:399: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:399: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:399: -1- AC_SUBST([CPP])
-m4trace:configure.in:399: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.in:399: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.in:399: -1- AC_SUBST([GREP])
-m4trace:configure.in:399: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.in:399: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.in:399: -1- AC_SUBST([EGREP])
-m4trace:configure.in:399: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.in:399: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.in:399: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.in:399: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+configure.in:400: the top level])
+m4trace:configure.in:400: -1- AC_SUBST([CPP])
+m4trace:configure.in:400: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.in:400: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.in:400: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:400: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:400: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:400: -1- AC_SUBST([CPP])
+m4trace:configure.in:400: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.in:400: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.in:400: -1- AC_SUBST([GREP])
+m4trace:configure.in:400: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.in:400: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.in:400: -1- AC_SUBST([EGREP])
+m4trace:configure.in:400: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.in:400: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.in:400: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.in:400: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
 @%:@undef STDC_HEADERS])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
 @%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
 @%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 @%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 @%:@undef HAVE_STRING_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
 @%:@undef HAVE_MEMORY_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
 @%:@undef HAVE_STRINGS_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
 @%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
 @%:@undef HAVE_STDINT_H])
-m4trace:configure.in:399: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_POSIX_SOURCE$])
-m4trace:configure.in:399: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_POSIX_SOURCE$])
+m4trace:configure.in:400: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
 @%:@undef _POSIX_SOURCE])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
-m4trace:configure.in:399: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
+m4trace:configure.in:400: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
    this defined. */
 @%:@undef _POSIX_1_SOURCE])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_MINIX$])
-m4trace:configure.in:399: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_MINIX$])
+m4trace:configure.in:400: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
 @%:@undef _MINIX])
-m4trace:configure.in:399: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix.  */
+m4trace:configure.in:400: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
 #endif
@@ -537,171 +537,171 @@ m4trace:configure.in:399: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable exte
 # undef __EXTENSIONS__
 #endif
 ])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
-m4trace:configure.in:399: -1- m4_pattern_allow([^__EXTENSIONS__$])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_ALL_SOURCE$])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
-m4trace:configure.in:399: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
-m4trace:configure.in:399: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.in:401: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
+m4trace:configure.in:400: -1- m4_pattern_allow([^__EXTENSIONS__$])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_ALL_SOURCE$])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
+m4trace:configure.in:400: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
+m4trace:configure.in:402: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.in:402: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.in:402: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
 @%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.in:401: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+m4trace:configure.in:402: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.in:402: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.in:402: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
 @%:@undef _LARGE_FILES])
-m4trace:configure.in:438: -1- AC_SUBST([CROSS_COMPILE])
-m4trace:configure.in:438: -1- AC_SUBST_TRACE([CROSS_COMPILE])
-m4trace:configure.in:438: -1- m4_pattern_allow([^CROSS_COMPILE$])
-m4trace:configure.in:440: -1- AC_SUBST([SIGNAMES_H])
-m4trace:configure.in:440: -1- AC_SUBST_TRACE([SIGNAMES_H])
-m4trace:configure.in:440: -1- m4_pattern_allow([^SIGNAMES_H$])
-m4trace:configure.in:441: -1- AC_SUBST([SIGNAMES_O])
-m4trace:configure.in:441: -1- AC_SUBST_TRACE([SIGNAMES_O])
-m4trace:configure.in:441: -1- m4_pattern_allow([^SIGNAMES_O$])
-m4trace:configure.in:475: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
+m4trace:configure.in:439: -1- AC_SUBST([CROSS_COMPILE])
+m4trace:configure.in:439: -1- AC_SUBST_TRACE([CROSS_COMPILE])
+m4trace:configure.in:439: -1- m4_pattern_allow([^CROSS_COMPILE$])
+m4trace:configure.in:441: -1- AC_SUBST([SIGNAMES_H])
+m4trace:configure.in:441: -1- AC_SUBST_TRACE([SIGNAMES_H])
+m4trace:configure.in:441: -1- m4_pattern_allow([^SIGNAMES_H$])
+m4trace:configure.in:442: -1- AC_SUBST([SIGNAMES_O])
+m4trace:configure.in:442: -1- AC_SUBST_TRACE([SIGNAMES_O])
+m4trace:configure.in:442: -1- m4_pattern_allow([^SIGNAMES_O$])
+m4trace:configure.in:476: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/c.m4:436: ac_cv_prog_gcc is expanded from...
-configure.in:475: the top level])
-m4trace:configure.in:502: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:502: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.in:502: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.in:503: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:503: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:503: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:504: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:504: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.in:504: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.in:505: -1- AC_SUBST([STATIC_LD])
-m4trace:configure.in:505: -1- AC_SUBST_TRACE([STATIC_LD])
-m4trace:configure.in:505: -1- m4_pattern_allow([^STATIC_LD$])
-m4trace:configure.in:507: -1- AC_SUBST([CC_FOR_BUILD])
-m4trace:configure.in:507: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
-m4trace:configure.in:507: -1- m4_pattern_allow([^CC_FOR_BUILD$])
-m4trace:configure.in:508: -1- AC_SUBST([CFLAGS_FOR_BUILD])
-m4trace:configure.in:508: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
-m4trace:configure.in:508: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
-m4trace:configure.in:509: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:509: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:509: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
-m4trace:configure.in:510: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:510: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:510: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
-m4trace:configure.in:511: -1- AC_SUBST([LIBS_FOR_BUILD])
-m4trace:configure.in:511: -1- AC_SUBST_TRACE([LIBS_FOR_BUILD])
-m4trace:configure.in:511: -1- m4_pattern_allow([^LIBS_FOR_BUILD$])
-m4trace:configure.in:525: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:476: the top level])
+m4trace:configure.in:503: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:503: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.in:503: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.in:504: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:504: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:504: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:505: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:505: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.in:505: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.in:506: -1- AC_SUBST([STATIC_LD])
+m4trace:configure.in:506: -1- AC_SUBST_TRACE([STATIC_LD])
+m4trace:configure.in:506: -1- m4_pattern_allow([^STATIC_LD$])
+m4trace:configure.in:508: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.in:508: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
+m4trace:configure.in:508: -1- m4_pattern_allow([^CC_FOR_BUILD$])
+m4trace:configure.in:509: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.in:509: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
+m4trace:configure.in:509: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
+m4trace:configure.in:510: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:510: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:510: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
+m4trace:configure.in:511: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:511: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:511: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
+m4trace:configure.in:512: -1- AC_SUBST([LIBS_FOR_BUILD])
+m4trace:configure.in:512: -1- AC_SUBST_TRACE([LIBS_FOR_BUILD])
+m4trace:configure.in:512: -1- m4_pattern_allow([^LIBS_FOR_BUILD$])
+m4trace:configure.in:526: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1806: RL_LIB_READLINE_VERSION is expanded from...
-configure.in:525: the top level])
-m4trace:configure.in:525: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_READLINE_VERSION$])
-m4trace:configure.in:525: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
+configure.in:526: the top level])
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_READLINE_VERSION$])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
 @%:@undef RL_READLINE_VERSION])
-m4trace:configure.in:525: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_VERSION_MAJOR$])
-m4trace:configure.in:525: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_VERSION_MAJOR$])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
 @%:@undef RL_VERSION_MAJOR])
-m4trace:configure.in:525: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_VERSION_MINOR$])
-m4trace:configure.in:525: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_VERSION_MINOR$])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
 @%:@undef RL_VERSION_MINOR])
-m4trace:configure.in:525: -1- AC_SUBST([RL_VERSION])
-m4trace:configure.in:525: -1- AC_SUBST_TRACE([RL_VERSION])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_VERSION$])
-m4trace:configure.in:525: -1- AC_SUBST([RL_MAJOR])
-m4trace:configure.in:525: -1- AC_SUBST_TRACE([RL_MAJOR])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_MAJOR$])
-m4trace:configure.in:525: -1- AC_SUBST([RL_MINOR])
-m4trace:configure.in:525: -1- AC_SUBST_TRACE([RL_MINOR])
-m4trace:configure.in:525: -1- m4_pattern_allow([^RL_MINOR$])
-m4trace:configure.in:538: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
-m4trace:configure.in:538: -1- m4_pattern_allow([^READLINE$])
-m4trace:configure.in:573: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
-m4trace:configure.in:573: -1- m4_pattern_allow([^HISTORY$])
-m4trace:configure.in:576: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
-m4trace:configure.in:576: -1- m4_pattern_allow([^BANG_HISTORY$])
-m4trace:configure.in:606: -1- AC_SUBST([READLINE_LIB])
-m4trace:configure.in:606: -1- AC_SUBST_TRACE([READLINE_LIB])
-m4trace:configure.in:606: -1- m4_pattern_allow([^READLINE_LIB$])
-m4trace:configure.in:607: -1- AC_SUBST([READLINE_DEP])
-m4trace:configure.in:607: -1- AC_SUBST_TRACE([READLINE_DEP])
-m4trace:configure.in:607: -1- m4_pattern_allow([^READLINE_DEP$])
-m4trace:configure.in:608: -1- AC_SUBST([RL_LIBDIR])
-m4trace:configure.in:608: -1- AC_SUBST_TRACE([RL_LIBDIR])
-m4trace:configure.in:608: -1- m4_pattern_allow([^RL_LIBDIR$])
-m4trace:configure.in:609: -1- AC_SUBST([RL_INCLUDEDIR])
-m4trace:configure.in:609: -1- AC_SUBST_TRACE([RL_INCLUDEDIR])
-m4trace:configure.in:609: -1- m4_pattern_allow([^RL_INCLUDEDIR$])
-m4trace:configure.in:610: -1- AC_SUBST([RL_INCLUDE])
-m4trace:configure.in:610: -1- AC_SUBST_TRACE([RL_INCLUDE])
-m4trace:configure.in:610: -1- m4_pattern_allow([^RL_INCLUDE$])
-m4trace:configure.in:611: -1- AC_SUBST([HISTORY_LIB])
-m4trace:configure.in:611: -1- AC_SUBST_TRACE([HISTORY_LIB])
-m4trace:configure.in:611: -1- m4_pattern_allow([^HISTORY_LIB$])
-m4trace:configure.in:612: -1- AC_SUBST([HISTORY_DEP])
-m4trace:configure.in:612: -1- AC_SUBST_TRACE([HISTORY_DEP])
-m4trace:configure.in:612: -1- m4_pattern_allow([^HISTORY_DEP$])
-m4trace:configure.in:613: -1- AC_SUBST([HIST_LIBDIR])
-m4trace:configure.in:613: -1- AC_SUBST_TRACE([HIST_LIBDIR])
-m4trace:configure.in:613: -1- m4_pattern_allow([^HIST_LIBDIR$])
-m4trace:configure.in:614: -1- AC_SUBST([TILDE_LIB])
-m4trace:configure.in:614: -1- AC_SUBST_TRACE([TILDE_LIB])
-m4trace:configure.in:614: -1- m4_pattern_allow([^TILDE_LIB$])
-m4trace:configure.in:619: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.in:619: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.in:619: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.in:619: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.in:619: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.in:619: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.in:619: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.in:619: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.in:619: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.in:619: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.in:620: -1- AC_SUBST([AR])
-m4trace:configure.in:620: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.in:620: -1- m4_pattern_allow([^AR$])
-m4trace:configure.in:624: -1- AC_SUBST([RANLIB])
-m4trace:configure.in:624: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.in:624: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.in:625: -1- AC_SUBST([YACC])
-m4trace:configure.in:625: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:625: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:625: -1- AC_SUBST([YACC])
-m4trace:configure.in:625: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:625: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:625: -1- AC_SUBST([YFLAGS])
-m4trace:configure.in:625: -1- AC_SUBST_TRACE([YFLAGS])
-m4trace:configure.in:625: -1- m4_pattern_allow([^YFLAGS$])
-m4trace:configure.in:626: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.in:626: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.in:626: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.in:632: -1- AC_SUBST([MAKE_SHELL])
-m4trace:configure.in:632: -1- AC_SUBST_TRACE([MAKE_SHELL])
-m4trace:configure.in:632: -1- m4_pattern_allow([^MAKE_SHELL$])
-m4trace:configure.in:654: -1- AC_SUBST([SIZE])
-m4trace:configure.in:654: -1- AC_SUBST_TRACE([SIZE])
-m4trace:configure.in:654: -1- m4_pattern_allow([^SIZE$])
-m4trace:configure.in:656: -1- m4_include([m4/stat-time.m4])
-m4trace:configure.in:657: -1- m4_include([m4/timespec.m4])
-m4trace:configure.in:660: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.in:660: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.in:663: -1- AC_DEFINE_TRACE_LITERAL([const])
-m4trace:configure.in:663: -1- m4_pattern_allow([^const$])
-m4trace:configure.in:663: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
+m4trace:configure.in:526: -1- AC_SUBST([RL_VERSION])
+m4trace:configure.in:526: -1- AC_SUBST_TRACE([RL_VERSION])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_VERSION$])
+m4trace:configure.in:526: -1- AC_SUBST([RL_MAJOR])
+m4trace:configure.in:526: -1- AC_SUBST_TRACE([RL_MAJOR])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_MAJOR$])
+m4trace:configure.in:526: -1- AC_SUBST([RL_MINOR])
+m4trace:configure.in:526: -1- AC_SUBST_TRACE([RL_MINOR])
+m4trace:configure.in:526: -1- m4_pattern_allow([^RL_MINOR$])
+m4trace:configure.in:539: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
+m4trace:configure.in:539: -1- m4_pattern_allow([^READLINE$])
+m4trace:configure.in:574: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
+m4trace:configure.in:574: -1- m4_pattern_allow([^HISTORY$])
+m4trace:configure.in:577: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
+m4trace:configure.in:577: -1- m4_pattern_allow([^BANG_HISTORY$])
+m4trace:configure.in:607: -1- AC_SUBST([READLINE_LIB])
+m4trace:configure.in:607: -1- AC_SUBST_TRACE([READLINE_LIB])
+m4trace:configure.in:607: -1- m4_pattern_allow([^READLINE_LIB$])
+m4trace:configure.in:608: -1- AC_SUBST([READLINE_DEP])
+m4trace:configure.in:608: -1- AC_SUBST_TRACE([READLINE_DEP])
+m4trace:configure.in:608: -1- m4_pattern_allow([^READLINE_DEP$])
+m4trace:configure.in:609: -1- AC_SUBST([RL_LIBDIR])
+m4trace:configure.in:609: -1- AC_SUBST_TRACE([RL_LIBDIR])
+m4trace:configure.in:609: -1- m4_pattern_allow([^RL_LIBDIR$])
+m4trace:configure.in:610: -1- AC_SUBST([RL_INCLUDEDIR])
+m4trace:configure.in:610: -1- AC_SUBST_TRACE([RL_INCLUDEDIR])
+m4trace:configure.in:610: -1- m4_pattern_allow([^RL_INCLUDEDIR$])
+m4trace:configure.in:611: -1- AC_SUBST([RL_INCLUDE])
+m4trace:configure.in:611: -1- AC_SUBST_TRACE([RL_INCLUDE])
+m4trace:configure.in:611: -1- m4_pattern_allow([^RL_INCLUDE$])
+m4trace:configure.in:612: -1- AC_SUBST([HISTORY_LIB])
+m4trace:configure.in:612: -1- AC_SUBST_TRACE([HISTORY_LIB])
+m4trace:configure.in:612: -1- m4_pattern_allow([^HISTORY_LIB$])
+m4trace:configure.in:613: -1- AC_SUBST([HISTORY_DEP])
+m4trace:configure.in:613: -1- AC_SUBST_TRACE([HISTORY_DEP])
+m4trace:configure.in:613: -1- m4_pattern_allow([^HISTORY_DEP$])
+m4trace:configure.in:614: -1- AC_SUBST([HIST_LIBDIR])
+m4trace:configure.in:614: -1- AC_SUBST_TRACE([HIST_LIBDIR])
+m4trace:configure.in:614: -1- m4_pattern_allow([^HIST_LIBDIR$])
+m4trace:configure.in:615: -1- AC_SUBST([TILDE_LIB])
+m4trace:configure.in:615: -1- AC_SUBST_TRACE([TILDE_LIB])
+m4trace:configure.in:615: -1- m4_pattern_allow([^TILDE_LIB$])
+m4trace:configure.in:620: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.in:620: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.in:620: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.in:620: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.in:620: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.in:620: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.in:620: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.in:621: -1- AC_SUBST([AR])
+m4trace:configure.in:621: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.in:621: -1- m4_pattern_allow([^AR$])
+m4trace:configure.in:625: -1- AC_SUBST([RANLIB])
+m4trace:configure.in:625: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.in:625: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.in:626: -1- AC_SUBST([YACC])
+m4trace:configure.in:626: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.in:626: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.in:626: -1- AC_SUBST([YACC])
+m4trace:configure.in:626: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.in:626: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.in:626: -1- AC_SUBST([YFLAGS])
+m4trace:configure.in:626: -1- AC_SUBST_TRACE([YFLAGS])
+m4trace:configure.in:626: -1- m4_pattern_allow([^YFLAGS$])
+m4trace:configure.in:627: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.in:627: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.in:627: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.in:633: -1- AC_SUBST([MAKE_SHELL])
+m4trace:configure.in:633: -1- AC_SUBST_TRACE([MAKE_SHELL])
+m4trace:configure.in:633: -1- m4_pattern_allow([^MAKE_SHELL$])
+m4trace:configure.in:655: -1- AC_SUBST([SIZE])
+m4trace:configure.in:655: -1- AC_SUBST_TRACE([SIZE])
+m4trace:configure.in:655: -1- m4_pattern_allow([^SIZE$])
+m4trace:configure.in:657: -1- m4_include([m4/stat-time.m4])
+m4trace:configure.in:658: -1- m4_include([m4/timespec.m4])
+m4trace:configure.in:661: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.in:661: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.in:664: -1- AC_DEFINE_TRACE_LITERAL([const])
+m4trace:configure.in:664: -1- m4_pattern_allow([^const$])
+m4trace:configure.in:664: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
 @%:@undef const])
-m4trace:configure.in:664: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+m4trace:configure.in:665: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
    calls it, or to nothing if \'inline\' is not supported under any name.  */
 #ifndef __cplusplus
 #undef inline
 #endif])
-m4trace:configure.in:665: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+m4trace:configure.in:666: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
 #if defined AC_APPLE_UNIVERSAL_BUILD
 # if defined __BIG_ENDIAN__
@@ -712,49 +712,49 @@ m4trace:configure.in:665: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGE
 #  undef WORDS_BIGENDIAN
 # endif
 #endif])
-m4trace:configure.in:665: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
-m4trace:configure.in:665: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
-m4trace:configure.in:665: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.in:665: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
-m4trace:configure.in:665: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
+m4trace:configure.in:666: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
+m4trace:configure.in:666: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
+m4trace:configure.in:666: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
+m4trace:configure.in:666: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
+m4trace:configure.in:666: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
 @%:@undef AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.in:666: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
-m4trace:configure.in:666: -1- m4_pattern_allow([^HAVE_STRINGIZE$])
-m4trace:configure.in:666: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
+m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
+m4trace:configure.in:667: -1- m4_pattern_allow([^HAVE_STRINGIZE$])
+m4trace:configure.in:667: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
 @%:@undef HAVE_STRINGIZE])
-m4trace:configure.in:667: -1- _m4_warn([obsolete], [The macro `AC_C_LONG_DOUBLE' is obsolete.
+m4trace:configure.in:668: -1- _m4_warn([obsolete], [The macro `AC_C_LONG_DOUBLE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/types.m4:451: AC_C_LONG_DOUBLE is expanded from...
-configure.in:667: the top level])
-m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE_WIDER])
-m4trace:configure.in:667: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE_WIDER$])
-m4trace:configure.in:667: -1- AH_OUTPUT([HAVE_LONG_DOUBLE_WIDER], [/* Define to 1 if the type `long double\' works and has more range or precision
+configure.in:668: the top level])
+m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE_WIDER])
+m4trace:configure.in:668: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE_WIDER$])
+m4trace:configure.in:668: -1- AH_OUTPUT([HAVE_LONG_DOUBLE_WIDER], [/* Define to 1 if the type `long double\' works and has more range or precision
    than `double\'. */
 @%:@undef HAVE_LONG_DOUBLE_WIDER])
-m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
-m4trace:configure.in:667: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE$])
-m4trace:configure.in:667: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if the type `long double\' works and has more range or precision
+m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
+m4trace:configure.in:668: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE$])
+m4trace:configure.in:668: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if the type `long double\' works and has more range or precision
    than `double\'. */
 @%:@undef HAVE_LONG_DOUBLE])
-m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
-m4trace:configure.in:668: -1- m4_pattern_allow([^PROTOTYPES$])
-m4trace:configure.in:668: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
+m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
+m4trace:configure.in:669: -1- m4_pattern_allow([^PROTOTYPES$])
+m4trace:configure.in:669: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
 @%:@undef PROTOTYPES])
-m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
-m4trace:configure.in:668: -1- m4_pattern_allow([^__PROTOTYPES$])
-m4trace:configure.in:668: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
+m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
+m4trace:configure.in:669: -1- m4_pattern_allow([^__PROTOTYPES$])
+m4trace:configure.in:669: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
 @%:@undef __PROTOTYPES])
-m4trace:configure.in:669: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc.  */
+m4trace:configure.in:670: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc.  */
 #ifndef __CHAR_UNSIGNED__
 # undef __CHAR_UNSIGNED__
 #endif])
-m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
-m4trace:configure.in:669: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
-m4trace:configure.in:670: -1- AC_DEFINE_TRACE_LITERAL([volatile])
-m4trace:configure.in:670: -1- m4_pattern_allow([^volatile$])
-m4trace:configure.in:670: -1- AH_OUTPUT([volatile], [/* Define to empty if the keyword `volatile\' does not work. Warning: valid
+m4trace:configure.in:670: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
+m4trace:configure.in:670: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
+m4trace:configure.in:671: -1- AC_DEFINE_TRACE_LITERAL([volatile])
+m4trace:configure.in:671: -1- m4_pattern_allow([^volatile$])
+m4trace:configure.in:671: -1- AH_OUTPUT([volatile], [/* Define to empty if the keyword `volatile\' does not work. Warning: valid
    code using `volatile\' can become incorrect without. Disable with care. */
 @%:@undef volatile])
-m4trace:configure.in:671: -1- AH_OUTPUT([restrict], [/* Define to the equivalent of the C99 \'restrict\' keyword, or to
+m4trace:configure.in:672: -1- AH_OUTPUT([restrict], [/* Define to the equivalent of the C99 \'restrict\' keyword, or to
    nothing if this is not supported.  Do not define if restrict is
    supported directly.  */
 #undef restrict
@@ -767,93 +767,93 @@ m4trace:configure.in:671: -1- AH_OUTPUT([restrict], [/* Define to the equivalent
 # define _Restrict
 # define __restrict__
 #endif])
-m4trace:configure.in:671: -1- AC_DEFINE_TRACE_LITERAL([restrict])
-m4trace:configure.in:671: -1- m4_pattern_allow([^restrict$])
-m4trace:configure.in:671: -1- AC_DEFINE_TRACE_LITERAL([restrict])
-m4trace:configure.in:671: -1- m4_pattern_allow([^restrict$])
-m4trace:configure.in:674: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
-m4trace:configure.in:674: -1- AC_SUBST([MKINSTALLDIRS])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([MKINSTALLDIRS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^MKINSTALLDIRS$])
-m4trace:configure.in:674: -1- AM_NLS
-m4trace:configure.in:674: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([USE_NLS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.in:674: -1- AC_SUBST([MSGFMT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([MSGFMT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^MSGFMT$])
-m4trace:configure.in:674: -1- AC_SUBST([GMSGFMT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([GMSGFMT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^GMSGFMT$])
-m4trace:configure.in:674: -1- AC_SUBST([XGETTEXT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([XGETTEXT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^XGETTEXT$])
-m4trace:configure.in:674: -1- AC_SUBST([MSGMERGE])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([MSGMERGE])
-m4trace:configure.in:674: -1- m4_pattern_allow([^MSGMERGE$])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
+m4trace:configure.in:672: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.in:672: -1- m4_pattern_allow([^restrict$])
+m4trace:configure.in:672: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.in:672: -1- m4_pattern_allow([^restrict$])
+m4trace:configure.in:675: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+m4trace:configure.in:675: -1- AC_SUBST([MKINSTALLDIRS])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([MKINSTALLDIRS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^MKINSTALLDIRS$])
+m4trace:configure.in:675: -1- AM_NLS
+m4trace:configure.in:675: -1- AC_SUBST([USE_NLS])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([USE_NLS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.in:675: -1- AC_SUBST([MSGFMT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([MSGFMT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^MSGFMT$])
+m4trace:configure.in:675: -1- AC_SUBST([GMSGFMT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([GMSGFMT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^GMSGFMT$])
+m4trace:configure.in:675: -1- AC_SUBST([XGETTEXT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([XGETTEXT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^XGETTEXT$])
+m4trace:configure.in:675: -1- AC_SUBST([MSGMERGE])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([MSGMERGE])
+m4trace:configure.in:675: -1- m4_pattern_allow([^MSGMERGE$])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/status.m4:1028: AC_OUTPUT_COMMANDS is expanded from...
 aclocal.m4:3707: AM_PO_SUBDIRS is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:674: -1- m4_pattern_allow([^off_t$])
-m4trace:configure.in:674: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.in:675: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.in:675: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
 @%:@undef off_t])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:674: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.in:674: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.in:675: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.in:675: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 @%:@undef size_t])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
 @%:@undef HAVE_ALLOCA_H])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_ALLOCA$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
 @%:@undef HAVE_ALLOCA])
-m4trace:configure.in:674: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:674: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([ALLOCA])
-m4trace:configure.in:674: -1- m4_pattern_allow([^ALLOCA$])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:674: -1- m4_pattern_allow([^C_ALLOCA$])
-m4trace:configure.in:674: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.in:675: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.in:675: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([ALLOCA])
+m4trace:configure.in:675: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.in:675: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.in:675: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
 @%:@undef C_ALLOCA])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:674: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
-m4trace:configure.in:674: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.in:675: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.in:675: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c\' support on those systems.
    */
 @%:@undef CRAY_STACKSEG_END])
-m4trace:configure.in:674: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.in:675: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at runtime.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
 @%:@undef STACK_DIRECTION])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:674: -1- m4_pattern_allow([^STACK_DIRECTION$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.in:675: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 @%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 @%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 @%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_MMAP$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_MMAP$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
 @%:@undef HAVE_MMAP])
-m4trace:configure.in:674: -1- AC_SUBST([GLIBC21])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([GLIBC21])
-m4trace:configure.in:674: -1- m4_pattern_allow([^GLIBC21$])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([GLIBC21])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([GLIBC21])
+m4trace:configure.in:675: -1- m4_pattern_allow([^GLIBC21$])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -861,12 +861,12 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is
 aclocal.m4:2613: gt_INTDIV0 is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$])
-m4trace:configure.in:674: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$])
+m4trace:configure.in:675: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
 @%:@undef INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -875,13 +875,13 @@ aclocal.m4:2715: jm_AC_HEADER_INTTYPES_H is expanded from...
 aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
    declares uintmax_t. */
 @%:@undef HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -890,13 +890,13 @@ aclocal.m4:3986: jm_AC_HEADER_STDINT_H is expanded from...
 aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
    uintmax_t. */
 @%:@undef HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -905,21 +905,21 @@ aclocal.m4:4043: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
 aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
 @%:@undef HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:674: -1- m4_pattern_allow([^uintmax_t$])
-m4trace:configure.in:674: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.in:675: -1- m4_pattern_allow([^uintmax_t$])
+m4trace:configure.in:675: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
    <inttypes.h> don\'t define. */
 @%:@undef uintmax_t])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_UINTMAX_T$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_UINTMAX_T$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
 @%:@undef HAVE_UINTMAX_T])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -927,12 +927,12 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
 aclocal.m4:2688: gt_HEADER_INTTYPES_H is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
 @%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -940,78 +940,78 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
 aclocal.m4:2743: gt_INTTYPES_PRI is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
-m4trace:configure.in:674: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$])
-m4trace:configure.in:674: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
+m4trace:configure.in:675: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$])
+m4trace:configure.in:675: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
 @%:@undef PRI_MACROS_BROKEN])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
 @%:@undef HAVE_ARGZ_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
 @%:@undef HAVE_LIMITS_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
 @%:@undef HAVE_LOCALE_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
 @%:@undef HAVE_NL_TYPES_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
 @%:@undef HAVE_MALLOC_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
 @%:@undef HAVE_STDDEF_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 @%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 @%:@undef HAVE_STRING_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 @%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
 @%:@undef HAVE_FEOF_UNLOCKED])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
 @%:@undef HAVE_FGETS_UNLOCKED])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
 @%:@undef HAVE_GETC_UNLOCKED])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
 @%:@undef HAVE_GETCWD])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
 @%:@undef HAVE_GETEGID])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
 @%:@undef HAVE_GETEUID])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
 @%:@undef HAVE_GETGID])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
 @%:@undef HAVE_GETUID])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
 @%:@undef HAVE_MEMPCPY])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
 @%:@undef HAVE_MUNMAP])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
 @%:@undef HAVE_PUTENV])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
 @%:@undef HAVE_SETENV])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
 @%:@undef HAVE_SETLOCALE])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
 @%:@undef HAVE_LOCALECONV])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
 @%:@undef HAVE_STPCPY])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
 @%:@undef HAVE_STRCASECMP])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
 @%:@undef HAVE_STRDUP])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
 @%:@undef HAVE_STRTOUL])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
 @%:@undef HAVE_TSEARCH])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
 @%:@undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
 @%:@undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
 @%:@undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
 @%:@undef HAVE___FSETLOCKING])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -1020,8 +1020,8 @@ aclocal.m4:2521: AM_ICONV_LINK is expanded from...
 aclocal.m4:2576: AM_ICONV is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -1030,30 +1030,30 @@ aclocal.m4:2521: AM_ICONV_LINK is expanded from...
 aclocal.m4:2576: AM_ICONV is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_ICONV$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_ICONV$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
 @%:@undef HAVE_ICONV])
-m4trace:configure.in:674: -1- AC_SUBST([LIBICONV])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([LIBICONV])
-m4trace:configure.in:674: -1- m4_pattern_allow([^LIBICONV$])
-m4trace:configure.in:674: -1- AC_SUBST([LTLIBICONV])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([LTLIBICONV])
-m4trace:configure.in:674: -1- m4_pattern_allow([^LTLIBICONV$])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([LIBICONV])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([LIBICONV])
+m4trace:configure.in:675: -1- m4_pattern_allow([^LIBICONV$])
+m4trace:configure.in:675: -1- AC_SUBST([LTLIBICONV])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([LTLIBICONV])
+m4trace:configure.in:675: -1- m4_pattern_allow([^LTLIBICONV$])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:2576: AM_ICONV is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
-m4trace:configure.in:674: -1- m4_pattern_allow([^ICONV_CONST$])
-m4trace:configure.in:674: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
+m4trace:configure.in:675: -1- m4_pattern_allow([^ICONV_CONST$])
+m4trace:configure.in:675: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
 @%:@undef ICONV_CONST])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -1061,12 +1061,12 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
 aclocal.m4:2040: AM_LANGINFO_CODESET is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
 @%:@undef HAVE_LANGINFO_CODESET])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
@@ -1074,588 +1074,581 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
 aclocal.m4:2810: AM_LC_MESSAGES is expanded from...
 aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
 @%:@undef HAVE_LC_MESSAGES])
-m4trace:configure.in:674: -1- AC_SUBST([INTLBISON])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([INTLBISON])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INTLBISON$])
-m4trace:configure.in:674: -1- AM_NLS
-m4trace:configure.in:674: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([USE_NLS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([INTLBISON])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([INTLBISON])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INTLBISON$])
+m4trace:configure.in:675: -1- AM_NLS
+m4trace:configure.in:675: -1- AC_SUBST([USE_NLS])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([USE_NLS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:674: the top level])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^ENABLE_NLS$])
-m4trace:configure.in:674: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^ENABLE_NLS$])
+m4trace:configure.in:675: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
    language is requested. */
 @%:@undef ENABLE_NLS])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_GETTEXT$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_GETTEXT$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
 @%:@undef HAVE_GETTEXT])
-m4trace:configure.in:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
-m4trace:configure.in:674: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
    */
 @%:@undef HAVE_DCGETTEXT])
-m4trace:configure.in:674: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL])
-m4trace:configure.in:674: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$])
-m4trace:configure.in:674: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL])
-m4trace:configure.in:674: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$])
-m4trace:configure.in:674: -1- AC_SUBST([CATOBJEXT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([CATOBJEXT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^CATOBJEXT$])
-m4trace:configure.in:674: -1- AC_SUBST([DATADIRNAME])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([DATADIRNAME])
-m4trace:configure.in:674: -1- m4_pattern_allow([^DATADIRNAME$])
-m4trace:configure.in:674: -1- AC_SUBST([INSTOBJEXT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([INSTOBJEXT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INSTOBJEXT$])
-m4trace:configure.in:674: -1- AC_SUBST([GENCAT])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([GENCAT])
-m4trace:configure.in:674: -1- m4_pattern_allow([^GENCAT$])
-m4trace:configure.in:674: -1- AC_SUBST([INTLOBJS])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([INTLOBJS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INTLOBJS$])
-m4trace:configure.in:674: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$])
-m4trace:configure.in:674: -1- AC_SUBST([INTLLIBS])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([INTLLIBS])
-m4trace:configure.in:674: -1- m4_pattern_allow([^INTLLIBS$])
-m4trace:configure.in:674: -1- AC_SUBST([LIBINTL])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([LIBINTL])
-m4trace:configure.in:674: -1- m4_pattern_allow([^LIBINTL$])
-m4trace:configure.in:674: -1- AC_SUBST([LTLIBINTL])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([LTLIBINTL])
-m4trace:configure.in:674: -1- m4_pattern_allow([^LTLIBINTL$])
-m4trace:configure.in:674: -1- AC_SUBST([POSUB])
-m4trace:configure.in:674: -1- AC_SUBST_TRACE([POSUB])
-m4trace:configure.in:674: -1- m4_pattern_allow([^POSUB$])
-m4trace:configure.in:677: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
+m4trace:configure.in:675: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$])
+m4trace:configure.in:675: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$])
+m4trace:configure.in:675: -1- AC_SUBST([CATOBJEXT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([CATOBJEXT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^CATOBJEXT$])
+m4trace:configure.in:675: -1- AC_SUBST([DATADIRNAME])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([DATADIRNAME])
+m4trace:configure.in:675: -1- m4_pattern_allow([^DATADIRNAME$])
+m4trace:configure.in:675: -1- AC_SUBST([INSTOBJEXT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([INSTOBJEXT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INSTOBJEXT$])
+m4trace:configure.in:675: -1- AC_SUBST([GENCAT])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([GENCAT])
+m4trace:configure.in:675: -1- m4_pattern_allow([^GENCAT$])
+m4trace:configure.in:675: -1- AC_SUBST([INTLOBJS])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([INTLOBJS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INTLOBJS$])
+m4trace:configure.in:675: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$])
+m4trace:configure.in:675: -1- AC_SUBST([INTLLIBS])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([INTLLIBS])
+m4trace:configure.in:675: -1- m4_pattern_allow([^INTLLIBS$])
+m4trace:configure.in:675: -1- AC_SUBST([LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([LIBINTL])
+m4trace:configure.in:675: -1- m4_pattern_allow([^LIBINTL$])
+m4trace:configure.in:675: -1- AC_SUBST([LTLIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([LTLIBINTL])
+m4trace:configure.in:675: -1- m4_pattern_allow([^LTLIBINTL$])
+m4trace:configure.in:675: -1- AC_SUBST([POSUB])
+m4trace:configure.in:675: -1- AC_SUBST_TRACE([POSUB])
+m4trace:configure.in:675: -1- m4_pattern_allow([^POSUB$])
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
    */
 @%:@undef HAVE_DIRENT_H])
-m4trace:configure.in:677: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
    */
 @%:@undef HAVE_SYS_NDIR_H])
-m4trace:configure.in:677: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
    */
 @%:@undef HAVE_SYS_DIR_H])
-m4trace:configure.in:677: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
 @%:@undef HAVE_NDIR_H])
-m4trace:configure.in:678: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.in:678: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.in:678: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+m4trace:configure.in:679: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
+m4trace:configure.in:679: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
+m4trace:configure.in:679: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 @%:@undef TIME_WITH_SYS_TIME])
-m4trace:configure.in:680: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.in:681: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
 @%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:680: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
-m4trace:configure.in:680: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:681: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
+m4trace:configure.in:681: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 @%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
 @%:@undef HAVE_STDARG_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
 @%:@undef HAVE_VARARGS_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
 @%:@undef HAVE_LIMITS_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 @%:@undef HAVE_STRING_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
 @%:@undef HAVE_MEMORY_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
 @%:@undef HAVE_LOCALE_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
 @%:@undef HAVE_TERMCAP_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
 @%:@undef HAVE_TERMIO_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
 @%:@undef HAVE_TERMIOS_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
 @%:@undef HAVE_DLFCN_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if you have the <stdbool.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if you have the <stdbool.h> header file. */
 @%:@undef HAVE_STDBOOL_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
 @%:@undef HAVE_STDDEF_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
 @%:@undef HAVE_STDINT_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
 @%:@undef HAVE_NETDB_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
 @%:@undef HAVE_PWD_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
 @%:@undef HAVE_GRP_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
 @%:@undef HAVE_STRINGS_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
 @%:@undef HAVE_REGEX_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
 @%:@undef HAVE_SYSLOG_H])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the <ulimit.h> header file. */
+m4trace:configure.in:683: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the <ulimit.h> header file. */
 @%:@undef HAVE_ULIMIT_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
 @%:@undef HAVE_SYS_PTE_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
 @%:@undef HAVE_SYS_STREAM_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
 @%:@undef HAVE_SYS_SELECT_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
 @%:@undef HAVE_SYS_FILE_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
 @%:@undef HAVE_SYS_RESOURCE_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 @%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
 @%:@undef HAVE_SYS_SOCKET_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
 @%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
 @%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
 @%:@undef HAVE_SYS_TIMES_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
 @%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
+m4trace:configure.in:687: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
 @%:@undef HAVE_SYS_WAIT_H])
-m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
+m4trace:configure.in:690: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
 @%:@undef HAVE_NETINET_IN_H])
-m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
+m4trace:configure.in:690: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
 @%:@undef HAVE_ARPA_INET_H])
-m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
-m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.in:701: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
 @%:@undef HAVE_ALLOCA_H])
-m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_ALLOCA$])
-m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.in:701: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
 @%:@undef HAVE_ALLOCA])
-m4trace:configure.in:700: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:700: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
-m4trace:configure.in:700: -1- AC_SUBST_TRACE([ALLOCA])
-m4trace:configure.in:700: -1- m4_pattern_allow([^ALLOCA$])
-m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:700: -1- m4_pattern_allow([^C_ALLOCA$])
-m4trace:configure.in:700: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.in:701: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.in:701: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
+m4trace:configure.in:701: -1- AC_SUBST_TRACE([ALLOCA])
+m4trace:configure.in:701: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.in:701: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.in:701: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
 @%:@undef C_ALLOCA])
-m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:700: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
-m4trace:configure.in:700: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.in:701: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.in:701: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c\' support on those systems.
    */
 @%:@undef CRAY_STACKSEG_END])
-m4trace:configure.in:700: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.in:701: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at runtime.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
 @%:@undef STACK_DIRECTION])
-m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:700: -1- m4_pattern_allow([^STACK_DIRECTION$])
-m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
-m4trace:configure.in:701: -1- m4_pattern_allow([^GETPGRP_VOID$])
-m4trace:configure.in:701: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.in:701: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
+m4trace:configure.in:702: -1- m4_pattern_allow([^GETPGRP_VOID$])
+m4trace:configure.in:702: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
 @%:@undef GETPGRP_VOID])
-m4trace:configure.in:702: -1- _m4_warn([obsolete], [The macro `AC_FUNC_SETVBUF_REVERSED' is obsolete.  Remove it and all references to SETVBUF_REVERSED.], [../../lib/autoconf/functions.m4:1714: AC_FUNC_SETVBUF_REVERSED is expanded from...
-configure.in:702: the top level])
-m4trace:configure.in:703: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
+m4trace:configure.in:703: -1- _m4_warn([obsolete], [The macro `AC_FUNC_SETVBUF_REVERSED' is obsolete.  Remove it and all references to SETVBUF_REVERSED.], [../../lib/autoconf/functions.m4:1714: AC_FUNC_SETVBUF_REVERSED is expanded from...
+configure.in:703: the top level])
+m4trace:configure.in:704: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
 @%:@undef HAVE_VPRINTF])
-m4trace:configure.in:703: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.in:703: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.in:703: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.in:703: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.in:703: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
+m4trace:configure.in:704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.in:704: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.in:704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
+m4trace:configure.in:704: -1- m4_pattern_allow([^HAVE_DOPRNT$])
+m4trace:configure.in:704: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
 @%:@undef HAVE_DOPRNT])
-m4trace:configure.in:704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
-m4trace:configure.in:704: -1- m4_pattern_allow([^HAVE_STRCOLL$])
-m4trace:configure.in:704: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
+m4trace:configure.in:705: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
+m4trace:configure.in:705: -1- m4_pattern_allow([^HAVE_STRCOLL$])
+m4trace:configure.in:705: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
    */
 @%:@undef HAVE_STRCOLL])
-m4trace:configure.in:725: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.in:725: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.in:730: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS vprint.$ac_objext"])
-m4trace:configure.in:730: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:730: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:730: -1- AC_LIBSOURCE([vprint.c])
-m4trace:configure.in:734: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
+m4trace:configure.in:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.in:726: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.in:731: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS vprint.$ac_objext"])
+m4trace:configure.in:731: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:731: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:731: -1- AC_LIBSOURCE([vprint.c])
+m4trace:configure.in:735: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/types.m4:738: AC_TYPE_SIGNAL is expanded from...
-configure.in:734: the top level])
-m4trace:configure.in:734: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:734: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.in:734: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+configure.in:735: the top level])
+m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.in:735: -1- m4_pattern_allow([^RETSIGTYPE$])
+m4trace:configure.in:735: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
 @%:@undef RETSIGTYPE])
-m4trace:configure.in:737: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
-m4trace:configure.in:737: -2- m4_pattern_allow([^HAVE_SETOSTYPE$])
-m4trace:configure.in:738: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
-m4trace:configure.in:738: -2- m4_pattern_allow([^HAVE_WAIT3$])
-m4trace:configure.in:741: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
-m4trace:configure.in:741: -2- m4_pattern_allow([^HAVE_MKFIFO$])
-m4trace:configure.in:741: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
-m4trace:configure.in:741: -2- m4_pattern_allow([^MKFIFO_MISSING$])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
+m4trace:configure.in:738: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
+m4trace:configure.in:738: -2- m4_pattern_allow([^HAVE_SETOSTYPE$])
+m4trace:configure.in:739: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
+m4trace:configure.in:739: -2- m4_pattern_allow([^HAVE_WAIT3$])
+m4trace:configure.in:742: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
+m4trace:configure.in:742: -2- m4_pattern_allow([^HAVE_MKFIFO$])
+m4trace:configure.in:742: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
+m4trace:configure.in:742: -2- m4_pattern_allow([^MKFIFO_MISSING$])
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
 @%:@undef HAVE_DUP2])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
 @%:@undef HAVE_EACCESS])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
 @%:@undef HAVE_FCNTL])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
 @%:@undef HAVE_GETDTABLESIZE])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
 @%:@undef HAVE_GETGROUPS])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
 @%:@undef HAVE_GETHOSTNAME])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 @%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
 @%:@undef HAVE_GETPEERNAME])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
 @%:@undef HAVE_GETRLIMIT])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
 @%:@undef HAVE_GETRUSAGE])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
 @%:@undef HAVE_GETTIMEOFDAY])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
 @%:@undef HAVE_KILL])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
 @%:@undef HAVE_KILLPG])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
 @%:@undef HAVE_LSTAT])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
 @%:@undef HAVE_READLINK])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
 @%:@undef HAVE_SBRK])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
 @%:@undef HAVE_SELECT])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
 @%:@undef HAVE_SETDTABLESIZE])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */
 @%:@undef HAVE_SETITIMER])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
 @%:@undef HAVE_TCGETPGRP])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
 @%:@undef HAVE_UNAME])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
 @%:@undef HAVE_ULIMIT])
-m4trace:configure.in:744: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
+m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
 @%:@undef HAVE_WAITPID])
-m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
+m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
 @%:@undef HAVE_RENAME])
-m4trace:configure.in:748: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RENAME])
-m4trace:configure.in:748: -1- m4_pattern_allow([^HAVE_RENAME$])
-m4trace:configure.in:748: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS rename.$ac_objext"])
-m4trace:configure.in:748: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:748: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:748: -1- AC_LIBSOURCE([rename.c])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
+m4trace:configure.in:749: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RENAME])
+m4trace:configure.in:749: -1- m4_pattern_allow([^HAVE_RENAME$])
+m4trace:configure.in:749: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS rename.$ac_objext"])
+m4trace:configure.in:749: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:749: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:749: -1- AC_LIBSOURCE([rename.c])
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
 @%:@undef HAVE_BCOPY])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
 @%:@undef HAVE_BZERO])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
 @%:@undef HAVE_CONFSTR])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_FACCESSAT], [/* Define to 1 if you have the `faccessat\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_FACCESSAT], [/* Define to 1 if you have the `faccessat\' function. */
 @%:@undef HAVE_FACCESSAT])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
 @%:@undef HAVE_FNMATCH])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
 @%:@undef HAVE_GETADDRINFO])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
 @%:@undef HAVE_GETHOSTBYNAME])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
 @%:@undef HAVE_GETSERVBYNAME])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
 @%:@undef HAVE_GETSERVENT])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
 @%:@undef HAVE_INET_ATON])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_IMAXDIV], [/* Define to 1 if you have the `imaxdiv\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_IMAXDIV], [/* Define to 1 if you have the `imaxdiv\' function. */
 @%:@undef HAVE_IMAXDIV])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
 @%:@undef HAVE_MEMMOVE])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
 @%:@undef HAVE_PATHCONF])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
 @%:@undef HAVE_PUTENV])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
 @%:@undef HAVE_RAISE])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
 @%:@undef HAVE_REGCOMP])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
 @%:@undef HAVE_REGEXEC])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
 @%:@undef HAVE_SETENV])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
 @%:@undef HAVE_SETLINEBUF])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
 @%:@undef HAVE_SETLOCALE])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
 @%:@undef HAVE_SETVBUF])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
 @%:@undef HAVE_SIGINTERRUPT])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
 @%:@undef HAVE_STRCHR])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
 @%:@undef HAVE_SYSCONF])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
 @%:@undef HAVE_SYSLOG])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
 @%:@undef HAVE_TCGETATTR])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
 @%:@undef HAVE_TIMES])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
 @%:@undef HAVE_TTYNAME])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
 @%:@undef HAVE_TZSET])
-m4trace:configure.in:751: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
+m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
 @%:@undef HAVE_UNSETENV])
-m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
+m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
 @%:@undef HAVE_VASPRINTF])
-m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
+m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
 @%:@undef HAVE_ASPRINTF])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
 @%:@undef HAVE_ISASCII])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
 @%:@undef HAVE_ISBLANK])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
 @%:@undef HAVE_ISGRAPH])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
 @%:@undef HAVE_ISPRINT])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
 @%:@undef HAVE_ISSPACE])
-m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
 @%:@undef HAVE_ISXDIGIT])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
 @%:@undef HAVE_GETPWENT])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
 @%:@undef HAVE_GETPWNAM])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
 @%:@undef HAVE_GETPWUID])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
 @%:@undef HAVE_GETCWD])
-m4trace:configure.in:760: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD])
-m4trace:configure.in:760: -1- m4_pattern_allow([^HAVE_GETCWD$])
-m4trace:configure.in:760: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
-m4trace:configure.in:760: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:760: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:760: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
-@%:@undef HAVE_MEMSET])
-m4trace:configure.in:760: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMSET])
-m4trace:configure.in:760: -1- m4_pattern_allow([^HAVE_MEMSET$])
-m4trace:configure.in:760: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS memset.$ac_objext"])
-m4trace:configure.in:760: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:760: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:760: -1- AC_LIBSOURCE([memset.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
-@%:@undef HAVE_STRCASECMP])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasecmp.$ac_objext"])
-m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strcasecmp.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRCASESTR], [/* Define to 1 if you have the `strcasestr\' function. */
-@%:@undef HAVE_STRCASESTR])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASESTR])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRCASESTR$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasestr.$ac_objext"])
-m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strcasestr.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
-@%:@undef HAVE_STRERROR])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRERROR$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strerror.$ac_objext"])
+m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD])
+m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_GETCWD$])
+m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
 m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strerror.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
-@%:@undef HAVE_STRFTIME])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRFTIME$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strftime.$ac_objext"])
-m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strftime.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
-@%:@undef HAVE_STRNLEN])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNLEN])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRNLEN$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strnlen.$ac_objext"])
-m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strnlen.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
-@%:@undef HAVE_STRPBRK])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRPBRK])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRPBRK$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strpbrk.$ac_objext"])
-m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strpbrk.c])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
-@%:@undef HAVE_STRSTR])
-m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSTR])
-m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_STRSTR$])
-m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strstr.$ac_objext"])
+m4trace:configure.in:761: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
+@%:@undef HAVE_MEMSET])
+m4trace:configure.in:761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMSET])
+m4trace:configure.in:761: -1- m4_pattern_allow([^HAVE_MEMSET$])
+m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS memset.$ac_objext"])
 m4trace:configure.in:761: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:761: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:761: -1- AC_LIBSOURCE([strstr.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
-@%:@undef HAVE_STRTOD])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOD])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOD$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
+m4trace:configure.in:761: -1- AC_LIBSOURCE([memset.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+@%:@undef HAVE_STRCASECMP])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasecmp.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtod.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
-@%:@undef HAVE_STRTOL])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOL])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOL$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtol.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strcasecmp.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRCASESTR], [/* Define to 1 if you have the `strcasestr\' function. */
+@%:@undef HAVE_STRCASESTR])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASESTR])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRCASESTR$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasestr.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtol.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
-@%:@undef HAVE_STRTOUL])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUL])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOUL$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoul.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strcasestr.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
+@%:@undef HAVE_STRERROR])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRERROR$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strerror.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtoul.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
-@%:@undef HAVE_STRTOLL])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOLL$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoll.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strerror.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
+@%:@undef HAVE_STRFTIME])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRFTIME$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strftime.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtoll.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
-@%:@undef HAVE_STRTOULL])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOULL])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOULL$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoull.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strftime.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
+@%:@undef HAVE_STRNLEN])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNLEN])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRNLEN$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strnlen.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtoull.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
-@%:@undef HAVE_STRTOIMAX])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOIMAX])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOIMAX$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoimax.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strnlen.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
+@%:@undef HAVE_STRPBRK])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRPBRK])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRPBRK$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strpbrk.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtoimax.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
-@%:@undef HAVE_STRTOUMAX])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUMAX])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRTOUMAX$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoumax.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strpbrk.c])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
+@%:@undef HAVE_STRSTR])
+m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSTR])
+m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_STRSTR$])
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strstr.$ac_objext"])
 m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([strtoumax.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_DPRINTF], [/* Define to 1 if you have the `dprintf\' function. */
-@%:@undef HAVE_DPRINTF])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DPRINTF])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_DPRINTF$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS dprintf.$ac_objext"])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strstr.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
+@%:@undef HAVE_STRTOD])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOD])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOD$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
 m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([dprintf.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRCHRNUL], [/* Define to 1 if you have the `strchrnul\' function. */
-@%:@undef HAVE_STRCHRNUL])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCHRNUL])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRCHRNUL$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strchrnul.$ac_objext"])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtod.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
+@%:@undef HAVE_STRTOL])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOL])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOL$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtol.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtol.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+@%:@undef HAVE_STRTOUL])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUL])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOUL$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoul.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoul.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
+@%:@undef HAVE_STRTOLL])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOLL$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoll.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoll.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
+@%:@undef HAVE_STRTOULL])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOULL])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOULL$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoull.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoull.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
+@%:@undef HAVE_STRTOIMAX])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOIMAX])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOIMAX$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoimax.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoimax.c])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
+@%:@undef HAVE_STRTOUMAX])
+m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUMAX])
+m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRTOUMAX$])
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoumax.$ac_objext"])
+m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoumax.c])
+m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_DPRINTF], [/* Define to 1 if you have the `dprintf\' function. */
+@%:@undef HAVE_DPRINTF])
+m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DPRINTF])
+m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_DPRINTF$])
+m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS dprintf.$ac_objext"])
 m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
 m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strchrnul.c])
-m4trace:configure.in:766: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
-m4trace:configure.in:766: -1- m4_pattern_allow([^HAVE_DECL_AUDIT_USER_TTY$])
-m4trace:configure.in:766: -1- AH_OUTPUT([HAVE_DECL_AUDIT_USER_TTY], [/* Define to 1 if you have the declaration of `AUDIT_USER_TTY\', and to 0 if
+m4trace:configure.in:764: -1- AC_LIBSOURCE([dprintf.c])
+m4trace:configure.in:765: -1- AH_OUTPUT([HAVE_STRCHRNUL], [/* Define to 1 if you have the `strchrnul\' function. */
+@%:@undef HAVE_STRCHRNUL])
+m4trace:configure.in:765: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCHRNUL])
+m4trace:configure.in:765: -1- m4_pattern_allow([^HAVE_STRCHRNUL$])
+m4trace:configure.in:765: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strchrnul.$ac_objext"])
+m4trace:configure.in:765: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:765: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:765: -1- AC_LIBSOURCE([strchrnul.c])
+m4trace:configure.in:767: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
+m4trace:configure.in:767: -1- m4_pattern_allow([^HAVE_DECL_AUDIT_USER_TTY$])
+m4trace:configure.in:767: -1- AH_OUTPUT([HAVE_DECL_AUDIT_USER_TTY], [/* Define to 1 if you have the declaration of `AUDIT_USER_TTY\', and to 0 if
    you don\'t. */
 @%:@undef HAVE_DECL_AUDIT_USER_TTY])
-m4trace:configure.in:768: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
-m4trace:configure.in:768: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$])
-m4trace:configure.in:768: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
+m4trace:configure.in:769: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
+m4trace:configure.in:769: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$])
+m4trace:configure.in:769: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
    don\'t. */
 @%:@undef HAVE_DECL_CONFSTR])
-m4trace:configure.in:769: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
-m4trace:configure.in:769: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$])
-m4trace:configure.in:769: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
+m4trace:configure.in:770: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
+m4trace:configure.in:770: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$])
+m4trace:configure.in:770: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
    */
 @%:@undef HAVE_DECL_PRINTF])
-m4trace:configure.in:770: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
-m4trace:configure.in:770: -1- m4_pattern_allow([^HAVE_DECL_SBRK$])
-m4trace:configure.in:770: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
+m4trace:configure.in:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
+m4trace:configure.in:771: -1- m4_pattern_allow([^HAVE_DECL_SBRK$])
+m4trace:configure.in:771: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
    */
 @%:@undef HAVE_DECL_SBRK])
-m4trace:configure.in:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
-m4trace:configure.in:771: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$])
-m4trace:configure.in:771: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
+m4trace:configure.in:772: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
+m4trace:configure.in:772: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$])
+m4trace:configure.in:772: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
    don\'t. */
 @%:@undef HAVE_DECL_SETREGID])
-m4trace:configure.in:772: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
-m4trace:configure.in:772: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$])
-m4trace:configure.in:772: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
+m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
+m4trace:configure.in:773: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$])
+m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
    */
 @%:@undef HAVE_DECL_STRCPY])
-m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:773: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$])
-m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
+m4trace:configure.in:774: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
+m4trace:configure.in:774: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$])
+m4trace:configure.in:774: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
    don\'t. */
 @%:@undef HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:776: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
-m4trace:configure.in:776: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$])
-m4trace:configure.in:776: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
+m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
+m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$])
+m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
    don\'t. */
 @%:@undef HAVE_DECL_STRTOLD])
-m4trace:configure.in:776: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2881: AC_CHECK_DECLS is expanded from...
-configure.in:776: the top level])
-m4trace:configure.in:776: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
-m4trace:configure.in:776: -1- m4_pattern_allow([^STRTOLD_BROKEN$])
-m4trace:configure.in:792: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
-aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:792: the top level])
+configure.in:777: the top level])
+m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
+m4trace:configure.in:777: -1- m4_pattern_allow([^STRTOLD_BROKEN$])
 m4trace:configure.in:793: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
@@ -1691,489 +1684,496 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:103: BASH_CHECK_DECL is expanded from...
 configure.in:797: the top level])
-m4trace:configure.in:799: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.in:798: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+aclocal.m4:103: BASH_CHECK_DECL is expanded from...
+configure.in:798: the top level])
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
 @%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:799: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:799: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
 @%:@undef HAVE_ALARM])
-m4trace:configure.in:799: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"])
-m4trace:configure.in:799: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:799: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:799: -1- AC_LIBSOURCE([mktime.c])
-m4trace:configure.in:806: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.in:800: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"])
+m4trace:configure.in:800: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:800: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:800: -1- AC_LIBSOURCE([mktime.c])
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
 @%:@undef HAVE_ARGZ_H])
-m4trace:configure.in:806: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
 @%:@undef HAVE_ERRNO_H])
-m4trace:configure.in:806: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
 @%:@undef HAVE_FCNTL_H])
-m4trace:configure.in:806: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
 @%:@undef HAVE_MALLOC_H])
-m4trace:configure.in:806: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
 @%:@undef HAVE_STDIO_EXT_H])
-m4trace:configure.in:809: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 @%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:809: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 @%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:809: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 @%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:809: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 @%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
-m4trace:configure.in:809: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
-m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:809: -1- m4_pattern_allow([^HAVE_MMAP$])
-m4trace:configure.in:809: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
+m4trace:configure.in:810: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
+m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.in:810: -1- m4_pattern_allow([^HAVE_MMAP$])
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
 @%:@undef HAVE_MMAP])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
 @%:@undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
 @%:@undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
 @%:@undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
 @%:@undef HAVE_DCGETTEXT])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
 @%:@undef HAVE_MEMPCPY])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
 @%:@undef HAVE_MUNMAP])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
 @%:@undef HAVE_STPCPY])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
 @%:@undef HAVE_STRCSPN])
-m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
 @%:@undef HAVE_STRDUP])
-m4trace:configure.in:819: -1- AC_SUBST([INTL_DEP])
-m4trace:configure.in:819: -1- AC_SUBST_TRACE([INTL_DEP])
-m4trace:configure.in:819: -1- m4_pattern_allow([^INTL_DEP$])
-m4trace:configure.in:820: -1- AC_SUBST([INTL_INC])
-m4trace:configure.in:820: -1- AC_SUBST_TRACE([INTL_INC])
-m4trace:configure.in:820: -1- m4_pattern_allow([^INTL_INC$])
-m4trace:configure.in:821: -1- AC_SUBST([LIBINTL_H])
-m4trace:configure.in:821: -1- AC_SUBST_TRACE([LIBINTL_H])
-m4trace:configure.in:821: -1- m4_pattern_allow([^LIBINTL_H$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
+m4trace:configure.in:820: -1- AC_SUBST([INTL_DEP])
+m4trace:configure.in:820: -1- AC_SUBST_TRACE([INTL_DEP])
+m4trace:configure.in:820: -1- m4_pattern_allow([^INTL_DEP$])
+m4trace:configure.in:821: -1- AC_SUBST([INTL_INC])
+m4trace:configure.in:821: -1- AC_SUBST_TRACE([INTL_INC])
+m4trace:configure.in:821: -1- m4_pattern_allow([^INTL_INC$])
+m4trace:configure.in:822: -1- AC_SUBST([LIBINTL_H])
+m4trace:configure.in:822: -1- AC_SUBST_TRACE([LIBINTL_H])
+m4trace:configure.in:822: -1- m4_pattern_allow([^LIBINTL_H$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
 @%:@undef HAVE_WCTYPE_H])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_H])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WCTYPE_H$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_H])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WCTYPE_H$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
 @%:@undef HAVE_WCHAR_H])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_H])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WCHAR_H$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_H])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WCHAR_H$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
 @%:@undef HAVE_LANGINFO_H])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_H])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_LANGINFO_H$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_MBRLEN$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_MBSCMP$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_MBSCMP$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSNRTOWCS])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_MBSNRTOWCS$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_MBSRTOWCS$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_MBSCHR], [/* Define to 1 if you have the `mbschr\' function. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_H])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_LANGINFO_H$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_MBRLEN$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_MBSCMP$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_MBSCMP$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSNRTOWCS])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_MBSNRTOWCS$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_MBSRTOWCS$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_MBSCHR], [/* Define to 1 if you have the `mbschr\' function. */
 @%:@undef HAVE_MBSCHR])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCHR])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_MBSCHR$])
-m4trace:configure.in:827: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mbschr.$ac_objext"])
-m4trace:configure.in:827: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:827: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:827: -1- AC_LIBSOURCE([mbschr.c])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_WCRTOMB$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_WCSCOLL$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_WCSDUP$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_WCWIDTH$])
-m4trace:configure.in:827: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
-m4trace:configure.in:827: -2- m4_pattern_allow([^HAVE_WCTYPE$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCHR])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_MBSCHR$])
+m4trace:configure.in:828: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mbschr.$ac_objext"])
+m4trace:configure.in:828: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:828: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:828: -1- AC_LIBSOURCE([mbschr.c])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_WCRTOMB$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_WCSCOLL$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_WCSDUP$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_WCWIDTH$])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
+m4trace:configure.in:828: -2- m4_pattern_allow([^HAVE_WCTYPE$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */
 @%:@undef HAVE_WCSWIDTH])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCSWIDTH])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WCSWIDTH$])
-m4trace:configure.in:827: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS wcswidth.$ac_objext"])
-m4trace:configure.in:827: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:827: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:827: -1- AC_LIBSOURCE([wcswidth.c])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCSWIDTH])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WCSWIDTH$])
+m4trace:configure.in:828: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS wcswidth.$ac_objext"])
+m4trace:configure.in:828: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:828: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:828: -1- AC_LIBSOURCE([wcswidth.c])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
 @%:@undef HAVE_MBRTOWC])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_MBSTATE_T$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_MBSTATE_T$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
 @%:@undef HAVE_ISWLOWER])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
 @%:@undef HAVE_ISWUPPER])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
 @%:@undef HAVE_TOWLOWER])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
 @%:@undef HAVE_TOWUPPER])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
 @%:@undef HAVE_ISWCTYPE])
-m4trace:configure.in:827: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
-m4trace:configure.in:827: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WCHAR_T$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WCHAR_T$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
 @%:@undef HAVE_WCHAR_T])
-m4trace:configure.in:827: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WCTYPE_T$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WCTYPE_T$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
 @%:@undef HAVE_WCTYPE_T])
-m4trace:configure.in:827: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_WINT_T$])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_WINT_T$])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
 @%:@undef HAVE_WINT_T])
-m4trace:configure.in:827: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2749: AC_RUN_IFELSE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2749: AC_RUN_IFELSE is expanded from...
 ../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
-m4trace:configure.in:827: -1- m4_pattern_allow([^WCWIDTH_BROKEN$])
-m4trace:configure.in:827: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
+m4trace:configure.in:828: -1- m4_pattern_allow([^WCWIDTH_BROKEN$])
+m4trace:configure.in:828: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
 @%:@undef WCWIDTH_BROKEN])
-m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
 @%:@undef HAVE_LOCALE_CHARSET])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_CHARSET])
-m4trace:configure.in:827: -1- m4_pattern_allow([^HAVE_LOCALE_CHARSET$])
-m4trace:configure.in:831: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_CHARSET])
+m4trace:configure.in:828: -1- m4_pattern_allow([^HAVE_LOCALE_CHARSET$])
+m4trace:configure.in:832: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
 @%:@undef HAVE_LIBDL])
-m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
-m4trace:configure.in:831: -1- m4_pattern_allow([^HAVE_LIBDL$])
-m4trace:configure.in:832: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
+m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
+m4trace:configure.in:832: -1- m4_pattern_allow([^HAVE_LIBDL$])
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
 @%:@undef HAVE_DLOPEN])
-m4trace:configure.in:832: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
 @%:@undef HAVE_DLCLOSE])
-m4trace:configure.in:832: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
 @%:@undef HAVE_DLSYM])
-m4trace:configure.in:836: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
+m4trace:configure.in:837: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/specific.m4:41: AC_DECL_SYS_SIGLIST is expanded from...
-configure.in:836: the top level])
-m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:836: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$])
-m4trace:configure.in:836: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
+configure.in:837: the top level])
+m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
+m4trace:configure.in:837: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$])
+m4trace:configure.in:837: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
    don\'t. */
 @%:@undef HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:840: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:841: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:563: BASH_FUNC_INET_ATON is expanded from...
-configure.in:840: the top level])
-m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
-m4trace:configure.in:840: -1- m4_pattern_allow([^HAVE_INET_ATON$])
-m4trace:configure.in:840: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS inet_aton.$ac_objext"])
-m4trace:configure.in:840: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:840: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:840: -1- AC_LIBSOURCE([inet_aton.c])
-m4trace:configure.in:846: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
+configure.in:841: the top level])
+m4trace:configure.in:841: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
+m4trace:configure.in:841: -1- m4_pattern_allow([^HAVE_INET_ATON$])
+m4trace:configure.in:841: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS inet_aton.$ac_objext"])
+m4trace:configure.in:841: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:841: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:841: -1- AC_LIBSOURCE([inet_aton.c])
+m4trace:configure.in:847: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
 @%:@undef HAVE_LIBSUN])
-m4trace:configure.in:846: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
-m4trace:configure.in:846: -1- m4_pattern_allow([^HAVE_LIBSUN$])
-m4trace:configure.in:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
-m4trace:configure.in:851: -1- m4_pattern_allow([^HAVE_LIBSOCKET$])
-m4trace:configure.in:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
-m4trace:configure.in:851: -1- m4_pattern_allow([^HAVE_GETPEERNAME$])
-m4trace:configure.in:855: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:847: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
+m4trace:configure.in:847: -1- m4_pattern_allow([^HAVE_LIBSUN$])
+m4trace:configure.in:852: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
+m4trace:configure.in:852: -1- m4_pattern_allow([^HAVE_LIBSOCKET$])
+m4trace:configure.in:852: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
+m4trace:configure.in:852: -1- m4_pattern_allow([^HAVE_GETPEERNAME$])
+m4trace:configure.in:856: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:732: BASH_FUNC_GETHOSTBYNAME is expanded from...
-configure.in:855: the top level])
-m4trace:configure.in:855: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
-m4trace:configure.in:855: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$])
-m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:859: -1- m4_pattern_allow([^uid_t$])
-m4trace:configure.in:859: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+configure.in:856: the top level])
+m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
+m4trace:configure.in:856: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$])
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.in:860: -1- m4_pattern_allow([^uid_t$])
+m4trace:configure.in:860: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 @%:@undef uid_t])
-m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:859: -1- m4_pattern_allow([^gid_t$])
-m4trace:configure.in:859: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.in:860: -1- m4_pattern_allow([^gid_t$])
+m4trace:configure.in:860: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 @%:@undef gid_t])
-m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
-m4trace:configure.in:859: -1- m4_pattern_allow([^GETGROUPS_T$])
-m4trace:configure.in:859: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
+m4trace:configure.in:860: -1- m4_pattern_allow([^GETGROUPS_T$])
+m4trace:configure.in:860: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
    this is either `int\' or `gid_t\'. */
 @%:@undef GETGROUPS_T])
-m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:860: -1- m4_pattern_allow([^off_t$])
-m4trace:configure.in:860: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
+m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.in:861: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.in:861: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
 @%:@undef off_t])
-m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
-m4trace:configure.in:861: -1- m4_pattern_allow([^mode_t$])
-m4trace:configure.in:861: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
+m4trace:configure.in:862: -1- m4_pattern_allow([^mode_t$])
+m4trace:configure.in:862: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef mode_t])
-m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:862: -1- m4_pattern_allow([^uid_t$])
-m4trace:configure.in:862: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.in:863: -1- m4_pattern_allow([^uid_t$])
+m4trace:configure.in:863: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 @%:@undef uid_t])
-m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:862: -1- m4_pattern_allow([^gid_t$])
-m4trace:configure.in:862: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.in:863: -1- m4_pattern_allow([^gid_t$])
+m4trace:configure.in:863: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 @%:@undef gid_t])
-m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
-m4trace:configure.in:863: -1- m4_pattern_allow([^pid_t$])
-m4trace:configure.in:863: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
+m4trace:configure.in:864: -1- m4_pattern_allow([^pid_t$])
+m4trace:configure.in:864: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef pid_t])
-m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:864: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.in:864: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.in:865: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.in:865: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 @%:@undef size_t])
-m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
-m4trace:configure.in:865: -1- m4_pattern_allow([^ssize_t$])
-m4trace:configure.in:865: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
+m4trace:configure.in:866: -1- m4_pattern_allow([^ssize_t$])
+m4trace:configure.in:866: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef ssize_t])
-m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([time_t])
-m4trace:configure.in:866: -1- m4_pattern_allow([^time_t$])
-m4trace:configure.in:866: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([time_t])
+m4trace:configure.in:867: -1- m4_pattern_allow([^time_t$])
+m4trace:configure.in:867: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
 @%:@undef time_t])
-m4trace:configure.in:868: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:869: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:472: BASH_TYPE_LONG_LONG is expanded from...
-configure.in:868: the top level])
-m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
-m4trace:configure.in:868: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
-m4trace:configure.in:869: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:869: the top level])
+m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
+m4trace:configure.in:869: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
+m4trace:configure.in:870: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:486: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from...
-configure.in:869: the top level])
-m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:869: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
-m4trace:configure.in:871: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
+configure.in:870: the top level])
+m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.in:870: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
+m4trace:configure.in:872: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/types.m4:738: AC_TYPE_SIGNAL is expanded from...
-configure.in:871: the top level])
-m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:871: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.in:871: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+configure.in:872: the top level])
+m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.in:872: -1- m4_pattern_allow([^RETSIGTYPE$])
+m4trace:configure.in:872: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
 @%:@undef RETSIGTYPE])
-m4trace:configure.in:872: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:873: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:537: BASH_TYPE_SIG_ATOMIC_T is expanded from...
-configure.in:872: the top level])
-m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
-m4trace:configure.in:872: -1- m4_pattern_allow([^sig_atomic_t$])
-m4trace:configure.in:872: -1- AH_OUTPUT([sig_atomic_t], [/* Define to `int\' if <sys/types.h> does not define. */
+configure.in:873: the top level])
+m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
+m4trace:configure.in:873: -1- m4_pattern_allow([^sig_atomic_t$])
+m4trace:configure.in:873: -1- AH_OUTPUT([sig_atomic_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef sig_atomic_t])
-m4trace:configure.in:874: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
-m4trace:configure.in:874: -1- m4_pattern_allow([^SIZEOF_CHAR$])
-m4trace:configure.in:874: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
+m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
+m4trace:configure.in:875: -1- m4_pattern_allow([^SIZEOF_CHAR$])
+m4trace:configure.in:875: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
 @%:@undef SIZEOF_CHAR])
-m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
-m4trace:configure.in:875: -1- m4_pattern_allow([^SIZEOF_SHORT$])
-m4trace:configure.in:875: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
+m4trace:configure.in:876: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
+m4trace:configure.in:876: -1- m4_pattern_allow([^SIZEOF_SHORT$])
+m4trace:configure.in:876: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
 @%:@undef SIZEOF_SHORT])
-m4trace:configure.in:876: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
-m4trace:configure.in:876: -1- m4_pattern_allow([^SIZEOF_INT$])
-m4trace:configure.in:876: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
+m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
+m4trace:configure.in:877: -1- m4_pattern_allow([^SIZEOF_INT$])
+m4trace:configure.in:877: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
 @%:@undef SIZEOF_INT])
-m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
-m4trace:configure.in:877: -1- m4_pattern_allow([^SIZEOF_LONG$])
-m4trace:configure.in:877: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
+m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
+m4trace:configure.in:878: -1- m4_pattern_allow([^SIZEOF_LONG$])
+m4trace:configure.in:878: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
 @%:@undef SIZEOF_LONG])
-m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
-m4trace:configure.in:878: -1- m4_pattern_allow([^SIZEOF_CHAR_P$])
-m4trace:configure.in:878: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of `char *\', as computed by sizeof. */
+m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
+m4trace:configure.in:879: -1- m4_pattern_allow([^SIZEOF_CHAR_P$])
+m4trace:configure.in:879: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of `char *\', as computed by sizeof. */
 @%:@undef SIZEOF_CHAR_P])
-m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
-m4trace:configure.in:879: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
-m4trace:configure.in:879: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
+m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
+m4trace:configure.in:880: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
+m4trace:configure.in:880: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
 @%:@undef SIZEOF_DOUBLE])
-m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
-m4trace:configure.in:880: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
-m4trace:configure.in:880: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
+m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
+m4trace:configure.in:881: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
+m4trace:configure.in:881: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
 @%:@undef SIZEOF_LONG_LONG])
-m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([u_int])
-m4trace:configure.in:882: -1- m4_pattern_allow([^u_int$])
-m4trace:configure.in:882: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([u_int])
+m4trace:configure.in:883: -1- m4_pattern_allow([^u_int$])
+m4trace:configure.in:883: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 @%:@undef u_int])
-m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([u_long])
-m4trace:configure.in:883: -1- m4_pattern_allow([^u_long$])
-m4trace:configure.in:883: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([u_long])
+m4trace:configure.in:884: -1- m4_pattern_allow([^u_long$])
+m4trace:configure.in:884: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
 @%:@undef u_long])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:885: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:885: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
 @%:@undef bits16_t])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:885: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:885: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
 @%:@undef bits16_t])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:885: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:885: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
 @%:@undef bits16_t])
-m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:886: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:886: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
 @%:@undef u_bits16_t])
-m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:886: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:886: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
 @%:@undef u_bits16_t])
-m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:886: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:886: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
 @%:@undef u_bits16_t])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef bits32_t])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
 @%:@undef bits32_t])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef bits32_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 @%:@undef u_bits32_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
 @%:@undef u_bits32_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 @%:@undef u_bits32_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
 @%:@undef bits64_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
 @%:@undef bits64_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
 @%:@undef bits64_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
 @%:@undef bits64_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
 @%:@undef bits64_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef ptrdiff_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
 @%:@undef ptrdiff_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
 @%:@undef ptrdiff_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
 @%:@undef ptrdiff_t])
-m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
-m4trace:configure.in:894: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$])
-m4trace:configure.in:894: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
+m4trace:configure.in:895: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
+m4trace:configure.in:895: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$])
+m4trace:configure.in:895: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
 @%:@undef STAT_MACROS_BROKEN])
-m4trace:configure.in:899: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
-m4trace:configure.in:899: -1- m4_pattern_allow([^HAVE_HASH_BANG_EXEC$])
-m4trace:configure.in:904: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:900: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
+m4trace:configure.in:900: -1- m4_pattern_allow([^HAVE_HASH_BANG_EXEC$])
+m4trace:configure.in:905: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:549: BASH_FUNC_LSTAT is expanded from...
-configure.in:904: the top level])
-m4trace:configure.in:904: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
-m4trace:configure.in:904: -1- m4_pattern_allow([^HAVE_LSTAT$])
-m4trace:configure.in:908: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:905: the top level])
+m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
+m4trace:configure.in:905: -1- m4_pattern_allow([^HAVE_LSTAT$])
+m4trace:configure.in:909: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1920: BASH_FUNC_CTYPE_NONASCII is expanded from...
-configure.in:908: the top level])
-m4trace:configure.in:908: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
-m4trace:configure.in:908: -1- m4_pattern_allow([^CTYPE_NON_ASCII$])
-m4trace:configure.in:909: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:909: the top level])
+m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
+m4trace:configure.in:909: -1- m4_pattern_allow([^CTYPE_NON_ASCII$])
+m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:270: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from...
-configure.in:909: the top level])
-m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
-m4trace:configure.in:909: -1- m4_pattern_allow([^DUP2_BROKEN$])
-m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:910: the top level])
+m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
+m4trace:configure.in:910: -1- m4_pattern_allow([^DUP2_BROKEN$])
+m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1235: BASH_SYS_PGRP_SYNC is expanded from...
-configure.in:910: the top level])
-m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:910: -1- m4_pattern_allow([^PGRP_PIPE$])
-m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:911: the top level])
+m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.in:911: -1- m4_pattern_allow([^PGRP_PIPE$])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:911: the top level])
-m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2662: _AC_LINK_IFELSE is expanded from...
@@ -2182,8 +2182,8 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:911: the top level])
-m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2662: _AC_LINK_IFELSE is expanded from...
@@ -2196,77 +2196,77 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:911: the top level])
-m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
-m4trace:configure.in:911: -1- m4_pattern_allow([^HAVE_POSIX_SIGNALS$])
-m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
-m4trace:configure.in:911: -1- m4_pattern_allow([^HAVE_BSD_SIGNALS$])
-m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
-m4trace:configure.in:911: -1- m4_pattern_allow([^HAVE_USG_SIGHOLD$])
-m4trace:configure.in:914: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
+m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_POSIX_SIGNALS$])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
+m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_BSD_SIGNALS$])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
+m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_USG_SIGHOLD$])
+m4trace:configure.in:915: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:253: BASH_SYS_ERRLIST is expanded from...
-configure.in:914: the top level])
-m4trace:configure.in:914: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
-m4trace:configure.in:914: -1- m4_pattern_allow([^HAVE_SYS_ERRLIST$])
-m4trace:configure.in:915: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:915: the top level])
+m4trace:configure.in:915: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
+m4trace:configure.in:915: -1- m4_pattern_allow([^HAVE_SYS_ERRLIST$])
+m4trace:configure.in:916: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:211: BASH_SYS_SIGLIST is expanded from...
-configure.in:915: the top level])
-m4trace:configure.in:915: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
-m4trace:configure.in:915: -1- m4_pattern_allow([^HAVE_SYS_SIGLIST$])
-m4trace:configure.in:916: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:916: the top level])
+m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
+m4trace:configure.in:916: -1- m4_pattern_allow([^HAVE_SYS_SIGLIST$])
+m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:167: BASH_DECL_UNDER_SYS_SIGLIST is expanded from...
 aclocal.m4:184: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:916: the top level])
-m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
-m4trace:configure.in:916: -1- m4_pattern_allow([^UNDER_SYS_SIGLIST_DECLARED$])
-m4trace:configure.in:916: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:917: the top level])
+m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
+m4trace:configure.in:917: -1- m4_pattern_allow([^UNDER_SYS_SIGLIST_DECLARED$])
+m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:184: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:916: the top level])
-m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
-m4trace:configure.in:916: -1- m4_pattern_allow([^HAVE_UNDER_SYS_SIGLIST$])
-m4trace:configure.in:919: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:917: the top level])
+m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
+m4trace:configure.in:917: -1- m4_pattern_allow([^HAVE_UNDER_SYS_SIGLIST$])
+m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:366: BASH_TYPE_SIGHANDLER is expanded from...
-configure.in:919: the top level])
-m4trace:configure.in:919: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
-m4trace:configure.in:919: -1- m4_pattern_allow([^VOID_SIGHANDLER$])
-m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
-m4trace:configure.in:920: -1- m4_pattern_allow([^clock_t$])
-m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
-m4trace:configure.in:921: -1- m4_pattern_allow([^sigset_t$])
-m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
-m4trace:configure.in:922: -1- m4_pattern_allow([^HAVE_QUAD_T$])
-m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
-m4trace:configure.in:922: -1- m4_pattern_allow([^quad_t$])
-m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
-m4trace:configure.in:923: -1- m4_pattern_allow([^intmax_t$])
-m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:924: -1- m4_pattern_allow([^uintmax_t$])
-m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
-m4trace:configure.in:926: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$])
-m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
-m4trace:configure.in:926: -1- m4_pattern_allow([^socklen_t$])
-m4trace:configure.in:928: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:920: the top level])
+m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
+m4trace:configure.in:920: -1- m4_pattern_allow([^VOID_SIGHANDLER$])
+m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
+m4trace:configure.in:921: -1- m4_pattern_allow([^clock_t$])
+m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
+m4trace:configure.in:922: -1- m4_pattern_allow([^sigset_t$])
+m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
+m4trace:configure.in:923: -1- m4_pattern_allow([^HAVE_QUAD_T$])
+m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
+m4trace:configure.in:923: -1- m4_pattern_allow([^quad_t$])
+m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
+m4trace:configure.in:924: -1- m4_pattern_allow([^intmax_t$])
+m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.in:925: -1- m4_pattern_allow([^uintmax_t$])
+m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
+m4trace:configure.in:927: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$])
+m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
+m4trace:configure.in:927: -1- m4_pattern_allow([^socklen_t$])
+m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:507: BASH_TYPE_RLIMIT is expanded from...
-configure.in:928: the top level])
-m4trace:configure.in:928: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:929: the top level])
+m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
@@ -2275,50 +2275,50 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:507: BASH_TYPE_RLIMIT is expanded from...
-configure.in:928: the top level])
-m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:928: -1- m4_pattern_allow([^RLIMTYPE$])
-m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:928: -1- m4_pattern_allow([^RLIMTYPE$])
-m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INTMAX_T])
-m4trace:configure.in:930: -1- m4_pattern_allow([^SIZEOF_INTMAX_T$])
-m4trace:configure.in:930: -1- AH_OUTPUT([SIZEOF_INTMAX_T], [/* The size of `intmax_t\', as computed by sizeof. */
+configure.in:929: the top level])
+m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.in:929: -1- m4_pattern_allow([^RLIMTYPE$])
+m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.in:929: -1- m4_pattern_allow([^RLIMTYPE$])
+m4trace:configure.in:931: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INTMAX_T])
+m4trace:configure.in:931: -1- m4_pattern_allow([^SIZEOF_INTMAX_T$])
+m4trace:configure.in:931: -1- AH_OUTPUT([SIZEOF_INTMAX_T], [/* The size of `intmax_t\', as computed by sizeof. */
 @%:@undef SIZEOF_INTMAX_T])
-m4trace:configure.in:933: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
-m4trace:configure.in:933: -2- m4_pattern_allow([^TERMIOS_LDISC$])
-m4trace:configure.in:934: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
-m4trace:configure.in:934: -2- m4_pattern_allow([^TERMIO_LDISC$])
-m4trace:configure.in:935: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:934: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
+m4trace:configure.in:934: -2- m4_pattern_allow([^TERMIOS_LDISC$])
+m4trace:configure.in:935: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
+m4trace:configure.in:935: -2- m4_pattern_allow([^TERMIO_LDISC$])
+m4trace:configure.in:936: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1042: BASH_STRUCT_DIRENT_D_INO is expanded from...
-configure.in:935: the top level])
-m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
-m4trace:configure.in:935: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_INO$])
-m4trace:configure.in:936: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:936: the top level])
+m4trace:configure.in:936: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
+m4trace:configure.in:936: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_INO$])
+m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1075: BASH_STRUCT_DIRENT_D_FILENO is expanded from...
-configure.in:936: the top level])
-m4trace:configure.in:936: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
-m4trace:configure.in:936: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_FILENO$])
-m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:937: the top level])
+m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
+m4trace:configure.in:937: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_FILENO$])
+m4trace:configure.in:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1108: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from...
-configure.in:937: the top level])
-m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
-m4trace:configure.in:937: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_NAMLEN$])
-m4trace:configure.in:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:938: the top level])
+m4trace:configure.in:938: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
+m4trace:configure.in:938: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_NAMLEN$])
+m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1173: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:938: the top level])
-m4trace:configure.in:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:939: the top level])
+m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
@@ -2327,303 +2327,303 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1173: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:938: the top level])
-m4trace:configure.in:938: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
-m4trace:configure.in:938: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_SYS_IOCTL$])
-m4trace:configure.in:938: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
-m4trace:configure.in:938: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_TERMIOS$])
-m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
-m4trace:configure.in:939: -1- m4_pattern_allow([^HAVE_TIMEVAL$])
-m4trace:configure.in:940: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:940: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLOCKS$])
-m4trace:configure.in:940: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is a member of `struct stat\'. */
+configure.in:939: the top level])
+m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
+m4trace:configure.in:939: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_SYS_IOCTL$])
+m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
+m4trace:configure.in:939: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_TERMIOS$])
+m4trace:configure.in:940: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
+m4trace:configure.in:940: -1- m4_pattern_allow([^HAVE_TIMEVAL$])
+m4trace:configure.in:941: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
+m4trace:configure.in:941: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLOCKS$])
+m4trace:configure.in:941: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is a member of `struct stat\'. */
 @%:@undef HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:941: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
-m4trace:configure.in:941: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
-m4trace:configure.in:941: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
+m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
+m4trace:configure.in:942: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
+m4trace:configure.in:942: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
 @%:@undef TM_IN_SYS_TIME])
-m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_ZONE$])
-m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is a member of `struct tm\'. */
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
+m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_ZONE$])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is a member of `struct tm\'. */
 @%:@undef HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
-m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_TM_ZONE$])
-m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
+m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_TM_ZONE$])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
    `HAVE_STRUCT_TM_TM_ZONE\' instead. */
 @%:@undef HAVE_TM_ZONE])
-m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME])
-m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$])
-m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_DECL_TZNAME], [/* Define to 1 if you have the declaration of `tzname\', and to 0 if you don\'t.
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME])
+m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_DECL_TZNAME], [/* Define to 1 if you have the declaration of `tzname\', and to 0 if you don\'t.
    */
 @%:@undef HAVE_DECL_TZNAME])
-m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
-m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_TZNAME$])
-m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
+m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_TZNAME$])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
    `tzname\'. */
 @%:@undef HAVE_TZNAME])
-m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
-m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$])
-m4trace:configure.in:945: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
+m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$])
+m4trace:configure.in:946: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:4149: BASH_STRUCT_WEXITSTATUS_OFFSET is expanded from...
-configure.in:945: the top level])
-m4trace:configure.in:945: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
-m4trace:configure.in:945: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
-m4trace:configure.in:945: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
+configure.in:946: the top level])
+m4trace:configure.in:946: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
+m4trace:configure.in:946: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
+m4trace:configure.in:946: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
 @%:@undef WEXITSTATUS_OFFSET])
-m4trace:configure.in:947: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
-@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- AC_SUBST_TRACE([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- AC_SUBST_TRACE([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:947: -1- AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- AC_SUBST_TRACE([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:947: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
 m4trace:configure.in:948: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
 @%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
-m4trace:configure.in:948: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST_TRACE([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST_TRACE([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:948: -1- AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST_TRACE([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+@%:@undef HAVE_SYS_TIME_H])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
 @%:@undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
-m4trace:configure.in:948: -1- m4_pattern_allow([^TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC$])
-m4trace:configure.in:948: -1- AH_OUTPUT([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [/* Define to 1 if the type of the st_atim member of a struct stat is struct
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
+m4trace:configure.in:949: -1- m4_pattern_allow([^TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [/* Define to 1 if the type of the st_atim member of a struct stat is struct
    timespec. */
 @%:@undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
-m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
-m4trace:configure.in:948: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
 @%:@undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
-m4trace:configure.in:948: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
 @%:@undef HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
-m4trace:configure.in:948: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
 @%:@undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.in:951: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:952: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:299: BASH_FUNC_STRSIGNAL is expanded from...
-configure.in:951: the top level])
-m4trace:configure.in:951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
-m4trace:configure.in:951: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
-m4trace:configure.in:952: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:952: the top level])
+m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
+m4trace:configure.in:952: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
+m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:313: BASH_FUNC_OPENDIR_CHECK is expanded from...
-configure.in:952: the top level])
-m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
-m4trace:configure.in:952: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
-m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:953: the top level])
+m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
+m4trace:configure.in:953: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
+m4trace:configure.in:954: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:683: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
-configure.in:953: the top level])
-m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
-m4trace:configure.in:953: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
-m4trace:configure.in:954: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
+configure.in:954: the top level])
+m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
+m4trace:configure.in:954: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
+m4trace:configure.in:955: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
 @%:@undef HAVE_FPURGE])
-m4trace:configure.in:954: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
+m4trace:configure.in:955: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
 @%:@undef HAVE___FPURGE])
-m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
-m4trace:configure.in:954: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
-m4trace:configure.in:954: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
+m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
+m4trace:configure.in:955: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
+m4trace:configure.in:955: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
    */
 @%:@undef HAVE_DECL_FPURGE])
-m4trace:configure.in:955: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:956: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:579: BASH_FUNC_GETENV is expanded from...
-configure.in:955: the top level])
-m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
-m4trace:configure.in:955: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
-m4trace:configure.in:957: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:956: the top level])
+m4trace:configure.in:956: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
+m4trace:configure.in:956: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
+m4trace:configure.in:958: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:702: BASH_FUNC_GETCWD is expanded from...
-configure.in:957: the top level])
-m4trace:configure.in:957: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
-m4trace:configure.in:957: -1- m4_pattern_allow([^GETCWD_BROKEN$])
-m4trace:configure.in:957: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
-m4trace:configure.in:957: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:957: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:957: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:959: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:958: the top level])
+m4trace:configure.in:958: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
+m4trace:configure.in:958: -1- m4_pattern_allow([^GETCWD_BROKEN$])
+m4trace:configure.in:958: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
+m4trace:configure.in:958: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:958: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:958: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.in:960: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:778: BASH_FUNC_POSIX_SETJMP is expanded from...
-configure.in:959: the top level])
-m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
-m4trace:configure.in:959: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
-m4trace:configure.in:960: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:960: the top level])
+m4trace:configure.in:960: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
+m4trace:configure.in:960: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
+m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:829: BASH_FUNC_STRCOLL is expanded from...
-configure.in:960: the top level])
-m4trace:configure.in:960: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
-m4trace:configure.in:960: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
-m4trace:configure.in:961: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
+configure.in:961: the top level])
+m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
+m4trace:configure.in:961: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
+m4trace:configure.in:962: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
 @%:@undef HAVE_SNPRINTF])
-m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:962: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:4065: BASH_FUNC_SNPRINTF is expanded from...
-configure.in:961: the top level])
-m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
-m4trace:configure.in:961: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
-m4trace:configure.in:961: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
+configure.in:962: the top level])
+m4trace:configure.in:962: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
+m4trace:configure.in:962: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
+m4trace:configure.in:962: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
 @%:@undef HAVE_SNPRINTF])
-m4trace:configure.in:962: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
+m4trace:configure.in:963: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
 @%:@undef HAVE_VSNPRINTF])
-m4trace:configure.in:962: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:4093: BASH_FUNC_VSNPRINTF is expanded from...
-configure.in:962: the top level])
-m4trace:configure.in:962: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
-m4trace:configure.in:962: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
-m4trace:configure.in:962: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
+configure.in:963: the top level])
+m4trace:configure.in:963: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
+m4trace:configure.in:963: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
+m4trace:configure.in:963: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
 @%:@undef HAVE_VSNPRINTF])
-m4trace:configure.in:968: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:969: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:624: BASH_FUNC_STD_PUTENV is expanded from...
-configure.in:968: the top level])
-m4trace:configure.in:968: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:968: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
-m4trace:configure.in:970: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:970: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
-m4trace:configure.in:973: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:969: the top level])
+m4trace:configure.in:969: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.in:969: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
+m4trace:configure.in:971: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.in:971: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
+m4trace:configure.in:974: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 ../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
 aclocal.m4:654: BASH_FUNC_STD_UNSETENV is expanded from...
-configure.in:973: the top level])
-m4trace:configure.in:973: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:973: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
-m4trace:configure.in:975: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:975: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
-m4trace:configure.in:978: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:974: the top level])
+m4trace:configure.in:974: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.in:974: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
+m4trace:configure.in:976: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.in:976: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
+m4trace:configure.in:979: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:878: BASH_FUNC_PRINTF_A_FORMAT is expanded from...
-configure.in:978: the top level])
-m4trace:configure.in:978: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
-m4trace:configure.in:978: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
-m4trace:configure.in:981: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:979: the top level])
+m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
+m4trace:configure.in:979: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
+m4trace:configure.in:982: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1297: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
-configure.in:981: the top level])
-m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
-m4trace:configure.in:981: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
-m4trace:configure.in:982: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:982: the top level])
+m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
+m4trace:configure.in:982: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
+m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1356: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
-configure.in:982: the top level])
-m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
-m4trace:configure.in:982: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
-m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:983: the top level])
+m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
+m4trace:configure.in:983: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
+m4trace:configure.in:984: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1415: BASH_SYS_NAMED_PIPES is expanded from...
-configure.in:983: the top level])
-m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
-m4trace:configure.in:983: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
-m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:986: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
-m4trace:configure.in:986: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
+configure.in:984: the top level])
+m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
+m4trace:configure.in:984: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
+m4trace:configure.in:987: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
+m4trace:configure.in:987: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
+m4trace:configure.in:987: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
 @%:@undef GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:987: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:988: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1496: BASH_HAVE_TIOCSTAT is expanded from...
-configure.in:987: the top level])
-m4trace:configure.in:987: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
-m4trace:configure.in:987: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
-m4trace:configure.in:988: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:988: the top level])
+m4trace:configure.in:988: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
+m4trace:configure.in:988: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
+m4trace:configure.in:989: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1508: BASH_HAVE_FIONREAD is expanded from...
-configure.in:988: the top level])
-m4trace:configure.in:988: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
-m4trace:configure.in:988: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
-m4trace:configure.in:990: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:989: the top level])
+m4trace:configure.in:989: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
+m4trace:configure.in:989: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
+m4trace:configure.in:991: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1964: BASH_CHECK_WCONTINUED is expanded from...
-configure.in:990: the top level])
-m4trace:configure.in:990: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
-m4trace:configure.in:990: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
-m4trace:configure.in:993: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:991: the top level])
+m4trace:configure.in:991: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
+m4trace:configure.in:991: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
+m4trace:configure.in:994: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1526: BASH_CHECK_SPEED_T is expanded from...
-configure.in:993: the top level])
-m4trace:configure.in:993: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
-m4trace:configure.in:993: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
-m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
-m4trace:configure.in:994: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
-m4trace:configure.in:995: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+configure.in:994: the top level])
+m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
+m4trace:configure.in:994: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
+m4trace:configure.in:995: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
+m4trace:configure.in:995: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
+m4trace:configure.in:996: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1653: BASH_CHECK_RTSIGS is expanded from...
-configure.in:995: the top level])
-m4trace:configure.in:995: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
-m4trace:configure.in:995: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
-m4trace:configure.in:996: -1- AC_SUBST([SIGLIST_O])
-m4trace:configure.in:996: -1- AC_SUBST_TRACE([SIGLIST_O])
-m4trace:configure.in:996: -1- m4_pattern_allow([^SIGLIST_O$])
-m4trace:configure.in:1000: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:996: the top level])
+m4trace:configure.in:996: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
+m4trace:configure.in:996: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
+m4trace:configure.in:997: -1- AC_SUBST([SIGLIST_O])
+m4trace:configure.in:997: -1- AC_SUBST_TRACE([SIGLIST_O])
+m4trace:configure.in:997: -1- m4_pattern_allow([^SIGLIST_O$])
+m4trace:configure.in:1001: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:1000: the top level])
-m4trace:configure.in:1000: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+configure.in:1001: the top level])
+m4trace:configure.in:1001: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
@@ -2632,140 +2632,140 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE
 ../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
 ../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
 aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:1000: the top level])
-m4trace:configure.in:1000: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
-m4trace:configure.in:1000: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
-m4trace:configure.in:1010: -1- AC_SUBST([TERMCAP_LIB])
-m4trace:configure.in:1010: -1- AC_SUBST_TRACE([TERMCAP_LIB])
-m4trace:configure.in:1010: -1- m4_pattern_allow([^TERMCAP_LIB$])
-m4trace:configure.in:1011: -1- AC_SUBST([TERMCAP_DEP])
-m4trace:configure.in:1011: -1- AC_SUBST_TRACE([TERMCAP_DEP])
-m4trace:configure.in:1011: -1- m4_pattern_allow([^TERMCAP_DEP$])
-m4trace:configure.in:1013: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:1013: -1- m4_pattern_allow([^HAVE_DEV_FD$])
-m4trace:configure.in:1013: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:1013: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
-m4trace:configure.in:1013: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:1013: -1- m4_pattern_allow([^HAVE_DEV_FD$])
-m4trace:configure.in:1013: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:1013: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
-m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
-m4trace:configure.in:1014: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
-m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
-m4trace:configure.in:1015: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
-m4trace:configure.in:1022: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
-m4trace:configure.in:1022: -1- m4_pattern_allow([^JOB_CONTROL$])
-m4trace:configure.in:1028: -1- AC_SUBST([JOBS_O])
-m4trace:configure.in:1028: -1- AC_SUBST_TRACE([JOBS_O])
-m4trace:configure.in:1028: -1- m4_pattern_allow([^JOBS_O$])
-m4trace:configure.in:1041: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
-m4trace:configure.in:1041: -1- m4_pattern_allow([^SVR4_2$])
-m4trace:configure.in:1042: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
-m4trace:configure.in:1042: -1- m4_pattern_allow([^SVR4$])
+configure.in:1001: the top level])
+m4trace:configure.in:1001: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
+m4trace:configure.in:1001: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
+m4trace:configure.in:1011: -1- AC_SUBST([TERMCAP_LIB])
+m4trace:configure.in:1011: -1- AC_SUBST_TRACE([TERMCAP_LIB])
+m4trace:configure.in:1011: -1- m4_pattern_allow([^TERMCAP_LIB$])
+m4trace:configure.in:1012: -1- AC_SUBST([TERMCAP_DEP])
+m4trace:configure.in:1012: -1- AC_SUBST_TRACE([TERMCAP_DEP])
+m4trace:configure.in:1012: -1- m4_pattern_allow([^TERMCAP_DEP$])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.in:1014: -1- m4_pattern_allow([^HAVE_DEV_FD$])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.in:1014: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.in:1014: -1- m4_pattern_allow([^HAVE_DEV_FD$])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.in:1014: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
+m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
+m4trace:configure.in:1015: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
+m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
+m4trace:configure.in:1016: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
+m4trace:configure.in:1023: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
+m4trace:configure.in:1023: -1- m4_pattern_allow([^JOB_CONTROL$])
+m4trace:configure.in:1029: -1- AC_SUBST([JOBS_O])
+m4trace:configure.in:1029: -1- AC_SUBST_TRACE([JOBS_O])
+m4trace:configure.in:1029: -1- m4_pattern_allow([^JOBS_O$])
+m4trace:configure.in:1042: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
+m4trace:configure.in:1042: -1- m4_pattern_allow([^SVR4_2$])
 m4trace:configure.in:1043: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
 m4trace:configure.in:1043: -1- m4_pattern_allow([^SVR4$])
-m4trace:configure.in:1044: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
-m4trace:configure.in:1044: -1- m4_pattern_allow([^SVR5$])
-m4trace:configure.in:1063: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:1063: -1- m4_pattern_allow([^PGRP_PIPE$])
-m4trace:configure.in:1110: -1- AC_SUBST([SHOBJ_CC])
-m4trace:configure.in:1110: -1- AC_SUBST_TRACE([SHOBJ_CC])
-m4trace:configure.in:1110: -1- m4_pattern_allow([^SHOBJ_CC$])
-m4trace:configure.in:1111: -1- AC_SUBST([SHOBJ_CFLAGS])
-m4trace:configure.in:1111: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
-m4trace:configure.in:1111: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
-m4trace:configure.in:1112: -1- AC_SUBST([SHOBJ_LD])
-m4trace:configure.in:1112: -1- AC_SUBST_TRACE([SHOBJ_LD])
-m4trace:configure.in:1112: -1- m4_pattern_allow([^SHOBJ_LD$])
-m4trace:configure.in:1113: -1- AC_SUBST([SHOBJ_LDFLAGS])
-m4trace:configure.in:1113: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
-m4trace:configure.in:1113: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
-m4trace:configure.in:1114: -1- AC_SUBST([SHOBJ_XLDFLAGS])
-m4trace:configure.in:1114: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
-m4trace:configure.in:1114: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
-m4trace:configure.in:1115: -1- AC_SUBST([SHOBJ_LIBS])
-m4trace:configure.in:1115: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
-m4trace:configure.in:1115: -1- m4_pattern_allow([^SHOBJ_LIBS$])
-m4trace:configure.in:1116: -1- AC_SUBST([SHOBJ_STATUS])
-m4trace:configure.in:1116: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
-m4trace:configure.in:1116: -1- m4_pattern_allow([^SHOBJ_STATUS$])
-m4trace:configure.in:1148: -1- AC_SUBST([PROFILE_FLAGS])
-m4trace:configure.in:1148: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
-m4trace:configure.in:1148: -1- m4_pattern_allow([^PROFILE_FLAGS$])
-m4trace:configure.in:1150: -1- AC_SUBST([incdir])
-m4trace:configure.in:1150: -1- AC_SUBST_TRACE([incdir])
-m4trace:configure.in:1150: -1- m4_pattern_allow([^incdir$])
-m4trace:configure.in:1151: -1- AC_SUBST([BUILD_DIR])
-m4trace:configure.in:1151: -1- AC_SUBST_TRACE([BUILD_DIR])
-m4trace:configure.in:1151: -1- m4_pattern_allow([^BUILD_DIR$])
-m4trace:configure.in:1154: -1- AC_SUBST([datarootdir])
-m4trace:configure.in:1154: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.in:1154: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.in:1155: -1- AC_SUBST([localedir])
-m4trace:configure.in:1155: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.in:1155: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.in:1157: -1- AC_SUBST([YACC])
-m4trace:configure.in:1157: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:1157: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:1158: -1- AC_SUBST([AR])
-m4trace:configure.in:1158: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.in:1158: -1- m4_pattern_allow([^AR$])
-m4trace:configure.in:1159: -1- AC_SUBST([ARFLAGS])
-m4trace:configure.in:1159: -1- AC_SUBST_TRACE([ARFLAGS])
-m4trace:configure.in:1159: -1- m4_pattern_allow([^ARFLAGS$])
-m4trace:configure.in:1161: -1- AC_SUBST([BASHVERS])
-m4trace:configure.in:1161: -1- AC_SUBST_TRACE([BASHVERS])
-m4trace:configure.in:1161: -1- m4_pattern_allow([^BASHVERS$])
-m4trace:configure.in:1162: -1- AC_SUBST([RELSTATUS])
-m4trace:configure.in:1162: -1- AC_SUBST_TRACE([RELSTATUS])
-m4trace:configure.in:1162: -1- m4_pattern_allow([^RELSTATUS$])
-m4trace:configure.in:1163: -1- AC_SUBST([DEBUG])
-m4trace:configure.in:1163: -1- AC_SUBST_TRACE([DEBUG])
-m4trace:configure.in:1163: -1- m4_pattern_allow([^DEBUG$])
-m4trace:configure.in:1164: -1- AC_SUBST([MALLOC_DEBUG])
-m4trace:configure.in:1164: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
-m4trace:configure.in:1164: -1- m4_pattern_allow([^MALLOC_DEBUG$])
-m4trace:configure.in:1166: -1- AC_SUBST([host_cpu])
-m4trace:configure.in:1166: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.in:1166: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.in:1167: -1- AC_SUBST([host_vendor])
-m4trace:configure.in:1167: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.in:1167: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.in:1168: -1- AC_SUBST([host_os])
-m4trace:configure.in:1168: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.in:1168: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.in:1170: -1- AC_SUBST([LOCAL_LIBS])
-m4trace:configure.in:1170: -1- AC_SUBST_TRACE([LOCAL_LIBS])
-m4trace:configure.in:1170: -1- m4_pattern_allow([^LOCAL_LIBS$])
-m4trace:configure.in:1171: -1- AC_SUBST([LOCAL_CFLAGS])
-m4trace:configure.in:1171: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
-m4trace:configure.in:1171: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
-m4trace:configure.in:1172: -1- AC_SUBST([LOCAL_LDFLAGS])
-m4trace:configure.in:1172: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
-m4trace:configure.in:1172: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
-m4trace:configure.in:1173: -1- AC_SUBST([LOCAL_DEFS])
-m4trace:configure.in:1173: -1- AC_SUBST_TRACE([LOCAL_DEFS])
-m4trace:configure.in:1173: -1- m4_pattern_allow([^LOCAL_DEFS$])
-m4trace:configure.in:1178: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
+m4trace:configure.in:1044: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
+m4trace:configure.in:1044: -1- m4_pattern_allow([^SVR4$])
+m4trace:configure.in:1045: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
+m4trace:configure.in:1045: -1- m4_pattern_allow([^SVR5$])
+m4trace:configure.in:1064: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.in:1064: -1- m4_pattern_allow([^PGRP_PIPE$])
+m4trace:configure.in:1111: -1- AC_SUBST([SHOBJ_CC])
+m4trace:configure.in:1111: -1- AC_SUBST_TRACE([SHOBJ_CC])
+m4trace:configure.in:1111: -1- m4_pattern_allow([^SHOBJ_CC$])
+m4trace:configure.in:1112: -1- AC_SUBST([SHOBJ_CFLAGS])
+m4trace:configure.in:1112: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
+m4trace:configure.in:1112: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
+m4trace:configure.in:1113: -1- AC_SUBST([SHOBJ_LD])
+m4trace:configure.in:1113: -1- AC_SUBST_TRACE([SHOBJ_LD])
+m4trace:configure.in:1113: -1- m4_pattern_allow([^SHOBJ_LD$])
+m4trace:configure.in:1114: -1- AC_SUBST([SHOBJ_LDFLAGS])
+m4trace:configure.in:1114: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
+m4trace:configure.in:1114: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
+m4trace:configure.in:1115: -1- AC_SUBST([SHOBJ_XLDFLAGS])
+m4trace:configure.in:1115: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
+m4trace:configure.in:1115: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
+m4trace:configure.in:1116: -1- AC_SUBST([SHOBJ_LIBS])
+m4trace:configure.in:1116: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
+m4trace:configure.in:1116: -1- m4_pattern_allow([^SHOBJ_LIBS$])
+m4trace:configure.in:1117: -1- AC_SUBST([SHOBJ_STATUS])
+m4trace:configure.in:1117: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
+m4trace:configure.in:1117: -1- m4_pattern_allow([^SHOBJ_STATUS$])
+m4trace:configure.in:1149: -1- AC_SUBST([PROFILE_FLAGS])
+m4trace:configure.in:1149: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
+m4trace:configure.in:1149: -1- m4_pattern_allow([^PROFILE_FLAGS$])
+m4trace:configure.in:1151: -1- AC_SUBST([incdir])
+m4trace:configure.in:1151: -1- AC_SUBST_TRACE([incdir])
+m4trace:configure.in:1151: -1- m4_pattern_allow([^incdir$])
+m4trace:configure.in:1152: -1- AC_SUBST([BUILD_DIR])
+m4trace:configure.in:1152: -1- AC_SUBST_TRACE([BUILD_DIR])
+m4trace:configure.in:1152: -1- m4_pattern_allow([^BUILD_DIR$])
+m4trace:configure.in:1155: -1- AC_SUBST([datarootdir])
+m4trace:configure.in:1155: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.in:1155: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.in:1156: -1- AC_SUBST([localedir])
+m4trace:configure.in:1156: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.in:1156: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.in:1158: -1- AC_SUBST([YACC])
+m4trace:configure.in:1158: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.in:1158: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.in:1159: -1- AC_SUBST([AR])
+m4trace:configure.in:1159: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.in:1159: -1- m4_pattern_allow([^AR$])
+m4trace:configure.in:1160: -1- AC_SUBST([ARFLAGS])
+m4trace:configure.in:1160: -1- AC_SUBST_TRACE([ARFLAGS])
+m4trace:configure.in:1160: -1- m4_pattern_allow([^ARFLAGS$])
+m4trace:configure.in:1162: -1- AC_SUBST([BASHVERS])
+m4trace:configure.in:1162: -1- AC_SUBST_TRACE([BASHVERS])
+m4trace:configure.in:1162: -1- m4_pattern_allow([^BASHVERS$])
+m4trace:configure.in:1163: -1- AC_SUBST([RELSTATUS])
+m4trace:configure.in:1163: -1- AC_SUBST_TRACE([RELSTATUS])
+m4trace:configure.in:1163: -1- m4_pattern_allow([^RELSTATUS$])
+m4trace:configure.in:1164: -1- AC_SUBST([DEBUG])
+m4trace:configure.in:1164: -1- AC_SUBST_TRACE([DEBUG])
+m4trace:configure.in:1164: -1- m4_pattern_allow([^DEBUG$])
+m4trace:configure.in:1165: -1- AC_SUBST([MALLOC_DEBUG])
+m4trace:configure.in:1165: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
+m4trace:configure.in:1165: -1- m4_pattern_allow([^MALLOC_DEBUG$])
+m4trace:configure.in:1167: -1- AC_SUBST([host_cpu])
+m4trace:configure.in:1167: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.in:1167: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.in:1168: -1- AC_SUBST([host_vendor])
+m4trace:configure.in:1168: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.in:1168: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.in:1169: -1- AC_SUBST([host_os])
+m4trace:configure.in:1169: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.in:1169: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.in:1171: -1- AC_SUBST([LOCAL_LIBS])
+m4trace:configure.in:1171: -1- AC_SUBST_TRACE([LOCAL_LIBS])
+m4trace:configure.in:1171: -1- m4_pattern_allow([^LOCAL_LIBS$])
+m4trace:configure.in:1172: -1- AC_SUBST([LOCAL_CFLAGS])
+m4trace:configure.in:1172: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
+m4trace:configure.in:1172: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
+m4trace:configure.in:1173: -1- AC_SUBST([LOCAL_LDFLAGS])
+m4trace:configure.in:1173: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
+m4trace:configure.in:1173: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
+m4trace:configure.in:1174: -1- AC_SUBST([LOCAL_DEFS])
+m4trace:configure.in:1174: -1- AC_SUBST_TRACE([LOCAL_DEFS])
+m4trace:configure.in:1174: -1- m4_pattern_allow([^LOCAL_DEFS$])
+m4trace:configure.in:1179: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
          lib/intl/Makefile \
          lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
          lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
          examples/loadables/Makefile examples/loadables/perl/Makefile])
-m4trace:configure.in:1178: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+m4trace:configure.in:1179: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
 You should run autoupdate.], [])
-m4trace:configure.in:1178: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:1178: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:1178: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.in:1178: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.in:1178: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.in:1179: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:1179: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:1179: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.in:1179: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.in:1179: -1- AC_SUBST_TRACE([INSTALL])
index aa180332db698ebcd64baa2e80d18ea410628a81..03eeb5d04c2f5f6749c6105b33fb17e83ad00254 100644 (file)
@@ -1,73 +1,67 @@
-m4trace:configure.in:30: -1- AC_INIT([bash], [3.2-maint], [bug-bash@gnu.org])
-m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.in:30: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.in:30: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.in:30: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.in:30: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.in:30: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
-m4trace:configure.in:30: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.in:30: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.in:30: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.in:30: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.in:30: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.in:30: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.in:30: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.in:30: -1- AC_SUBST([datadir], ['${prefix}/share'])
-m4trace:configure.in:30: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.in:30: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.in:30: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.in:30: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.in:30: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.in:30: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.in:30: -1- AC_SUBST([infodir], ['${prefix}/info'])
-m4trace:configure.in:30: -1- AC_SUBST([mandir], ['${prefix}/man'])
-m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+m4trace:configure.in:29: -1- AC_INIT([bash], [4.2-maint], [bug-bash@gnu.org])
+m4trace:configure.in:29: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.in:29: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.in:29: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.in:29: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.in:29: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.in:29: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.in:29: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.in:29: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
+m4trace:configure.in:29: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.in:29: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.in:29: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.in:29: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.in:29: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.in:29: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.in:29: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.in:29: -1- AC_SUBST([datadir], ['${prefix}/share'])
+m4trace:configure.in:29: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.in:29: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.in:29: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.in:29: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.in:29: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.in:29: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.in:29: -1- AC_SUBST([infodir], ['${prefix}/info'])
+m4trace:configure.in:29: -1- AC_SUBST([mandir], ['${prefix}/man'])
+m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
 #undef PACKAGE_NAME])
-m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME])
-m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
 #undef PACKAGE_VERSION])
-m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
 #undef PACKAGE_STRING])
-m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT])
-m4trace:configure.in:30: -1- AC_SUBST([build_alias])
-m4trace:configure.in:30: -1- AC_SUBST([host_alias])
-m4trace:configure.in:30: -1- AC_SUBST([target_alias])
-m4trace:configure.in:30: -1- AC_SUBST([DEFS])
-m4trace:configure.in:30: -1- AC_SUBST([ECHO_C])
-m4trace:configure.in:30: -1- AC_SUBST([ECHO_N])
-m4trace:configure.in:30: -1- AC_SUBST([ECHO_T])
-m4trace:configure.in:30: -1- AC_SUBST([LIBS])
-m4trace:configure.in:37: -1- AC_CONFIG_AUX_DIR([./support])
-m4trace:configure.in:38: -1- AC_CONFIG_HEADERS([config.h])
-m4trace:configure.in:52: -1- AC_CANONICAL_HOST
-m4trace:configure.in:52: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.in:52: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-m4trace:configure.in:52: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-m4trace:configure.in:52: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-m4trace:configure.in:52: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.in:52: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-m4trace:configure.in:52: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-m4trace:configure.in:52: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-m4trace:configure.in:102: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-aclocal.m4:1969: AM_PATH_LISPDIR is expanded from...
-configure.in:102: the top level])
-m4trace:configure.in:102: -1- AC_SUBST([EMACS])
-m4trace:configure.in:102: -1- AC_SUBST([lispdir])
+m4trace:configure.in:29: -1- AC_SUBST([build_alias])
+m4trace:configure.in:29: -1- AC_SUBST([host_alias])
+m4trace:configure.in:29: -1- AC_SUBST([target_alias])
+m4trace:configure.in:29: -1- AC_SUBST([DEFS])
+m4trace:configure.in:29: -1- AC_SUBST([ECHO_C])
+m4trace:configure.in:29: -1- AC_SUBST([ECHO_N])
+m4trace:configure.in:29: -1- AC_SUBST([ECHO_T])
+m4trace:configure.in:29: -1- AC_SUBST([LIBS])
+m4trace:configure.in:36: -1- AC_CONFIG_AUX_DIR([./support])
+m4trace:configure.in:37: -1- AC_CONFIG_HEADERS([config.h])
+m4trace:configure.in:51: -1- AC_CANONICAL_HOST
+m4trace:configure.in:51: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.in:51: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
+m4trace:configure.in:51: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
+m4trace:configure.in:51: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
+m4trace:configure.in:51: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.in:51: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
+m4trace:configure.in:51: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
+m4trace:configure.in:51: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
 m4trace:configure.in:103: -1- AC_SUBST([DEBUGGER_START_FILE])
 m4trace:configure.in:107: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
@@ -93,24 +87,9 @@ configure.in:113: the top level])
 m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC])
 m4trace:configure.in:134: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS])
 m4trace:configure.in:144: -1- AC_DEFINE_TRACE_LITERAL([AFS])
-m4trace:configure.in:192: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:192: the top level])
-m4trace:configure.in:207: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:207: the top level])
-m4trace:configure.in:208: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:208: the top level])
-m4trace:configure.in:209: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:209: the top level])
-m4trace:configure.in:210: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:210: the top level])
-m4trace:configure.in:211: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+m4trace:configure.in:196: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
-configure.in:211: the top level])
+configure.in:196: the top level])
 m4trace:configure.in:212: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
 configure.in:212: the top level])
@@ -183,6 +162,12 @@ configure.in:234: the top level])
 m4trace:configure.in:235: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
 configure.in:235: the top level])
+m4trace:configure.in:236: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:236: the top level])
+m4trace:configure.in:237: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:237: the top level])
 m4trace:configure.in:238: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
 configure.in:238: the top level])
@@ -192,1670 +177,1892 @@ configure.in:239: the top level])
 m4trace:configure.in:240: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
 configure.in:240: the top level])
-m4trace:configure.in:249: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
-m4trace:configure.in:252: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
-m4trace:configure.in:255: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
-m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
-m4trace:configure.in:261: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
-m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
-m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
-m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
-m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
-m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
-m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
-m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
-m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
-m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
-m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
-m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
-m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
-m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
-m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
-m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
-m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
-m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
-m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
-m4trace:configure.in:341: -1- AC_SUBST([TESTSCRIPT])
-m4trace:configure.in:342: -1- AC_SUBST([PURIFY])
-m4trace:configure.in:343: -1- AC_SUBST([MALLOC_TARGET])
-m4trace:configure.in:344: -1- AC_SUBST([MALLOC_SRC])
-m4trace:configure.in:346: -1- AC_SUBST([MALLOC_LIB])
-m4trace:configure.in:347: -1- AC_SUBST([MALLOC_LIBRARY])
-m4trace:configure.in:348: -1- AC_SUBST([MALLOC_LDFLAGS])
-m4trace:configure.in:349: -1- AC_SUBST([MALLOC_DEP])
-m4trace:configure.in:351: -1- AC_SUBST([htmldir])
-m4trace:configure.in:353: -1- AC_SUBST([HELPDIR])
-m4trace:configure.in:354: -1- AC_SUBST([HELPDIRDEFINE])
-m4trace:configure.in:355: -1- AC_SUBST([HELPINSTALL])
-m4trace:configure.in:356: -1- AC_SUBST([HELPSTRINGS])
-m4trace:configure.in:365: -1- AC_PROG_CC
-m4trace:configure.in:365: -1- AC_SUBST([CC])
-m4trace:configure.in:365: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:365: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:365: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:365: -1- AC_SUBST([CC])
-m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.in:365: -1- AC_SUBST([CC])
-m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.in:365: -1- AC_SUBST([CC])
-m4trace:configure.in:365: -1- AC_SUBST([CC])
-m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.in:365: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.in:365: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.in:368: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"])
-m4trace:configure.in:369: -1- AC_HEADER_STDC
-m4trace:configure.in:369: -1- AC_PROG_CPP
-m4trace:configure.in:369: -1- AC_SUBST([CPP])
-m4trace:configure.in:369: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:369: -1- AC_SUBST([CPP])
-m4trace:configure.in:369: -1- AC_SUBST([EGREP])
-m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.in:369: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+m4trace:configure.in:241: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:241: the top level])
+m4trace:configure.in:242: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:242: the top level])
+m4trace:configure.in:243: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:243: the top level])
+m4trace:configure.in:244: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:244: the top level])
+m4trace:configure.in:247: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:247: the top level])
+m4trace:configure.in:248: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:248: the top level])
+m4trace:configure.in:249: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
+configure.in:249: the top level])
+m4trace:configure.in:252: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.in:253: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.in:254: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:255: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
+m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
+m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
+m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
+m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
+m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
+m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
+m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
+m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
+m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
+m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
+m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
+m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
+m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
+m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
+m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.in:311: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.in:314: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
+m4trace:configure.in:317: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
+m4trace:configure.in:320: -1- AC_DEFINE_TRACE_LITERAL([COPROCESS_SUPPORT])
+m4trace:configure.in:323: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
+m4trace:configure.in:329: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
+m4trace:configure.in:332: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
+m4trace:configure.in:335: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
+m4trace:configure.in:338: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_ATTRS])
+m4trace:configure.in:341: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_EXPANSIONS])
+m4trace:configure.in:345: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
+m4trace:configure.in:371: -1- AC_SUBST([TESTSCRIPT])
+m4trace:configure.in:372: -1- AC_SUBST([PURIFY])
+m4trace:configure.in:373: -1- AC_SUBST([MALLOC_TARGET])
+m4trace:configure.in:374: -1- AC_SUBST([MALLOC_SRC])
+m4trace:configure.in:376: -1- AC_SUBST([MALLOC_LIB])
+m4trace:configure.in:377: -1- AC_SUBST([MALLOC_LIBRARY])
+m4trace:configure.in:378: -1- AC_SUBST([MALLOC_LDFLAGS])
+m4trace:configure.in:379: -1- AC_SUBST([MALLOC_DEP])
+m4trace:configure.in:381: -1- AC_SUBST([htmldir])
+m4trace:configure.in:383: -1- AC_SUBST([HELPDIR])
+m4trace:configure.in:384: -1- AC_SUBST([HELPDIRDEFINE])
+m4trace:configure.in:385: -1- AC_SUBST([HELPINSTALL])
+m4trace:configure.in:386: -1- AC_SUBST([HELPFILES_TARGET])
+m4trace:configure.in:387: -1- AC_SUBST([HELPSTRINGS])
+m4trace:configure.in:396: -1- AC_PROG_CC
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST([CC])
+m4trace:configure.in:396: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:396: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.in:396: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.in:399: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"])
+m4trace:configure.in:400: -1- AC_HEADER_STDC
+m4trace:configure.in:400: -1- AC_PROG_CPP
+m4trace:configure.in:400: -1- AC_SUBST([CPP])
+m4trace:configure.in:400: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:400: -1- AC_SUBST([CPP])
+m4trace:configure.in:400: -1- AC_SUBST([EGREP])
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.in:400: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS])
-m4trace:configure.in:369: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+m4trace:configure.in:400: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
                  inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H])
-m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:400: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
-m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
+m4trace:configure.in:400: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
 #undef _POSIX_SOURCE])
-m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
-m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
+m4trace:configure.in:400: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
    this defined. */
 #undef _POSIX_1_SOURCE])
-m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
-m4trace:configure.in:369: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
+m4trace:configure.in:400: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
+m4trace:configure.in:400: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
 #undef _MINIX])
-m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.in:371: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+m4trace:configure.in:402: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.in:402: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS])
-m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.in:371: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+m4trace:configure.in:402: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.in:402: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
 #undef _LARGE_FILES])
-m4trace:configure.in:408: -1- AC_SUBST([CROSS_COMPILE])
-m4trace:configure.in:410: -1- AC_SUBST([SIGNAMES_H])
-m4trace:configure.in:411: -1- AC_SUBST([SIGNAMES_O])
-m4trace:configure.in:420: -1- AC_SUBST([CC_FOR_BUILD])
-m4trace:configure.in:443: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
+m4trace:configure.in:439: -1- AC_SUBST([CROSS_COMPILE])
+m4trace:configure.in:441: -1- AC_SUBST([SIGNAMES_H])
+m4trace:configure.in:442: -1- AC_SUBST([SIGNAMES_O])
+m4trace:configure.in:476: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
 You should run autoupdate.], [autoconf/c.m4:440: ac_cv_prog_gcc is expanded from...
-configure.in:443: the top level])
-m4trace:configure.in:462: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:463: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:464: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:465: -1- AC_SUBST([STATIC_LD])
-m4trace:configure.in:467: -1- AC_SUBST([CFLAGS_FOR_BUILD])
-m4trace:configure.in:468: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:469: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:471: -1- AC_PROG_GCC_TRADITIONAL
-m4trace:configure.in:483: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
+configure.in:476: the top level])
+m4trace:configure.in:503: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:504: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:505: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:506: -1- AC_SUBST([STATIC_LD])
+m4trace:configure.in:508: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.in:509: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.in:510: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.in:511: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.in:512: -1- AC_SUBST([LIBS_FOR_BUILD])
+m4trace:configure.in:514: -1- AC_PROG_GCC_TRADITIONAL
+m4trace:configure.in:526: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
         [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
            [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])])])
-m4trace:configure.in:483: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
+m4trace:configure.in:526: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
            [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])])
-m4trace:configure.in:483: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
+m4trace:configure.in:526: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])
-m4trace:configure.in:483: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap])
-m4trace:configure.in:483: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:526: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap])
+m4trace:configure.in:526: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1862: RL_LIB_READLINE_VERSION is expanded from...
-configure.in:483: the top level])
-m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
-m4trace:configure.in:483: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
+aclocal.m4:1918: RL_LIB_READLINE_VERSION is expanded from...
+configure.in:526: the top level])
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
 #undef RL_READLINE_VERSION])
-m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
-m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
 #undef RL_VERSION_MAJOR])
-m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
-m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
+m4trace:configure.in:526: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
+m4trace:configure.in:526: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
 #undef RL_VERSION_MINOR])
-m4trace:configure.in:483: -1- AC_SUBST([RL_VERSION])
-m4trace:configure.in:483: -1- AC_SUBST([RL_MAJOR])
-m4trace:configure.in:483: -1- AC_SUBST([RL_MINOR])
-m4trace:configure.in:496: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
-m4trace:configure.in:531: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
-m4trace:configure.in:534: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
-m4trace:configure.in:564: -1- AC_SUBST([READLINE_LIB])
-m4trace:configure.in:565: -1- AC_SUBST([READLINE_DEP])
-m4trace:configure.in:566: -1- AC_SUBST([RL_LIBDIR])
-m4trace:configure.in:567: -1- AC_SUBST([RL_INCLUDEDIR])
-m4trace:configure.in:568: -1- AC_SUBST([RL_INCLUDE])
-m4trace:configure.in:569: -1- AC_SUBST([HISTORY_LIB])
-m4trace:configure.in:570: -1- AC_SUBST([HISTORY_DEP])
-m4trace:configure.in:571: -1- AC_SUBST([HIST_LIBDIR])
-m4trace:configure.in:572: -1- AC_SUBST([TILDE_LIB])
-m4trace:configure.in:577: -1- AC_PROG_INSTALL
-m4trace:configure.in:577: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.in:577: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.in:577: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.in:578: -1- AC_SUBST([AR])
-m4trace:configure.in:582: -1- AC_PROG_RANLIB
-m4trace:configure.in:582: -1- AC_SUBST([RANLIB])
-m4trace:configure.in:582: -1- AC_SUBST([ac_ct_RANLIB])
-m4trace:configure.in:583: -1- AC_PROG_YACC
-m4trace:configure.in:583: -1- AC_SUBST([YACC])
-m4trace:configure.in:584: -1- AC_PROG_MAKE_SET
-m4trace:configure.in:584: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.in:590: -1- AC_SUBST([MAKE_SHELL])
-m4trace:configure.in:612: -1- AC_SUBST([SIZE])
-m4trace:configure.in:615: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.in:618: -1- AC_C_CONST
-m4trace:configure.in:618: -1- AC_DEFINE_TRACE_LITERAL([const])
-m4trace:configure.in:618: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
+m4trace:configure.in:526: -1- AC_SUBST([RL_VERSION])
+m4trace:configure.in:526: -1- AC_SUBST([RL_MAJOR])
+m4trace:configure.in:526: -1- AC_SUBST([RL_MINOR])
+m4trace:configure.in:539: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
+m4trace:configure.in:574: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
+m4trace:configure.in:577: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
+m4trace:configure.in:607: -1- AC_SUBST([READLINE_LIB])
+m4trace:configure.in:608: -1- AC_SUBST([READLINE_DEP])
+m4trace:configure.in:609: -1- AC_SUBST([RL_LIBDIR])
+m4trace:configure.in:610: -1- AC_SUBST([RL_INCLUDEDIR])
+m4trace:configure.in:611: -1- AC_SUBST([RL_INCLUDE])
+m4trace:configure.in:612: -1- AC_SUBST([HISTORY_LIB])
+m4trace:configure.in:613: -1- AC_SUBST([HISTORY_DEP])
+m4trace:configure.in:614: -1- AC_SUBST([HIST_LIBDIR])
+m4trace:configure.in:615: -1- AC_SUBST([TILDE_LIB])
+m4trace:configure.in:620: -1- AC_PROG_INSTALL
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.in:620: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.in:621: -1- AC_SUBST([AR])
+m4trace:configure.in:625: -1- AC_PROG_RANLIB
+m4trace:configure.in:625: -1- AC_SUBST([RANLIB])
+m4trace:configure.in:625: -1- AC_SUBST([ac_ct_RANLIB])
+m4trace:configure.in:626: -1- AC_PROG_YACC
+m4trace:configure.in:626: -1- AC_SUBST([YACC])
+m4trace:configure.in:627: -1- AC_PROG_MAKE_SET
+m4trace:configure.in:627: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.in:633: -1- AC_SUBST([MAKE_SHELL])
+m4trace:configure.in:655: -1- AC_SUBST([SIZE])
+m4trace:configure.in:657: -1- m4_include([m4/stat-time.m4])
+m4trace:configure.in:658: -1- m4_include([m4/timespec.m4])
+m4trace:configure.in:661: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.in:664: -1- AC_C_CONST
+m4trace:configure.in:664: -1- AC_DEFINE_TRACE_LITERAL([const])
+m4trace:configure.in:664: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
 #undef const])
-m4trace:configure.in:619: -1- AC_C_INLINE
-m4trace:configure.in:619: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+m4trace:configure.in:665: -1- AC_C_INLINE
+m4trace:configure.in:665: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
    calls it, or to nothing if \'inline\' is not supported under any name.  */
 #ifndef __cplusplus
 #undef inline
 #endif])
-m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
-m4trace:configure.in:620: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte
+m4trace:configure.in:666: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
+m4trace:configure.in:666: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte
    first (like Motorola and SPARC, unlike Intel and VAX). */
 #undef WORDS_BIGENDIAN])
-m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
-m4trace:configure.in:621: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
+m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
+m4trace:configure.in:667: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
 #undef HAVE_STRINGIZE])
-m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
-m4trace:configure.in:622: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than
+m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
+m4trace:configure.in:668: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than
    double. */
 #undef HAVE_LONG_DOUBLE])
-m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
-m4trace:configure.in:623: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
+m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
+m4trace:configure.in:669: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
 #undef PROTOTYPES])
-m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
-m4trace:configure.in:623: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
+m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
+m4trace:configure.in:669: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
 #undef __PROTOTYPES])
-m4trace:configure.in:624: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc.  */
+m4trace:configure.in:670: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc.  */
 #ifndef __CHAR_UNSIGNED__
 # undef __CHAR_UNSIGNED__
 #endif])
-m4trace:configure.in:624: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
-m4trace:configure.in:627: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
-m4trace:configure.in:627: -1- AC_SUBST([MKINSTALLDIRS])
-m4trace:configure.in:627: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:627: -1- AC_SUBST([MSGFMT])
-m4trace:configure.in:627: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT])
-m4trace:configure.in:627: -1- AC_SUBST([XGETTEXT])
-m4trace:configure.in:627: -1- AC_SUBST([MSGMERGE])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
+m4trace:configure.in:670: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
+m4trace:configure.in:671: -1- AC_C_VOLATILE
+m4trace:configure.in:671: -1- AC_DEFINE_TRACE_LITERAL([volatile])
+m4trace:configure.in:671: -1- AH_OUTPUT([volatile], [/* Define to empty if the keyword `volatile\' does not work. Warning: valid
+   code using `volatile\' can become incorrect without. Disable with care. */
+#undef volatile])
+m4trace:configure.in:672: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.in:672: -1- AH_OUTPUT([restrict], [/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+   supported. Do not define if restrict is supported directly. */
+#undef restrict])
+m4trace:configure.in:672: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.in:675: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+m4trace:configure.in:675: -1- AC_SUBST([MKINSTALLDIRS])
+m4trace:configure.in:675: -1- AC_SUBST([USE_NLS])
+m4trace:configure.in:675: -1- AC_SUBST([MSGFMT])
+m4trace:configure.in:675: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT])
+m4trace:configure.in:675: -1- AC_SUBST([XGETTEXT])
+m4trace:configure.in:675: -1- AC_SUBST([MSGMERGE])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
 You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-aclocal.m4:3825: AM_PO_SUBDIRS is expanded from...
-configure.in:627: AM_PO_SUBDIRS is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete.
+aclocal.m4:3881: AM_PO_SUBDIRS is expanded from...
+configure.in:675: AM_PO_SUBDIRS is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete.
 You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from...
 autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-aclocal.m4:3825: AM_PO_SUBDIRS is expanded from...
-configure.in:627: AM_PO_SUBDIRS is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_TYPE_OFF_T
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:627: -1- AH_OUTPUT([off_t], [/* Define to `long\' if <sys/types.h> does not define. */
+aclocal.m4:3881: AM_PO_SUBDIRS is expanded from...
+configure.in:675: AM_PO_SUBDIRS is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_TYPE_OFF_T
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.in:675: -1- AH_OUTPUT([off_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef off_t])
-m4trace:configure.in:627: -1- AC_TYPE_SIZE_T
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:627: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
+m4trace:configure.in:675: -1- AC_TYPE_SIZE_T
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.in:675: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
 #undef size_t])
-m4trace:configure.in:627: -1- AC_FUNC_ALLOCA
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.in:675: -1- AC_FUNC_ALLOCA
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
 #undef HAVE_ALLOCA_H])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
 #undef HAVE_ALLOCA])
-m4trace:configure.in:627: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:627: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:627: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.in:675: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.in:675: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.in:675: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
 #undef C_ALLOCA])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:627: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.in:675: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c\' support on those systems.
    */
 #undef CRAY_STACKSEG_END])
-m4trace:configure.in:627: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.in:675: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
 @%:@undef STACK_DIRECTION])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:627: -1- AC_FUNC_MMAP
-m4trace:configure.in:627: -1- AC_CHECK_HEADERS([stdlib.h unistd.h])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.in:675: -1- AC_FUNC_MMAP
+m4trace:configure.in:675: -1- AC_CHECK_HEADERS([stdlib.h unistd.h])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:627: -1- AC_CHECK_FUNCS([getpagesize])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:675: -1- AC_CHECK_FUNCS([getpagesize])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 #undef HAVE_GETPAGESIZE])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
 #undef HAVE_MMAP])
-m4trace:configure.in:627: -1- AC_SUBST([GLIBC21])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([GLIBC21])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2618: gt_INTDIV0 is expanded from...
-configure.in:627: gt_INTDIV0 is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:627: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
+aclocal.m4:2674: gt_INTDIV0 is expanded from...
+configure.in:675: gt_INTDIV0 is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
+m4trace:configure.in:675: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
 #undef INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2673: jm_AC_HEADER_INTTYPES_H is expanded from...
-configure.in:627: jm_AC_HEADER_INTTYPES_H is required by...
-aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from...
-configure.in:627: jm_AC_TYPE_UINTMAX_T is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
+aclocal.m4:2729: jm_AC_HEADER_INTTYPES_H is expanded from...
+configure.in:675: jm_AC_HEADER_INTTYPES_H is required by...
+aclocal.m4:4032: jm_AC_TYPE_UINTMAX_T is expanded from...
+configure.in:675: jm_AC_TYPE_UINTMAX_T is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
    declares uintmax_t. */
 #undef HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:3944: jm_AC_HEADER_STDINT_H is expanded from...
-configure.in:627: jm_AC_HEADER_STDINT_H is required by...
-aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from...
-configure.in:627: jm_AC_TYPE_UINTMAX_T is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
+aclocal.m4:4000: jm_AC_HEADER_STDINT_H is expanded from...
+configure.in:675: jm_AC_HEADER_STDINT_H is required by...
+aclocal.m4:4032: jm_AC_TYPE_UINTMAX_T is expanded from...
+configure.in:675: jm_AC_TYPE_UINTMAX_T is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
    uintmax_t. */
 #undef HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:3999: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
-configure.in:627: jm_AC_TYPE_UNSIGNED_LONG_LONG is required by...
-aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from...
-configure.in:627: jm_AC_TYPE_UINTMAX_T is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
+aclocal.m4:4055: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
+configure.in:675: jm_AC_TYPE_UNSIGNED_LONG_LONG is required by...
+aclocal.m4:4032: jm_AC_TYPE_UINTMAX_T is expanded from...
+configure.in:675: jm_AC_TYPE_UINTMAX_T is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
 #undef HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:627: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.in:675: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
    <inttypes.h> don\'t define. */
 #undef uintmax_t])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
 #undef HAVE_UINTMAX_T])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2645: gt_HEADER_INTTYPES_H is expanded from...
-configure.in:627: gt_HEADER_INTTYPES_H is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
+aclocal.m4:2701: gt_HEADER_INTTYPES_H is expanded from...
+configure.in:675: gt_HEADER_INTTYPES_H is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
 #undef HAVE_INTTYPES_H])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2705: gt_INTTYPES_PRI is expanded from...
-configure.in:627: gt_INTTYPES_PRI is required by...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
-m4trace:configure.in:627: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+aclocal.m4:2761: gt_INTTYPES_PRI is expanded from...
+configure.in:675: gt_INTTYPES_PRI is required by...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
+m4trace:configure.in:675: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
 #undef PRI_MACROS_BROKEN])
-m4trace:configure.in:627: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
+m4trace:configure.in:675: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
 stdlib.h string.h unistd.h sys/param.h])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
 #undef HAVE_ARGZ_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
 #undef HAVE_NL_TYPES_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
 #undef HAVE_STDDEF_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:627: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
+m4trace:configure.in:675: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
 geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \
 strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
 __fsetlocking])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
 #undef HAVE_FEOF_UNLOCKED])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
 #undef HAVE_FGETS_UNLOCKED])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
 #undef HAVE_GETC_UNLOCKED])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
 #undef HAVE_GETCWD])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
 #undef HAVE_GETEGID])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
 #undef HAVE_GETEUID])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
 #undef HAVE_GETGID])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
 #undef HAVE_GETUID])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
 #undef HAVE_MEMPCPY])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
 #undef HAVE_MUNMAP])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
 #undef HAVE_PUTENV])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
 #undef HAVE_SETENV])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
 #undef HAVE_SETLOCALE])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
 #undef HAVE_LOCALECONV])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
 #undef HAVE_STPCPY])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
 #undef HAVE_STRCASECMP])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
 #undef HAVE_STRDUP])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
 #undef HAVE_STRTOUL])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
 #undef HAVE_TSEARCH])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
 #undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
 #undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
 #undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
 #undef HAVE___FSETLOCKING])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2518: AM_ICONV_LINK is expanded from...
-aclocal.m4:2546: AM_ICONV is expanded from...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:2574: AM_ICONV_LINK is expanded from...
+aclocal.m4:2602: AM_ICONV is expanded from...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2518: AM_ICONV_LINK is expanded from...
-aclocal.m4:2546: AM_ICONV is expanded from...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
+aclocal.m4:2574: AM_ICONV_LINK is expanded from...
+aclocal.m4:2602: AM_ICONV is expanded from...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
 #undef HAVE_ICONV])
-m4trace:configure.in:627: -1- AC_SUBST([LIBICONV])
-m4trace:configure.in:627: -1- AC_SUBST([LTLIBICONV])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([LIBICONV])
+m4trace:configure.in:675: -1- AC_SUBST([LTLIBICONV])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:2546: AM_ICONV is expanded from...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
-m4trace:configure.in:627: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
+aclocal.m4:2602: AM_ICONV is expanded from...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
+m4trace:configure.in:675: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
 #undef ICONV_CONST])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1996: AM_LANGINFO_CODESET is expanded from...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+aclocal.m4:2052: AM_LANGINFO_CODESET is expanded from...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
 #undef HAVE_LANGINFO_CODESET])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2763: AM_LC_MESSAGES is expanded from...
-aclocal.m4:2407: AM_INTL_SUBDIR is expanded from...
-configure.in:627: AM_INTL_SUBDIR is required by...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
+aclocal.m4:2819: AM_LC_MESSAGES is expanded from...
+aclocal.m4:2463: AM_INTL_SUBDIR is expanded from...
+configure.in:675: AM_INTL_SUBDIR is required by...
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES])
-m4trace:configure.in:627: -1- AC_SUBST([INTLBISON])
-m4trace:configure.in:627: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:675: -1- AC_SUBST([INTLBISON])
+m4trace:configure.in:675: -1- AC_SUBST([USE_NLS])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:2337: AM_GNU_GETTEXT is expanded from...
-configure.in:627: the top level])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
-m4trace:configure.in:627: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
+aclocal.m4:2393: AM_GNU_GETTEXT is expanded from...
+configure.in:675: the top level])
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
+m4trace:configure.in:675: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
    language is requested. */
 #undef ENABLE_NLS])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT])
-m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
-m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
+m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
+m4trace:configure.in:675: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
    */
 #undef HAVE_DCGETTEXT])
-m4trace:configure.in:627: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
-m4trace:configure.in:627: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
-m4trace:configure.in:627: -1- AC_SUBST([CATOBJEXT])
-m4trace:configure.in:627: -1- AC_SUBST([DATADIRNAME])
-m4trace:configure.in:627: -1- AC_SUBST([INSTOBJEXT])
-m4trace:configure.in:627: -1- AC_SUBST([GENCAT])
-m4trace:configure.in:627: -1- AC_SUBST([INTLOBJS])
-m4trace:configure.in:627: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
-m4trace:configure.in:627: -1- AC_SUBST([INTLLIBS])
-m4trace:configure.in:627: -1- AC_SUBST([LIBINTL])
-m4trace:configure.in:627: -1- AC_SUBST([LTLIBINTL])
-m4trace:configure.in:627: -1- AC_SUBST([POSUB])
-m4trace:configure.in:630: -1- AC_HEADER_DIRENT
-m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
+m4trace:configure.in:675: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST([CATOBJEXT])
+m4trace:configure.in:675: -1- AC_SUBST([DATADIRNAME])
+m4trace:configure.in:675: -1- AC_SUBST([INSTOBJEXT])
+m4trace:configure.in:675: -1- AC_SUBST([GENCAT])
+m4trace:configure.in:675: -1- AC_SUBST([INTLOBJS])
+m4trace:configure.in:675: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+m4trace:configure.in:675: -1- AC_SUBST([INTLLIBS])
+m4trace:configure.in:675: -1- AC_SUBST([LIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST([LTLIBINTL])
+m4trace:configure.in:675: -1- AC_SUBST([POSUB])
+m4trace:configure.in:678: -1- AC_HEADER_DIRENT
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
    */
 #undef HAVE_DIRENT_H])
-m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
    */
 #undef HAVE_SYS_NDIR_H])
-m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
    */
 #undef HAVE_SYS_DIR_H])
-m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
+m4trace:configure.in:678: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
 #undef HAVE_NDIR_H])
-m4trace:configure.in:631: -1- AC_HEADER_TIME
-m4trace:configure.in:631: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.in:631: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+m4trace:configure.in:679: -1- AC_HEADER_TIME
+m4trace:configure.in:679: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
+m4trace:configure.in:679: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #undef TIME_WITH_SYS_TIME])
-m4trace:configure.in:633: -1- AC_CHECK_HEADERS([inttypes.h])
-m4trace:configure.in:633: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.in:681: -1- AC_CHECK_HEADERS([inttypes.h])
+m4trace:configure.in:681: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H])
-m4trace:configure.in:637: -1- AC_CHECK_HEADERS([unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
+m4trace:configure.in:686: -1- AC_CHECK_HEADERS([unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
                 memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
-                stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+                stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+                regex.h syslog.h ulimit.h])
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
 #undef HAVE_STDARG_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
 #undef HAVE_VARARGS_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
 #undef HAVE_TERMCAP_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
 #undef HAVE_TERMIO_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
 #undef HAVE_TERMIOS_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if you have the <stdbool.h> header file. */
+#undef HAVE_STDBOOL_H])
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
 #undef HAVE_STDDEF_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
 #undef HAVE_NETDB_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
 #undef HAVE_PWD_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
 #undef HAVE_GRP_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H])
-m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
 #undef HAVE_REGEX_H])
-m4trace:configure.in:640: -1- AC_CHECK_HEADERS([sys/pte.h sys/stream.h sys/select.h sys/file.h \
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H])
+m4trace:configure.in:686: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the <ulimit.h> header file. */
+#undef HAVE_ULIMIT_H])
+m4trace:configure.in:689: -1- AC_CHECK_HEADERS([sys/pte.h sys/stream.h sys/select.h sys/file.h \
                 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
                 sys/time.h sys/times.h sys/types.h sys/wait.h])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
 #undef HAVE_SYS_PTE_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
 #undef HAVE_SYS_STREAM_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
 #undef HAVE_SYS_FILE_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
 #undef HAVE_SYS_RESOURCE_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
 #undef HAVE_SYS_SOCKET_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
 #undef HAVE_SYS_TIME_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
 #undef HAVE_SYS_TIMES_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
+m4trace:configure.in:689: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
 #undef HAVE_SYS_WAIT_H])
-m4trace:configure.in:641: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h])
-m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
+m4trace:configure.in:690: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h])
+m4trace:configure.in:690: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
 #undef HAVE_NETINET_IN_H])
-m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
+m4trace:configure.in:690: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
 #undef HAVE_ARPA_INET_H])
-m4trace:configure.in:652: -1- AC_FUNC_ALLOCA
-m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.in:701: -1- AC_FUNC_ALLOCA
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
 #undef HAVE_ALLOCA_H])
-m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
 #undef HAVE_ALLOCA])
-m4trace:configure.in:652: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:652: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext])
-m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:652: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.in:701: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.in:701: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext])
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.in:701: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
 #undef C_ALLOCA])
-m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:652: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.in:701: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c\' support on those systems.
    */
 #undef CRAY_STACKSEG_END])
-m4trace:configure.in:652: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.in:701: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
 @%:@undef STACK_DIRECTION])
-m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:653: -1- AC_FUNC_GETPGRP
-m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
-m4trace:configure.in:653: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
+m4trace:configure.in:701: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.in:702: -1- AC_FUNC_GETPGRP
+m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
+m4trace:configure.in:702: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
 #undef GETPGRP_VOID])
-m4trace:configure.in:654: -1- AC_FUNC_SETVBUF_REVERSED
-m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED])
-m4trace:configure.in:654: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the `setvbuf\' function takes the buffering type as its
+m4trace:configure.in:703: -1- AC_FUNC_SETVBUF_REVERSED
+m4trace:configure.in:703: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED])
+m4trace:configure.in:703: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the `setvbuf\' function takes the buffering type as its
    second argument and the buffer pointer as the third, as on System V before
    release 3. */
 #undef SETVBUF_REVERSED])
-m4trace:configure.in:655: -1- AC_FUNC_VPRINTF
-m4trace:configure.in:655: -1- AC_CHECK_FUNCS([vprintf], [
+m4trace:configure.in:704: -1- AC_FUNC_VPRINTF
+m4trace:configure.in:704: -1- AC_CHECK_FUNCS([vprintf], [
 AC_CHECK_FUNC(_doprnt,
               [AC_DEFINE(HAVE_DOPRNT, 1,
                          [Define to 1 if you don't have `vprintf' but do have
                          `_doprnt.'])])])
-m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
+m4trace:configure.in:704: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
 #undef HAVE_VPRINTF])
-m4trace:configure.in:655: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
+m4trace:configure.in:704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
+m4trace:configure.in:704: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
 #undef HAVE_DOPRNT])
-m4trace:configure.in:656: -1- AC_FUNC_STRCOLL
-m4trace:configure.in:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
-m4trace:configure.in:656: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
+m4trace:configure.in:705: -1- AC_FUNC_STRCOLL
+m4trace:configure.in:705: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
+m4trace:configure.in:705: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
    */
 #undef HAVE_STRCOLL])
-m4trace:configure.in:677: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.in:682: -1- AC_LIBSOURCE([vprint.c])
-m4trace:configure.in:682: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:686: -1- AC_TYPE_SIGNAL
-m4trace:configure.in:686: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:686: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+m4trace:configure.in:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.in:731: -1- AC_LIBSOURCE([vprint.c])
+m4trace:configure.in:731: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:735: -1- AC_TYPE_SIGNAL
+m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.in:735: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
 #undef RETSIGTYPE])
-m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
-m4trace:configure.in:690: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
-m4trace:configure.in:691: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC])
-m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN_IN_LIBC])
-m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
-m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
-m4trace:configure.in:701: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \
+m4trace:configure.in:738: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
+m4trace:configure.in:739: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
+m4trace:configure.in:742: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
+m4trace:configure.in:742: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
+m4trace:configure.in:748: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \
                getpagesize getpeername getrlimit getrusage gettimeofday \
                kill killpg lstat readlink sbrk select setdtablesize \
-               tcgetpgrp uname ulimit waitpid])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
+               setitimer tcgetpgrp uname ulimit waitpid])
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
 #undef HAVE_DUP2])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
 #undef HAVE_EACCESS])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
 #undef HAVE_FCNTL])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
 #undef HAVE_GETDTABLESIZE])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
 #undef HAVE_GETGROUPS])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
 #undef HAVE_GETHOSTNAME])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 #undef HAVE_GETPAGESIZE])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
 #undef HAVE_GETPEERNAME])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
 #undef HAVE_GETRLIMIT])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
 #undef HAVE_GETRUSAGE])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
 #undef HAVE_GETTIMEOFDAY])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
 #undef HAVE_KILL])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
 #undef HAVE_KILLPG])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
 #undef HAVE_LSTAT])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
 #undef HAVE_READLINK])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
 #undef HAVE_SBRK])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
 #undef HAVE_SELECT])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
 #undef HAVE_SETDTABLESIZE])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */
+#undef HAVE_SETITIMER])
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
 #undef HAVE_TCGETPGRP])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
 #undef HAVE_UNAME])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
 #undef HAVE_ULIMIT])
-m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
+m4trace:configure.in:748: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
 #undef HAVE_WAITPID])
-m4trace:configure.in:702: -1- AC_LIBSOURCE([rename.c])
-m4trace:configure.in:702: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)])
-m4trace:configure.in:702: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
+m4trace:configure.in:749: -1- AC_LIBSOURCE([rename.c])
+m4trace:configure.in:749: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
 #undef HAVE_RENAME])
-m4trace:configure.in:702: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:709: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \
+m4trace:configure.in:749: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:756: -1- AC_CHECK_FUNCS([bcopy bzero confstr faccessat fnmatch \
                getaddrinfo gethostbyname getservbyname getservent inet_aton \
-               memmove pathconf putenv raise regcomp regexec \
+               imaxdiv memmove pathconf putenv raise regcomp regexec \
                setenv setlinebuf setlocale setvbuf siginterrupt strchr \
-               sysconf tcgetattr times ttyname tzset unsetenv])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
+               sysconf syslog tcgetattr times ttyname tzset unsetenv])
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
 #undef HAVE_BCOPY])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
 #undef HAVE_BZERO])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
 #undef HAVE_CONFSTR])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_FACCESSAT], [/* Define to 1 if you have the `faccessat\' function. */
+#undef HAVE_FACCESSAT])
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
 #undef HAVE_FNMATCH])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
 #undef HAVE_GETADDRINFO])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
 #undef HAVE_GETHOSTBYNAME])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
 #undef HAVE_GETSERVBYNAME])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
 #undef HAVE_GETSERVENT])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
 #undef HAVE_INET_ATON])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_IMAXDIV], [/* Define to 1 if you have the `imaxdiv\' function. */
+#undef HAVE_IMAXDIV])
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
 #undef HAVE_MEMMOVE])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
 #undef HAVE_PATHCONF])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
 #undef HAVE_PUTENV])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
 #undef HAVE_RAISE])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
 #undef HAVE_REGCOMP])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
 #undef HAVE_REGEXEC])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
 #undef HAVE_SETENV])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
 #undef HAVE_SETLINEBUF])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
 #undef HAVE_SETLOCALE])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
 #undef HAVE_SETVBUF])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
 #undef HAVE_SIGINTERRUPT])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
 #undef HAVE_STRCHR])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
 #undef HAVE_SYSCONF])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
+#undef HAVE_SYSLOG])
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
 #undef HAVE_TCGETATTR])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
 #undef HAVE_TIMES])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
 #undef HAVE_TTYNAME])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
 #undef HAVE_TZSET])
-m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
+m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
 #undef HAVE_UNSETENV])
-m4trace:configure.in:711: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf])
-m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
-#undef HAVE_VSNPRINTF])
-m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
-#undef HAVE_SNPRINTF])
-m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
+m4trace:configure.in:758: -1- AC_CHECK_FUNCS([vasprintf asprintf])
+m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
 #undef HAVE_VASPRINTF])
-m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
+m4trace:configure.in:758: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
 #undef HAVE_ASPRINTF])
-m4trace:configure.in:712: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
+m4trace:configure.in:759: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit])
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
 #undef HAVE_ISASCII])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
 #undef HAVE_ISBLANK])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
 #undef HAVE_ISGRAPH])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
 #undef HAVE_ISPRINT])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
 #undef HAVE_ISSPACE])
-m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
+m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
 #undef HAVE_ISXDIGIT])
-m4trace:configure.in:713: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid])
-m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
+m4trace:configure.in:760: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid])
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
 #undef HAVE_GETPWENT])
-m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
 #undef HAVE_GETPWNAM])
-m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
+m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
 #undef HAVE_GETPWUID])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([memset.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strcasecmp.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strerror.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strftime.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strnlen.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strpbrk.c])
-m4trace:configure.in:714: -1- AC_LIBSOURCE([strstr.c])
-m4trace:configure.in:714: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.in:761: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.in:761: -1- AC_LIBSOURCE([memset.c])
+m4trace:configure.in:761: -1- AC_CHECK_FUNCS([getcwd memset], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
 #undef HAVE_GETCWD])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
+m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
 #undef HAVE_MEMSET])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+m4trace:configure.in:761: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strcasecmp.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strcasestr.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strerror.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strftime.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strnlen.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strpbrk.c])
+m4trace:configure.in:762: -1- AC_LIBSOURCE([strstr.c])
+m4trace:configure.in:762: -1- AC_CHECK_FUNCS([strcasecmp strcasestr strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
 #undef HAVE_STRCASECMP])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRCASESTR], [/* Define to 1 if you have the `strcasestr\' function. */
+#undef HAVE_STRCASESTR])
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
 #undef HAVE_STRERROR])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
 #undef HAVE_STRFTIME])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
 #undef HAVE_STRNLEN])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
 #undef HAVE_STRPBRK])
-m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
+m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
 #undef HAVE_STRSTR])
-m4trace:configure.in:714: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtod.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtol.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoul.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoll.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoull.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoimax.c])
-m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoumax.c])
-m4trace:configure.in:715: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
+m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtod.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtol.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoul.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoll.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoull.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoimax.c])
+m4trace:configure.in:763: -1- AC_LIBSOURCE([strtoumax.c])
+m4trace:configure.in:763: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
 #undef HAVE_STRTOD])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
 #undef HAVE_STRTOL])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
 #undef HAVE_STRTOUL])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
 #undef HAVE_STRTOLL])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
 #undef HAVE_STRTOULL])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
 #undef HAVE_STRTOIMAX])
-m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
+m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
 #undef HAVE_STRTOUMAX])
-m4trace:configure.in:715: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
-m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
+m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:764: -1- AC_LIBSOURCE([dprintf.c])
+m4trace:configure.in:764: -1- AC_CHECK_FUNCS([dprintf], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_DPRINTF], [/* Define to 1 if you have the `dprintf\' function. */
+#undef HAVE_DPRINTF])
+m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:765: -1- AC_LIBSOURCE([strchrnul.c])
+m4trace:configure.in:765: -1- AC_CHECK_FUNCS([strchrnul], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:765: -1- AH_OUTPUT([HAVE_STRCHRNUL], [/* Define to 1 if you have the `strchrnul\' function. */
+#undef HAVE_STRCHRNUL])
+m4trace:configure.in:765: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:767: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
+m4trace:configure.in:767: -1- AH_OUTPUT([HAVE_DECL_AUDIT_USER_TTY], [/* Define to 1 if you have the declaration of `AUDIT_USER_TTY\', and to 0 if
+   you don\'t. */
+#undef HAVE_DECL_AUDIT_USER_TTY])
+m4trace:configure.in:767: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
+m4trace:configure.in:769: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
+m4trace:configure.in:769: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
    don\'t. */
 #undef HAVE_DECL_CONFSTR])
-m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
-m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
-m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
+m4trace:configure.in:769: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
+m4trace:configure.in:770: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
+m4trace:configure.in:770: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
    */
 #undef HAVE_DECL_PRINTF])
-m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
-m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
-m4trace:configure.in:719: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
+m4trace:configure.in:770: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
+m4trace:configure.in:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
+m4trace:configure.in:771: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
    */
 #undef HAVE_DECL_SBRK])
-m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
-m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
-m4trace:configure.in:720: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
+m4trace:configure.in:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
+m4trace:configure.in:772: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
+m4trace:configure.in:772: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
    don\'t. */
 #undef HAVE_DECL_SETREGID])
-m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
-m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
-m4trace:configure.in:721: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
+m4trace:configure.in:772: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
+m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
+m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
    */
 #undef HAVE_DECL_STRCPY])
-m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
-m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:722: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
+m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
+m4trace:configure.in:774: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
+m4trace:configure.in:774: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
    don\'t. */
 #undef HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
-m4trace:configure.in:739: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
+m4trace:configure.in:774: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
+m4trace:configure.in:791: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
+m4trace:configure.in:791: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
    don\'t. */
 #undef HAVE_DECL_STRTOLD])
-m4trace:configure.in:739: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:791: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:2352: AC_CHECK_DECL is expanded from...
 autoconf/general.m4:2372: AC_CHECK_DECLS is expanded from...
-configure.in:739: the top level])
-m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
-m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
-m4trace:configure.in:742: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.in:791: the top level])
+m4trace:configure.in:791: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
+m4trace:configure.in:791: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
+m4trace:configure.in:793: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:742: the top level])
-m4trace:configure.in:743: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:793: the top level])
+m4trace:configure.in:794: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:743: the top level])
-m4trace:configure.in:744: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:794: the top level])
+m4trace:configure.in:795: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:744: the top level])
-m4trace:configure.in:745: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:795: the top level])
+m4trace:configure.in:796: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:745: the top level])
-m4trace:configure.in:746: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:796: the top level])
+m4trace:configure.in:797: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:746: the top level])
-m4trace:configure.in:747: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:797: the top level])
+m4trace:configure.in:798: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:122: BASH_CHECK_DECL is expanded from...
-configure.in:747: the top level])
-m4trace:configure.in:749: -1- AC_FUNC_MKTIME
-m4trace:configure.in:749: -1- AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h])
-m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+aclocal.m4:125: BASH_CHECK_DECL is expanded from...
+configure.in:798: the top level])
+m4trace:configure.in:800: -1- AC_FUNC_MKTIME
+m4trace:configure.in:800: -1- AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h])
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
 #undef HAVE_SYS_TIME_H])
-m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:749: -1- AC_CHECK_FUNCS([alarm])
-m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
+m4trace:configure.in:800: -1- AC_CHECK_FUNCS([alarm])
+m4trace:configure.in:800: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
 #undef HAVE_ALARM])
-m4trace:configure.in:749: -1- AC_LIBSOURCE([mktime.c])
-m4trace:configure.in:749: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:756: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
-m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.in:800: -1- AC_LIBSOURCE([mktime.c])
+m4trace:configure.in:800: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:807: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
 #undef HAVE_ARGZ_H])
-m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
 #undef HAVE_ERRNO_H])
-m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H])
-m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H])
-m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
+m4trace:configure.in:807: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
 #undef HAVE_STDIO_EXT_H])
-m4trace:configure.in:759: -1- AC_FUNC_MMAP
-m4trace:configure.in:759: -1- AC_CHECK_HEADERS([stdlib.h unistd.h])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.in:810: -1- AC_FUNC_MMAP
+m4trace:configure.in:810: -1- AC_CHECK_HEADERS([stdlib.h unistd.h])
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.in:759: -1- AC_CHECK_FUNCS([getpagesize])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.in:810: -1- AC_CHECK_FUNCS([getpagesize])
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
 #undef HAVE_GETPAGESIZE])
-m4trace:configure.in:759: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.in:810: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
 #undef HAVE_MMAP])
-m4trace:configure.in:761: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
+m4trace:configure.in:812: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
                munmap stpcpy strcspn strdup])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
 #undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
 #undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
 #undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
 #undef HAVE_DCGETTEXT])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
 #undef HAVE_MEMPCPY])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
 #undef HAVE_MUNMAP])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
 #undef HAVE_STPCPY])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
 #undef HAVE_STRCSPN])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
 #undef HAVE_STRDUP])
-m4trace:configure.in:769: -1- AC_SUBST([INTL_DEP])
-m4trace:configure.in:770: -1- AC_SUBST([INTL_INC])
-m4trace:configure.in:771: -1- AC_SUBST([LIBINTL_H])
-m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wctype.h])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
+m4trace:configure.in:820: -1- AC_SUBST([INTL_DEP])
+m4trace:configure.in:821: -1- AC_SUBST([INTL_INC])
+m4trace:configure.in:822: -1- AC_SUBST([LIBINTL_H])
+m4trace:configure.in:828: -1- AC_CHECK_HEADERS([wctype.h])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
 #undef HAVE_WCTYPE_H])
-m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wchar.h])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
+m4trace:configure.in:828: -1- AC_CHECK_HEADERS([wchar.h])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
 #undef HAVE_WCHAR_H])
-m4trace:configure.in:777: -1- AC_CHECK_HEADERS([langinfo.h])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
+m4trace:configure.in:828: -1- AC_CHECK_HEADERS([langinfo.h])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
 #undef HAVE_LANGINFO_H])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
-m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
-m4trace:configure.in:777: -1- AC_FUNC_MBRTOWC
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSNRTOWCS])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
+m4trace:configure.in:828: -1- AC_LIBSOURCE([mbschr.c])
+m4trace:configure.in:828: -1- AC_CHECK_FUNCS([mbschr], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_MBSCHR], [/* Define to 1 if you have the `mbschr\' function. */
+#undef HAVE_MBSCHR])
+m4trace:configure.in:828: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
+m4trace:configure.in:828: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
+m4trace:configure.in:828: -1- AC_LIBSOURCE([wcswidth.c])
+m4trace:configure.in:828: -1- AC_CHECK_FUNCS([wcswidth], [], [_AC_LIBOBJ($ac_func)])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */
+#undef HAVE_WCSWIDTH])
+m4trace:configure.in:828: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:828: -1- AC_FUNC_MBRTOWC
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
 #undef HAVE_MBRTOWC])
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
-m4trace:configure.in:777: -1- AC_CHECK_FUNCS([iswlower iswupper towlower towupper iswctype])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
+m4trace:configure.in:828: -1- AC_CHECK_FUNCS([iswlower iswupper towlower towupper iswctype])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
 #undef HAVE_ISWLOWER])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
 #undef HAVE_ISWUPPER])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
 #undef HAVE_TOWLOWER])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
 #undef HAVE_TOWUPPER])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
 #undef HAVE_ISWCTYPE])
-m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:777: the top level])
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:777: the top level])
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
 #undef HAVE_WCHAR_T])
-m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:777: the top level])
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
 #undef HAVE_WCTYPE_T])
-m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:777: the top level])
-m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
-m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
 #undef HAVE_WINT_T])
-m4trace:configure.in:781: -1- AC_CHECK_LIB([dl], [dlopen])
-m4trace:configure.in:781: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
+m4trace:configure.in:828: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+aclocal.m4:1799: BASH_CHECK_MULTIBYTE is expanded from...
+configure.in:828: the top level])
+m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
+m4trace:configure.in:828: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
+#undef WCWIDTH_BROKEN])
+m4trace:configure.in:828: -1- AC_CHECK_FUNCS([locale_charset])
+m4trace:configure.in:828: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
+#undef HAVE_LOCALE_CHARSET])
+m4trace:configure.in:832: -1- AC_CHECK_LIB([dl], [dlopen])
+m4trace:configure.in:832: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
 #undef HAVE_LIBDL])
-m4trace:configure.in:781: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
-m4trace:configure.in:782: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym])
-m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
+m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
+m4trace:configure.in:833: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym])
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
 #undef HAVE_DLOPEN])
-m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
 #undef HAVE_DLCLOSE])
-m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
+m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
 #undef HAVE_DLSYM])
-m4trace:configure.in:786: -1- AC_DECL_SYS_SIGLIST
-m4trace:configure.in:786: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
+m4trace:configure.in:837: -1- AC_DECL_SYS_SIGLIST
+m4trace:configure.in:837: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
 You should run autoupdate.], [autoconf/specific.m4:70: AC_DECL_SYS_SIGLIST is expanded from...
-configure.in:786: the top level])
-m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:786: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
+configure.in:837: the top level])
+m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
+m4trace:configure.in:837: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
    don\'t. */
 #undef HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:790: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
+m4trace:configure.in:841: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:562: BASH_FUNC_INET_ATON is expanded from...
-configure.in:790: the top level])
-m4trace:configure.in:790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
-m4trace:configure.in:790: -1- AC_LIBSOURCE([inet_aton.c])
-m4trace:configure.in:790: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:796: -1- AC_CHECK_LIB([sun], [getpwent])
-m4trace:configure.in:796: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
+aclocal.m4:577: BASH_FUNC_INET_ATON is expanded from...
+configure.in:841: the top level])
+m4trace:configure.in:841: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
+m4trace:configure.in:841: -1- AC_LIBSOURCE([inet_aton.c])
+m4trace:configure.in:841: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:847: -1- AC_CHECK_LIB([sun], [getpwent])
+m4trace:configure.in:847: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
 #undef HAVE_LIBSUN])
-m4trace:configure.in:796: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
-m4trace:configure.in:801: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl])
-m4trace:configure.in:801: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no])
-m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
-m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
-m4trace:configure.in:805: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:847: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
+m4trace:configure.in:852: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl])
+m4trace:configure.in:852: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no])
+m4trace:configure.in:852: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
+m4trace:configure.in:852: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
+m4trace:configure.in:856: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:737: BASH_FUNC_GETHOSTBYNAME is expanded from...
-configure.in:805: the top level])
-m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
-m4trace:configure.in:809: -1- AC_TYPE_UID_T
-m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:809: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+aclocal.m4:752: BASH_FUNC_GETHOSTBYNAME is expanded from...
+configure.in:856: the top level])
+m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
+m4trace:configure.in:860: -1- AC_TYPE_UID_T
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.in:860: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 #undef uid_t])
-m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:809: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.in:860: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 #undef gid_t])
-m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
-m4trace:configure.in:809: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
+m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
+m4trace:configure.in:860: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
    this is either `int\' or `gid_t\'. */
 #undef GETGROUPS_T])
-m4trace:configure.in:810: -1- AC_TYPE_OFF_T
-m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:810: -1- AH_OUTPUT([off_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:861: -1- AC_TYPE_OFF_T
+m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.in:861: -1- AH_OUTPUT([off_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef off_t])
-m4trace:configure.in:811: -1- AC_TYPE_MODE_T
-m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
-m4trace:configure.in:811: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:862: -1- AC_TYPE_MODE_T
+m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
+m4trace:configure.in:862: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef mode_t])
-m4trace:configure.in:812: -1- AC_TYPE_UID_T
-m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:812: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:863: -1- AC_TYPE_UID_T
+m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.in:863: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 #undef uid_t])
-m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:812: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.in:863: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
 #undef gid_t])
-m4trace:configure.in:813: -1- AC_TYPE_PID_T
-m4trace:configure.in:813: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
-m4trace:configure.in:813: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:864: -1- AC_TYPE_PID_T
+m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
+m4trace:configure.in:864: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef pid_t])
-m4trace:configure.in:814: -1- AC_TYPE_SIZE_T
-m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:814: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
+m4trace:configure.in:865: -1- AC_TYPE_SIZE_T
+m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.in:865: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
 #undef size_t])
-m4trace:configure.in:815: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
-m4trace:configure.in:815: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
+m4trace:configure.in:866: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef ssize_t])
-m4trace:configure.in:816: -1- AC_DEFINE_TRACE_LITERAL([time_t])
-m4trace:configure.in:816: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([time_t])
+m4trace:configure.in:867: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef time_t])
-m4trace:configure.in:818: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:869: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:481: BASH_TYPE_LONG_LONG is expanded from...
-configure.in:818: the top level])
-m4trace:configure.in:818: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
-m4trace:configure.in:819: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:484: BASH_TYPE_LONG_LONG is expanded from...
+configure.in:869: the top level])
+m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
+m4trace:configure.in:870: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:496: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from...
-configure.in:819: the top level])
-m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:821: -1- AC_TYPE_SIGNAL
-m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:821: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+aclocal.m4:499: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from...
+configure.in:870: the top level])
+m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.in:872: -1- AC_TYPE_SIGNAL
+m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.in:872: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
 #undef RETSIGTYPE])
-m4trace:configure.in:823: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:873: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+aclocal.m4:547: BASH_TYPE_SIG_ATOMIC_T is expanded from...
+configure.in:873: the top level])
+m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
+m4trace:configure.in:873: -1- AH_OUTPUT([sig_atomic_t], [/* Define to `int\' if <sys/types.h> does not define. */
+#undef sig_atomic_t])
+m4trace:configure.in:875: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:823: the top level])
-m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
-m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a `char\', as computed by sizeof. */
+configure.in:875: the top level])
+m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
+m4trace:configure.in:875: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a `char\', as computed by sizeof. */
 #undef SIZEOF_CHAR])
-m4trace:configure.in:824: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:876: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:824: the top level])
-m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
-m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */
+configure.in:876: the top level])
+m4trace:configure.in:876: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
+m4trace:configure.in:876: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */
 #undef SIZEOF_SHORT])
-m4trace:configure.in:825: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:877: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:825: the top level])
-m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
-m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */
+configure.in:877: the top level])
+m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
+m4trace:configure.in:877: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */
 #undef SIZEOF_INT])
-m4trace:configure.in:826: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:878: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:826: the top level])
-m4trace:configure.in:826: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
-m4trace:configure.in:826: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */
+configure.in:878: the top level])
+m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
+m4trace:configure.in:878: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */
 #undef SIZEOF_LONG])
-m4trace:configure.in:827: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:879: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:827: the top level])
-m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
-m4trace:configure.in:827: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a `char *\', as computed by sizeof. */
+configure.in:879: the top level])
+m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
+m4trace:configure.in:879: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a `char *\', as computed by sizeof. */
 #undef SIZEOF_CHAR_P])
-m4trace:configure.in:828: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:880: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:828: the top level])
-m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
-m4trace:configure.in:828: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */
+configure.in:880: the top level])
+m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
+m4trace:configure.in:880: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */
 #undef SIZEOF_DOUBLE])
-m4trace:configure.in:829: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+m4trace:configure.in:881: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
 autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
-m4trace:configure.in:829: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */
+configure.in:881: the top level])
+m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
+m4trace:configure.in:881: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG])
-m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_int])
-m4trace:configure.in:831: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([u_int])
+m4trace:configure.in:883: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 #undef u_int])
-m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([u_long])
-m4trace:configure.in:832: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([u_long])
+m4trace:configure.in:884: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
 #undef u_long])
-m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
 #undef bits16_t])
-m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
 #undef bits16_t])
-m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.in:886: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
 #undef bits16_t])
-m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
 #undef u_bits16_t])
-m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
 #undef u_bits16_t])
-m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.in:887: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
 #undef u_bits16_t])
-m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef bits32_t])
-m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef bits32_t])
-m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.in:888: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef bits32_t])
-m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 #undef u_bits32_t])
-m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
 #undef u_bits32_t])
-m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.in:889: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
 #undef u_bits32_t])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
 #undef bits64_t])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
 #undef bits64_t])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
 #undef bits64_t])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef bits64_t])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.in:890: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
 #undef bits64_t])
-m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef ptrdiff_t])
-m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
 #undef ptrdiff_t])
-m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
 #undef ptrdiff_t])
-m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.in:892: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
 #undef ptrdiff_t])
-m4trace:configure.in:843: -1- AC_HEADER_STAT
-m4trace:configure.in:843: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
-m4trace:configure.in:843: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
+m4trace:configure.in:895: -1- AC_HEADER_STAT
+m4trace:configure.in:895: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
+m4trace:configure.in:895: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
 #undef STAT_MACROS_BROKEN])
-m4trace:configure.in:848: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
-m4trace:configure.in:853: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:900: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
+m4trace:configure.in:905: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:546: BASH_FUNC_LSTAT is expanded from...
-configure.in:853: the top level])
-m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
-m4trace:configure.in:857: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:561: BASH_FUNC_LSTAT is expanded from...
+configure.in:905: the top level])
+m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
+m4trace:configure.in:909: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1906: BASH_FUNC_CTYPE_NONASCII is expanded from...
-configure.in:857: the top level])
-m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
-m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:1962: BASH_FUNC_CTYPE_NONASCII is expanded from...
+configure.in:909: the top level])
+m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
+m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:294: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from...
-configure.in:858: the top level])
-m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
-m4trace:configure.in:859: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:297: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from...
+configure.in:910: the top level])
+m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
+m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1280: BASH_SYS_PGRP_SYNC is expanded from...
-configure.in:859: the top level])
-m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:1295: BASH_SYS_PGRP_SYNC is expanded from...
+configure.in:911: the top level])
+m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:860: the top level])
-m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:1232: BASH_SYS_SIGNAL_VINTAGE is expanded from...
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from...
 autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:860: the top level])
-m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:1232: BASH_SYS_SIGNAL_VINTAGE is expanded from...
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from...
 autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from...
 autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:860: the top level])
-m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
-m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
-m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
-m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:1232: BASH_SYS_SIGNAL_VINTAGE is expanded from...
+configure.in:912: the top level])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
+m4trace:configure.in:915: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:262: BASH_SYS_ERRLIST is expanded from...
-configure.in:863: the top level])
-m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
-m4trace:configure.in:864: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:265: BASH_SYS_ERRLIST is expanded from...
+configure.in:915: the top level])
+m4trace:configure.in:915: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
+m4trace:configure.in:916: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:233: BASH_SYS_SIGLIST is expanded from...
-configure.in:864: the top level])
-m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
-m4trace:configure.in:865: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:236: BASH_SYS_SIGLIST is expanded from...
+configure.in:916: the top level])
+m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
+m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:179: BASH_DECL_UNDER_SYS_SIGLIST is expanded from...
-configure.in:865: BASH_DECL_UNDER_SYS_SIGLIST is required by...
-aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:865: the top level])
-m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
-m4trace:configure.in:865: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:182: BASH_DECL_UNDER_SYS_SIGLIST is expanded from...
+configure.in:917: BASH_DECL_UNDER_SYS_SIGLIST is required by...
+aclocal.m4:209: BASH_UNDER_SYS_SIGLIST is expanded from...
+configure.in:917: the top level])
+m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
+m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:865: the top level])
-m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
-m4trace:configure.in:868: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:209: BASH_UNDER_SYS_SIGLIST is expanded from...
+configure.in:917: the top level])
+m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
+m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:380: BASH_TYPE_SIGHANDLER is expanded from...
-configure.in:868: the top level])
-m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
-m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
-m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
-m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
-m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
-m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
-m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
-m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
-m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:383: BASH_TYPE_SIGHANDLER is expanded from...
+configure.in:920: the top level])
+m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
+m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
+m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
+m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
+m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
+m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
+m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
+m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
+m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from...
-configure.in:877: the top level])
-m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:535: BASH_TYPE_RLIMIT is expanded from...
+configure.in:929: the top level])
+m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from...
 autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from...
-configure.in:877: the top level])
-m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:880: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
-m4trace:configure.in:881: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
-m4trace:configure.in:882: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:535: BASH_TYPE_RLIMIT is expanded from...
+configure.in:929: the top level])
+m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.in:931: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from...
+configure.in:931: the top level])
+m4trace:configure.in:931: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INTMAX_T])
+m4trace:configure.in:931: -1- AH_OUTPUT([SIZEOF_INTMAX_T], [/* The size of a `intmax_t\', as computed by sizeof. */
+#undef SIZEOF_INTMAX_T])
+m4trace:configure.in:934: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
+m4trace:configure.in:935: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
+m4trace:configure.in:936: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1058: BASH_STRUCT_DIRENT_D_INO is expanded from...
-configure.in:882: the top level])
-m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
-m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1073: BASH_STRUCT_DIRENT_D_INO is expanded from...
+configure.in:936: the top level])
+m4trace:configure.in:936: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
+m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1091: BASH_STRUCT_DIRENT_D_FILENO is expanded from...
-configure.in:883: the top level])
-m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
-m4trace:configure.in:884: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1106: BASH_STRUCT_DIRENT_D_FILENO is expanded from...
+configure.in:937: the top level])
+m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
+m4trace:configure.in:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1124: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from...
-configure.in:884: the top level])
-m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
-m4trace:configure.in:885: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1139: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from...
+configure.in:938: the top level])
+m4trace:configure.in:938: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
+m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:885: the top level])
-m4trace:configure.in:885: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1192: BASH_STRUCT_WINSIZE is expanded from...
+configure.in:939: the top level])
+m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from...
 autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:885: the top level])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
-m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
-m4trace:configure.in:887: -1- AC_CHECK_MEMBERS([struct stat.st_blocks])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is member of `struct stat\'. */
+aclocal.m4:1192: BASH_STRUCT_WINSIZE is expanded from...
+configure.in:939: the top level])
+m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
+m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
+m4trace:configure.in:940: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
+m4trace:configure.in:941: -1- AC_CHECK_MEMBERS([struct stat.st_blocks])
+m4trace:configure.in:941: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
+m4trace:configure.in:941: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is member of `struct stat\'. */
 #undef HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:888: -1- AC_STRUCT_TM
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
-m4trace:configure.in:888: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
+m4trace:configure.in:942: -1- AC_STRUCT_TM
+m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
+m4trace:configure.in:942: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
 #undef TM_IN_SYS_TIME])
-m4trace:configure.in:889: -1- AC_STRUCT_TIMEZONE
-m4trace:configure.in:889: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include <sys/types.h>
+m4trace:configure.in:943: -1- AC_STRUCT_TIMEZONE
+m4trace:configure.in:943: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include <sys/types.h>
 #include <$ac_cv_struct_tm>
 ])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */
 #undef HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
-m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
    `HAVE_STRUCT_TM_TM_ZONE\' instead. */
 #undef HAVE_TM_ZONE])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
-m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
+m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
+m4trace:configure.in:943: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
    `tzname\'. */
 #undef HAVE_TZNAME])
-m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
-m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
+m4trace:configure.in:946: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+aclocal.m4:4195: BASH_STRUCT_WEXITSTATUS_OFFSET is expanded from...
+configure.in:946: the top level])
+m4trace:configure.in:946: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
+m4trace:configure.in:946: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
+#undef WEXITSTATUS_OFFSET])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:948: -1- AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.in:949: -1- AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec],
+       [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec],
+       [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+          [[
+            #include <sys/types.h>
+            #include <sys/stat.h>
+            #if HAVE_SYS_TIME_H
+            # include <sys/time.h>
+            #endif
+            #include <time.h>
+            struct timespec ts;
+            struct stat st;
+          ]],
+          [[
+            st.st_atim = ts;
+          ]])],
+          [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes],
+          [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])])
+     if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
+       AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1],
+         [Define to 1 if the type of the st_atim member of a struct stat is
+          struct timespec.])
+     fi], [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [],
+       [AC_CHECK_MEMBERS([struct stat.st_atimensec], [],
+          [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [],
+             [#include <sys/types.h>
+              #include <sys/stat.h>])],
+          [#include <sys/types.h>
+           #include <sys/stat.h>])],
+       [#include <sys/types.h>
+        #include <sys/stat.h>])], [#include <sys/types.h>
+     #include <sys/stat.h>])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is member of `struct stat\'. */
+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
+m4trace:configure.in:949: -1- AH_OUTPUT([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [/* Define to 1 if the type of the st_atim member of a struct stat is struct
+   timespec. */
+#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
+m4trace:configure.in:949: -1- AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], [AC_CHECK_MEMBERS([struct stat.st_atimensec], [],
+          [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [],
+             [#include <sys/types.h>
+              #include <sys/stat.h>])],
+          [#include <sys/types.h>
+           #include <sys/stat.h>])], [#include <sys/types.h>
+        #include <sys/stat.h>])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is member of `struct stat\'. */
+#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.in:949: -1- AC_CHECK_MEMBERS([struct stat.st_atimensec], [], [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [],
+             [#include <sys/types.h>
+              #include <sys/stat.h>])], [#include <sys/types.h>
+           #include <sys/stat.h>])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is member of `struct stat\'. */
+#undef HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.in:949: -1- AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], [#include <sys/types.h>
+              #include <sys/stat.h>])
+m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is member of `struct stat\'. */
+#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.in:952: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:307: BASH_FUNC_STRSIGNAL is expanded from...
-configure.in:893: the top level])
-m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
-m4trace:configure.in:894: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:310: BASH_FUNC_STRSIGNAL is expanded from...
+configure.in:952: the top level])
+m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
+m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:360: BASH_FUNC_OPENDIR_CHECK is expanded from...
-configure.in:894: the top level])
-m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
-m4trace:configure.in:895: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:363: BASH_FUNC_OPENDIR_CHECK is expanded from...
+configure.in:953: the top level])
+m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
+m4trace:configure.in:954: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:685: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
-configure.in:895: the top level])
-m4trace:configure.in:895: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
-m4trace:configure.in:896: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:700: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
+configure.in:954: the top level])
+m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
+m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
+m4trace:configure.in:955: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
+   */
+#undef HAVE_DECL_FPURGE])
+m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
+m4trace:configure.in:956: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+aclocal.m4:621: BASH_FUNC_GETENV is expanded from...
+configure.in:956: the top level])
+m4trace:configure.in:956: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
+m4trace:configure.in:958: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
+aclocal.m4:726: BASH_FUNC_GETCWD is expanded from...
+configure.in:958: the top level])
+m4trace:configure.in:958: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
+m4trace:configure.in:958: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.in:958: -1- AC_SUBST([LIB@&t@OBJS])
+m4trace:configure.in:960: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:606: BASH_FUNC_GETENV is expanded from...
-configure.in:896: the top level])
-m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
-m4trace:configure.in:898: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:827: BASH_FUNC_POSIX_SETJMP is expanded from...
+configure.in:960: the top level])
+m4trace:configure.in:960: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
+m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:711: BASH_FUNC_GETCWD is expanded from...
-configure.in:898: the top level])
-m4trace:configure.in:898: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
-m4trace:configure.in:898: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:898: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:900: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:876: BASH_FUNC_STRCOLL is expanded from...
+configure.in:961: the top level])
+m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
+m4trace:configure.in:962: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:812: BASH_FUNC_POSIX_SETJMP is expanded from...
-configure.in:900: the top level])
-m4trace:configure.in:900: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
-m4trace:configure.in:901: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+aclocal.m4:4091: BASH_FUNC_SNPRINTF is expanded from...
+configure.in:962: the top level])
+m4trace:configure.in:962: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
+m4trace:configure.in:962: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
+#undef HAVE_SNPRINTF])
+m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:861: BASH_FUNC_STRCOLL is expanded from...
-configure.in:901: the top level])
-m4trace:configure.in:901: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
-m4trace:configure.in:907: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
+aclocal.m4:4147: BASH_FUNC_VSNPRINTF is expanded from...
+configure.in:963: the top level])
+m4trace:configure.in:963: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
+m4trace:configure.in:963: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
+#undef HAVE_VSNPRINTF])
+m4trace:configure.in:969: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:636: BASH_FUNC_STD_PUTENV is expanded from...
-configure.in:907: the top level])
-m4trace:configure.in:907: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+aclocal.m4:651: BASH_FUNC_STD_PUTENV is expanded from...
+configure.in:969: the top level])
+m4trace:configure.in:969: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.in:971: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.in:974: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
 autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-aclocal.m4:666: BASH_FUNC_STD_UNSETENV is expanded from...
-configure.in:912: the top level])
-m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:914: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:681: BASH_FUNC_STD_UNSETENV is expanded from...
+configure.in:974: the top level])
+m4trace:configure.in:974: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.in:976: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.in:979: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:887: BASH_FUNC_PRINTF_A_FORMAT is expanded from...
-configure.in:917: the top level])
-m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
-m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:902: BASH_FUNC_PRINTF_A_FORMAT is expanded from...
+configure.in:979: the top level])
+m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
+m4trace:configure.in:982: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1338: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
-configure.in:920: the top level])
-m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
-m4trace:configure.in:921: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:1353: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
+configure.in:982: the top level])
+m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
+m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1396: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
-configure.in:921: the top level])
-m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
-m4trace:configure.in:922: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:1411: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
+configure.in:983: the top level])
+m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
+m4trace:configure.in:984: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1448: BASH_SYS_NAMED_PIPES is expanded from...
-configure.in:922: the top level])
-m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
-m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:925: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
+aclocal.m4:1463: BASH_SYS_NAMED_PIPES is expanded from...
+configure.in:984: the top level])
+m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
+m4trace:configure.in:987: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
+m4trace:configure.in:987: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
 #undef GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:926: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+m4trace:configure.in:988: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1491: BASH_HAVE_TIOCSTAT is expanded from...
-configure.in:926: the top level])
-m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
-m4trace:configure.in:927: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1506: BASH_HAVE_TIOCSTAT is expanded from...
+configure.in:988: the top level])
+m4trace:configure.in:988: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
+m4trace:configure.in:989: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1503: BASH_HAVE_FIONREAD is expanded from...
-configure.in:927: the top level])
-m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
-m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:1518: BASH_HAVE_FIONREAD is expanded from...
+configure.in:989: the top level])
+m4trace:configure.in:989: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
+m4trace:configure.in:991: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1939: BASH_CHECK_WCONTINUED is expanded from...
-configure.in:929: the top level])
-m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
-m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1995: BASH_CHECK_WCONTINUED is expanded from...
+configure.in:991: the top level])
+m4trace:configure.in:991: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
+m4trace:configure.in:994: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1520: BASH_CHECK_SPEED_T is expanded from...
-configure.in:932: the top level])
-m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
-m4trace:configure.in:933: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
-m4trace:configure.in:934: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+aclocal.m4:1535: BASH_CHECK_SPEED_T is expanded from...
+configure.in:994: the top level])
+m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
+m4trace:configure.in:995: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
+m4trace:configure.in:996: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1667: BASH_CHECK_RTSIGS is expanded from...
-configure.in:934: the top level])
-m4trace:configure.in:934: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
-m4trace:configure.in:935: -1- AC_SUBST([SIGLIST_O])
-m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1682: BASH_CHECK_RTSIGS is expanded from...
+configure.in:996: the top level])
+m4trace:configure.in:996: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
+m4trace:configure.in:997: -1- AC_SUBST([SIGLIST_O])
+m4trace:configure.in:1001: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1616: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:939: the top level])
-m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+aclocal.m4:1631: BASH_CHECK_KERNEL_RLIMIT is expanded from...
+configure.in:1001: the top level])
+m4trace:configure.in:1001: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
 You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from...
 autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
 autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-aclocal.m4:1616: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:939: the top level])
-m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
-m4trace:configure.in:947: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
+aclocal.m4:1631: BASH_CHECK_KERNEL_RLIMIT is expanded from...
+configure.in:1001: the top level])
+m4trace:configure.in:1001: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
+m4trace:configure.in:1009: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
         [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
            [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])])])
-m4trace:configure.in:947: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
+m4trace:configure.in:1009: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
            [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])])
-m4trace:configure.in:947: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
+m4trace:configure.in:1009: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                bash_cv_termcap_lib=gnutermcap)])
-m4trace:configure.in:947: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap])
-m4trace:configure.in:949: -1- AC_SUBST([TERMCAP_LIB])
-m4trace:configure.in:950: -1- AC_SUBST([TERMCAP_DEP])
-m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
-m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
-m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
-m4trace:configure.in:967: -1- AC_SUBST([JOBS_O])
-m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
-m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
-m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
-m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
-m4trace:configure.in:999: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_CC])
-m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_CFLAGS])
-m4trace:configure.in:1048: -1- AC_SUBST([SHOBJ_LD])
-m4trace:configure.in:1049: -1- AC_SUBST([SHOBJ_LDFLAGS])
-m4trace:configure.in:1050: -1- AC_SUBST([SHOBJ_XLDFLAGS])
-m4trace:configure.in:1051: -1- AC_SUBST([SHOBJ_LIBS])
-m4trace:configure.in:1052: -1- AC_SUBST([SHOBJ_STATUS])
-m4trace:configure.in:1084: -1- AC_SUBST([PROFILE_FLAGS])
-m4trace:configure.in:1086: -1- AC_SUBST([incdir])
-m4trace:configure.in:1087: -1- AC_SUBST([BUILD_DIR])
-m4trace:configure.in:1090: -1- AC_SUBST([datarootdir])
-m4trace:configure.in:1091: -1- AC_SUBST([localedir])
-m4trace:configure.in:1093: -1- AC_SUBST([YACC])
-m4trace:configure.in:1094: -1- AC_SUBST([AR])
-m4trace:configure.in:1095: -1- AC_SUBST([ARFLAGS])
-m4trace:configure.in:1097: -1- AC_SUBST([BASHVERS])
-m4trace:configure.in:1098: -1- AC_SUBST([RELSTATUS])
-m4trace:configure.in:1099: -1- AC_SUBST([DEBUG])
-m4trace:configure.in:1100: -1- AC_SUBST([MALLOC_DEBUG])
-m4trace:configure.in:1102: -1- AC_SUBST([host_cpu])
-m4trace:configure.in:1103: -1- AC_SUBST([host_vendor])
-m4trace:configure.in:1104: -1- AC_SUBST([host_os])
-m4trace:configure.in:1106: -1- AC_SUBST([LOCAL_LIBS])
-m4trace:configure.in:1107: -1- AC_SUBST([LOCAL_CFLAGS])
-m4trace:configure.in:1108: -1- AC_SUBST([LOCAL_LDFLAGS])
-m4trace:configure.in:1109: -1- AC_SUBST([LOCAL_DEFS])
-m4trace:configure.in:1122: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
+m4trace:configure.in:1009: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap])
+m4trace:configure.in:1011: -1- AC_SUBST([TERMCAP_LIB])
+m4trace:configure.in:1012: -1- AC_SUBST([TERMCAP_DEP])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
+m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
+m4trace:configure.in:1023: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
+m4trace:configure.in:1029: -1- AC_SUBST([JOBS_O])
+m4trace:configure.in:1042: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
+m4trace:configure.in:1043: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
+m4trace:configure.in:1044: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
+m4trace:configure.in:1045: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
+m4trace:configure.in:1064: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.in:1111: -1- AC_SUBST([SHOBJ_CC])
+m4trace:configure.in:1112: -1- AC_SUBST([SHOBJ_CFLAGS])
+m4trace:configure.in:1113: -1- AC_SUBST([SHOBJ_LD])
+m4trace:configure.in:1114: -1- AC_SUBST([SHOBJ_LDFLAGS])
+m4trace:configure.in:1115: -1- AC_SUBST([SHOBJ_XLDFLAGS])
+m4trace:configure.in:1116: -1- AC_SUBST([SHOBJ_LIBS])
+m4trace:configure.in:1117: -1- AC_SUBST([SHOBJ_STATUS])
+m4trace:configure.in:1149: -1- AC_SUBST([PROFILE_FLAGS])
+m4trace:configure.in:1151: -1- AC_SUBST([incdir])
+m4trace:configure.in:1152: -1- AC_SUBST([BUILD_DIR])
+m4trace:configure.in:1155: -1- AC_SUBST([datarootdir])
+m4trace:configure.in:1156: -1- AC_SUBST([localedir])
+m4trace:configure.in:1158: -1- AC_SUBST([YACC])
+m4trace:configure.in:1159: -1- AC_SUBST([AR])
+m4trace:configure.in:1160: -1- AC_SUBST([ARFLAGS])
+m4trace:configure.in:1162: -1- AC_SUBST([BASHVERS])
+m4trace:configure.in:1163: -1- AC_SUBST([RELSTATUS])
+m4trace:configure.in:1164: -1- AC_SUBST([DEBUG])
+m4trace:configure.in:1165: -1- AC_SUBST([MALLOC_DEBUG])
+m4trace:configure.in:1167: -1- AC_SUBST([host_cpu])
+m4trace:configure.in:1168: -1- AC_SUBST([host_vendor])
+m4trace:configure.in:1169: -1- AC_SUBST([host_os])
+m4trace:configure.in:1171: -1- AC_SUBST([LOCAL_LIBS])
+m4trace:configure.in:1172: -1- AC_SUBST([LOCAL_CFLAGS])
+m4trace:configure.in:1173: -1- AC_SUBST([LOCAL_LDFLAGS])
+m4trace:configure.in:1174: -1- AC_SUBST([LOCAL_DEFS])
+m4trace:configure.in:1187: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
          lib/intl/Makefile \
          lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
          lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
          examples/loadables/Makefile examples/loadables/perl/Makefile])
-m4trace:configure.in:1122: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+m4trace:configure.in:1187: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
 You should run autoupdate.], [])
-m4trace:configure.in:1122: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.in:1122: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.in:1187: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.in:1187: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
index 8d4c1c18116cf37aac203a4dc1ecd125ac9512c1..033ba41534274beb4b9886a96dc5533f707baa1b 100644 (file)
@@ -940,7 +940,9 @@ edit_and_execute_command (count, c, editing_mode, edit_command)
       /* This breaks down when using command-oriented history and are not
         finished with the command, so we should not ignore the last command */
       using_history ();
+      current_command_line_count++;    /* for rl_newline above */
       bash_add_history (rl_line_buffer);
+      current_command_line_count = 0;  /* for dummy history entry */
       bash_add_history ("");
       history_lines_this_session++;
       using_history ();
diff --git a/bashline.c~ b/bashline.c~
new file mode 100644 (file)
index 0000000..8d4c1c1
--- /dev/null
@@ -0,0 +1,4118 @@
+/* bashline.c -- Bash's interface to the readline library. */
+
+/* Copyright (C) 1987-2012 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#if defined (READLINE)
+
+#include "bashtypes.h"
+#include "posixstat.h"
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
+#if defined (HAVE_GRP_H)
+#  include <grp.h>
+#endif
+
+#if defined (HAVE_NETDB_H)
+#  include <netdb.h>
+#endif
+
+#include <stdio.h>
+#include "chartypes.h"
+#include "bashansi.h"
+#include "bashintl.h"
+
+#include "shell.h"
+#include "input.h"
+#include "builtins.h"
+#include "bashhist.h"
+#include "bashline.h"
+#include "execute_cmd.h"
+#include "findcmd.h"
+#include "pathexp.h"
+#include "shmbutil.h"
+
+#include "builtins/common.h"
+
+#include <readline/rlconf.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+
+#include <glob/glob.h>
+
+#if defined (ALIAS)
+#  include "alias.h"
+#endif
+
+#if defined (PROGRAMMABLE_COMPLETION)
+#  include "pcomplete.h"
+#endif
+
+/* These should agree with the defines for emacs_mode and vi_mode in
+   rldefs.h, even though that's not a public readline header file. */
+#ifndef EMACS_EDITING_MODE
+#  define NO_EDITING_MODE      -1
+#  define EMACS_EDITING_MODE    1
+#  define VI_EDITING_MODE       0
+#endif
+
+#define RL_BOOLEAN_VARIABLE_VALUE(s)   ((s)[0] == 'o' && (s)[1] == 'n' && (s)[2] == '\0')
+
+#if defined (BRACE_COMPLETION)
+extern int bash_brace_completion __P((int, int));
+#endif /* BRACE_COMPLETION */
+
+/* To avoid including curses.h/term.h/termcap.h and that whole mess. */
+extern int tputs __P((const char *string, int nlines, int (*outx)(int)));
+
+/* Forward declarations */
+
+/* Functions bound to keys in Readline for Bash users. */
+static int shell_expand_line __P((int, int));
+static int display_shell_version __P((int, int));
+static int operate_and_get_next __P((int, int));
+
+static int bash_ignore_filenames __P((char **));
+static int bash_ignore_everything __P((char **));
+
+#if defined (BANG_HISTORY)
+static char *history_expand_line_internal __P((char *));
+static int history_expand_line __P((int, int));
+static int tcsh_magic_space __P((int, int));
+#endif /* BANG_HISTORY */
+#ifdef ALIAS
+static int alias_expand_line __P((int, int));
+#endif
+#if defined (BANG_HISTORY) && defined (ALIAS)
+static int history_and_alias_expand_line __P((int, int));
+#endif
+
+static int bash_forward_shellword __P((int, int));
+static int bash_backward_shellword __P((int, int));
+static int bash_kill_shellword __P((int, int));
+static int bash_backward_kill_shellword __P((int, int));
+
+/* Helper functions for Readline. */
+static char *restore_tilde __P((char *, char *));
+
+static char *bash_filename_rewrite_hook __P((char *, int));
+
+static void bash_directory_expansion __P((char **));
+static int bash_filename_stat_hook __P((char **));
+static int bash_command_name_stat_hook __P((char **));
+static int bash_directory_completion_hook __P((char **));
+static int filename_completion_ignore __P((char **));
+static int bash_push_line __P((void));
+
+static int executable_completion __P((const char *, int));
+
+static rl_icppfunc_t *save_directory_hook __P((void));
+static void restore_directory_hook __P((rl_icppfunc_t));
+
+static void cleanup_expansion_error __P((void));
+static void maybe_make_readline_line __P((char *));
+static void set_up_new_line __P((char *));
+
+static int check_redir __P((int));
+static char **attempt_shell_completion __P((const char *, int, int));
+static char *variable_completion_function __P((const char *, int));
+static char *hostname_completion_function __P((const char *, int));
+static char *command_subst_completion_function __P((const char *, int));
+
+static void build_history_completion_array __P((void));
+static char *history_completion_generator __P((const char *, int));
+static int dynamic_complete_history __P((int, int));
+static int bash_dabbrev_expand __P((int, int));
+
+static void initialize_hostname_list __P((void));
+static void add_host_name __P((char *));
+static void snarf_hosts_from_file __P((char *));
+static char **hostnames_matching __P((char *));
+
+static void _ignore_completion_names __P((char **, sh_ignore_func_t *));
+static int name_is_acceptable __P((const char *));
+static int test_for_directory __P((const char *));
+static int return_zero __P((const char *));
+
+static char *bash_dequote_filename __P((char *, int));
+static char *quote_word_break_chars __P((char *));
+static void set_filename_bstab __P((const char *));
+static char *bash_quote_filename __P((char *, int, char *));
+
+static int putx __P((int));
+static int bash_execute_unix_command __P((int, int));
+static void init_unix_command_map __P((void));
+static int isolate_sequence __P((char *, int, int, int *));
+
+static int set_saved_history __P((void));
+
+#if defined (ALIAS)
+static int posix_edit_macros __P((int, int));
+#endif
+
+static int bash_event_hook __P((void));
+
+#if defined (PROGRAMMABLE_COMPLETION)
+static int find_cmd_start __P((int));
+static int find_cmd_end __P((int));
+static char *find_cmd_name __P((int, int *, int *));
+static char *prog_complete_return __P((const char *, int));
+
+static char **prog_complete_matches;
+#endif
+
+/* Variables used here but defined in other files. */
+#if defined (BANG_HISTORY)
+extern int hist_verify;
+#endif
+
+extern int current_command_line_count, saved_command_line_count;
+extern int last_command_exit_value;
+extern int array_needs_making;
+extern int posixly_correct, no_symbolic_links;
+extern char *current_prompt_string, *ps1_prompt;
+extern STRING_INT_ALIST word_token_alist[];
+extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
+
+/* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual
+   completion functions which indicate what type of completion should be
+   done (at or before point) that can be bound to key sequences with
+   the readline library. */
+#define SPECIFIC_COMPLETION_FUNCTIONS
+
+#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
+static int bash_specific_completion __P((int, rl_compentry_func_t *));
+
+static int bash_complete_filename_internal __P((int));
+static int bash_complete_username_internal __P((int));
+static int bash_complete_hostname_internal __P((int));
+static int bash_complete_variable_internal __P((int));
+static int bash_complete_command_internal __P((int));
+
+static int bash_complete_filename __P((int, int));
+static int bash_possible_filename_completions __P((int, int));
+static int bash_complete_username __P((int, int));
+static int bash_possible_username_completions __P((int, int));
+static int bash_complete_hostname __P((int, int));
+static int bash_possible_hostname_completions __P((int, int));
+static int bash_complete_variable __P((int, int));
+static int bash_possible_variable_completions __P((int, int));
+static int bash_complete_command __P((int, int));
+static int bash_possible_command_completions __P((int, int));
+
+static char *glob_complete_word __P((const char *, int));
+static int bash_glob_completion_internal __P((int));
+static int bash_glob_complete_word __P((int, int));
+static int bash_glob_expand_word __P((int, int));
+static int bash_glob_list_expansions __P((int, int));
+
+#endif /* SPECIFIC_COMPLETION_FUNCTIONS */
+
+static int edit_and_execute_command __P((int, int, int, char *));
+#if defined (VI_MODE)
+static int vi_edit_and_execute_command __P((int, int));
+static int bash_vi_complete __P((int, int));
+#endif
+static int emacs_edit_and_execute_command __P((int, int));
+
+/* Non-zero once initalize_readline () has been called. */
+int bash_readline_initialized = 0;
+
+/* If non-zero, we do hostname completion, breaking words at `@' and
+   trying to complete the stuff after the `@' from our own internal
+   host list. */
+int perform_hostname_completion = 1;
+
+/* If non-zero, we don't do command completion on an empty line. */
+int no_empty_command_completion;
+
+/* Set FORCE_FIGNORE if you want to honor FIGNORE even if it ignores the
+   only possible matches.  Set to 0 if you want to match filenames if they
+   are the only possible matches, even if FIGNORE says to. */
+int force_fignore = 1;
+
+/* Perform spelling correction on directory names during word completion */
+int dircomplete_spelling = 0;
+
+/* Expand directory names during word/filename completion. */
+int dircomplete_expand = 0;
+int dircomplete_expand_relpath = 0;
+
+/* When non-zero, perform `normal' shell quoting on completed filenames
+   even when the completed name contains a directory name with a shell
+   variable referene, so dollar signs in a filename get quoted appropriately.
+   Set to zero to remove dollar sign (and braces or parens as needed) from
+   the set of characters that will be quoted. */
+int complete_fullquote = 1;
+
+static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
+static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
+/* )) */
+
+static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~";        /*}*/
+static char *custom_filename_quote_characters = 0;
+static char filename_bstab[256];
+
+static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
+
+static int dot_in_path = 0;
+
+/* Set to non-zero when dabbrev-expand is running */
+static int dabbrev_expand_active = 0;
+
+/* What kind of quoting is performed by bash_quote_filename:
+       COMPLETE_DQUOTE = double-quoting the filename
+       COMPLETE_SQUOTE = single_quoting the filename
+       COMPLETE_BSQUOTE = backslash-quoting special chars in the filename
+*/
+#define COMPLETE_DQUOTE  1
+#define COMPLETE_SQUOTE  2
+#define COMPLETE_BSQUOTE 3
+static int completion_quoting_style = COMPLETE_BSQUOTE;
+
+/* Flag values for the final argument to bash_default_completion */
+#define DEFCOMP_CMDPOS         1
+
+/* Change the readline VI-mode keymaps into or out of Posix.2 compliance.
+   Called when the shell is put into or out of `posix' mode. */
+void
+posix_readline_initialize (on_or_off)
+     int on_or_off;
+{
+  if (on_or_off)
+    rl_variable_bind ("comment-begin", "#");
+#if defined (VI_MODE)
+  rl_bind_key_in_map (CTRL ('I'), on_or_off ? rl_insert : rl_complete, vi_insertion_keymap);
+#endif
+}
+
+void
+reset_completer_word_break_chars ()
+{
+  rl_completer_word_break_characters = perform_hostname_completion ? savestring (bash_completer_word_break_characters) : savestring (bash_nohostname_word_break_characters);
+}
+
+/* When this function returns, rl_completer_word_break_characters points to
+   dynamically allocated memory. */
+int
+enable_hostname_completion (on_or_off)
+     int on_or_off;
+{
+  int old_value;
+  char *at, *nv, *nval;
+
+  old_value = perform_hostname_completion;
+
+  if (on_or_off)
+    {
+      perform_hostname_completion = 1;
+      rl_special_prefixes = "$@";
+    }
+  else
+    {
+      perform_hostname_completion = 0;
+      rl_special_prefixes = "$";
+    }
+
+  /* Now we need to figure out how to appropriately modify and assign
+     rl_completer_word_break_characters depending on whether we want
+     hostname completion on or off. */
+
+  /* If this is the first time this has been called
+     (bash_readline_initialized == 0), use the sames values as before, but
+     allocate new memory for rl_completer_word_break_characters. */
+
+  if (bash_readline_initialized == 0 &&
+      (rl_completer_word_break_characters == 0 || 
+       rl_completer_word_break_characters == rl_basic_word_break_characters))
+    {
+      if (on_or_off)
+       rl_completer_word_break_characters = savestring (bash_completer_word_break_characters);
+      else
+       rl_completer_word_break_characters = savestring (bash_nohostname_word_break_characters);
+    }
+  else
+    {
+      /* See if we have anything to do. */
+      at = strchr (rl_completer_word_break_characters, '@');
+      if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
+        return old_value;
+
+      /* We have something to do.  Do it. */
+      nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off);
+
+      if (on_or_off == 0)
+       {
+         /* Turn it off -- just remove `@' from word break chars.  We want
+            to remove all occurrences of `@' from the char list, so we loop
+            rather than just copy the rest of the list over AT. */
+         for (nv = nval, at = rl_completer_word_break_characters; *at; )
+           if (*at != '@')
+             *nv++ = *at++;
+           else
+             at++;
+         *nv = '\0';
+       }
+      else
+       {
+         nval[0] = '@';
+         strcpy (nval + 1, rl_completer_word_break_characters);
+        }
+
+      free (rl_completer_word_break_characters);
+      rl_completer_word_break_characters = nval;
+    }
+
+  return (old_value);
+}
+
+/* Called once from parse.y if we are going to use readline. */
+void
+initialize_readline ()
+{
+  rl_command_func_t *func;
+  char kseq[2];
+
+  if (bash_readline_initialized)
+    return;
+
+  rl_terminal_name = get_string_value ("TERM");
+  rl_instream = stdin;
+  rl_outstream = stderr;
+
+  /* Allow conditional parsing of the ~/.inputrc file. */
+  rl_readline_name = "Bash";
+
+  /* Add bindable names before calling rl_initialize so they may be
+     referenced in the various inputrc files. */
+  rl_add_defun ("shell-expand-line", shell_expand_line, -1);
+#ifdef BANG_HISTORY
+  rl_add_defun ("history-expand-line", history_expand_line, -1);
+  rl_add_defun ("magic-space", tcsh_magic_space, -1);
+#endif
+
+  rl_add_defun ("shell-forward-word", bash_forward_shellword, -1);
+  rl_add_defun ("shell-backward-word", bash_backward_shellword, -1);
+  rl_add_defun ("shell-kill-word", bash_kill_shellword, -1);
+  rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1);
+
+#ifdef ALIAS
+  rl_add_defun ("alias-expand-line", alias_expand_line, -1);
+#  ifdef BANG_HISTORY
+  rl_add_defun ("history-and-alias-expand-line", history_and_alias_expand_line, -1);
+#  endif
+#endif
+
+  /* Backwards compatibility. */
+  rl_add_defun ("insert-last-argument", rl_yank_last_arg, -1);
+
+  rl_add_defun ("operate-and-get-next", operate_and_get_next, -1);
+  rl_add_defun ("display-shell-version", display_shell_version, -1);
+  rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1);
+
+#if defined (BRACE_COMPLETION)
+  rl_add_defun ("complete-into-braces", bash_brace_completion, -1);
+#endif
+
+#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
+  rl_add_defun ("complete-filename", bash_complete_filename, -1);
+  rl_add_defun ("possible-filename-completions", bash_possible_filename_completions, -1);
+  rl_add_defun ("complete-username", bash_complete_username, -1);
+  rl_add_defun ("possible-username-completions", bash_possible_username_completions, -1);
+  rl_add_defun ("complete-hostname", bash_complete_hostname, -1);
+  rl_add_defun ("possible-hostname-completions", bash_possible_hostname_completions, -1);
+  rl_add_defun ("complete-variable", bash_complete_variable, -1);
+  rl_add_defun ("possible-variable-completions", bash_possible_variable_completions, -1);
+  rl_add_defun ("complete-command", bash_complete_command, -1);
+  rl_add_defun ("possible-command-completions", bash_possible_command_completions, -1);
+  rl_add_defun ("glob-complete-word", bash_glob_complete_word, -1);
+  rl_add_defun ("glob-expand-word", bash_glob_expand_word, -1);
+  rl_add_defun ("glob-list-expansions", bash_glob_list_expansions, -1);
+#endif
+
+  rl_add_defun ("dynamic-complete-history", dynamic_complete_history, -1);
+  rl_add_defun ("dabbrev-expand", bash_dabbrev_expand, -1);
+
+  /* Bind defaults before binding our custom shell keybindings. */
+  if (RL_ISSTATE(RL_STATE_INITIALIZED) == 0)
+    rl_initialize ();
+
+  /* Bind up our special shell functions. */
+  rl_bind_key_if_unbound_in_map (CTRL('E'), shell_expand_line, emacs_meta_keymap);
+
+#ifdef BANG_HISTORY
+  rl_bind_key_if_unbound_in_map ('^', history_expand_line, emacs_meta_keymap);
+#endif
+
+  rl_bind_key_if_unbound_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap);
+  rl_bind_key_if_unbound_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap);
+
+  /* In Bash, the user can switch editing modes with "set -o [vi emacs]",
+     so it is not necessary to allow C-M-j for context switching.  Turn
+     off this occasionally confusing behaviour. */
+  kseq[0] = CTRL('J');
+  kseq[1] = '\0';
+  func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL);
+  if (func == rl_vi_editing_mode)
+    rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap);
+  kseq[0] = CTRL('M');
+  func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL);
+  if (func == rl_vi_editing_mode)
+    rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap);
+#if defined (VI_MODE)
+  rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap);
+#endif
+
+#if defined (BRACE_COMPLETION)
+  rl_bind_key_if_unbound_in_map ('{', bash_brace_completion, emacs_meta_keymap); /*}*/
+#endif /* BRACE_COMPLETION */
+
+#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
+  rl_bind_key_if_unbound_in_map ('/', bash_complete_filename, emacs_meta_keymap);
+  rl_bind_key_if_unbound_in_map ('/', bash_possible_filename_completions, emacs_ctlx_keymap);
+
+  /* Have to jump through hoops here because there is a default binding for
+     M-~ (rl_tilde_expand) */
+  kseq[0] = '~';
+  kseq[1] = '\0';
+  func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL);
+  if (func == 0 || func == rl_tilde_expand)
+    rl_bind_keyseq_in_map (kseq, bash_complete_username, emacs_meta_keymap);
+
+  rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap);
+
+  rl_bind_key_if_unbound_in_map ('@', bash_complete_hostname, emacs_meta_keymap);
+  rl_bind_key_if_unbound_in_map ('@', bash_possible_hostname_completions, emacs_ctlx_keymap);
+
+  rl_bind_key_if_unbound_in_map ('$', bash_complete_variable, emacs_meta_keymap);
+  rl_bind_key_if_unbound_in_map ('$', bash_possible_variable_completions, emacs_ctlx_keymap);
+
+  rl_bind_key_if_unbound_in_map ('!', bash_complete_command, emacs_meta_keymap);
+  rl_bind_key_if_unbound_in_map ('!', bash_possible_command_completions, emacs_ctlx_keymap);
+
+  rl_bind_key_if_unbound_in_map ('g', bash_glob_complete_word, emacs_meta_keymap);
+  rl_bind_key_if_unbound_in_map ('*', bash_glob_expand_word, emacs_ctlx_keymap);
+  rl_bind_key_if_unbound_in_map ('g', bash_glob_list_expansions, emacs_ctlx_keymap);
+
+#endif /* SPECIFIC_COMPLETION_FUNCTIONS */
+
+  kseq[0] = TAB;
+  kseq[1] = '\0';
+  func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL);
+  if (func == 0 || func == rl_tab_insert)
+    rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap);
+
+  /* Tell the completer that we want a crack first. */
+  rl_attempted_completion_function = attempt_shell_completion;
+
+  /* Tell the completer that we might want to follow symbolic links or
+     do other expansion on directory names. */
+  set_directory_hook ();
+
+  rl_filename_rewrite_hook = bash_filename_rewrite_hook;
+
+  rl_filename_stat_hook = bash_filename_stat_hook;
+
+  /* Tell the filename completer we want a chance to ignore some names. */
+  rl_ignore_some_completions_function = filename_completion_ignore;
+
+  /* Bind C-xC-e to invoke emacs and run result as commands. */
+  rl_bind_key_if_unbound_in_map (CTRL ('E'), emacs_edit_and_execute_command, emacs_ctlx_keymap);
+#if defined (VI_MODE)
+  rl_bind_key_if_unbound_in_map ('v', vi_edit_and_execute_command, vi_movement_keymap);
+#  if defined (ALIAS)
+  rl_bind_key_if_unbound_in_map ('@', posix_edit_macros, vi_movement_keymap);
+#  endif
+
+  rl_bind_key_in_map ('\\', bash_vi_complete, vi_movement_keymap);
+  rl_bind_key_in_map ('*', bash_vi_complete, vi_movement_keymap);
+  rl_bind_key_in_map ('=', bash_vi_complete, vi_movement_keymap);
+#endif
+
+  rl_completer_quote_characters = "'\"";
+
+  /* This sets rl_completer_word_break_characters and rl_special_prefixes
+     to the appropriate values, depending on whether or not hostname
+     completion is enabled. */
+  enable_hostname_completion (perform_hostname_completion);
+
+  /* characters that need to be quoted when appearing in filenames. */
+  rl_filename_quote_characters = default_filename_quote_characters;
+  set_filename_bstab (rl_filename_quote_characters);
+
+  rl_filename_quoting_function = bash_quote_filename;
+  rl_filename_dequoting_function = bash_dequote_filename;
+  rl_char_is_quoted_p = char_is_quoted;
+
+#if 0
+  /* This is superfluous and makes it impossible to use tab completion in
+     vi mode even when explicitly binding it in ~/.inputrc.  sv_strict_posix()
+     should already have called posix_readline_initialize() when
+     posixly_correct was set. */
+  if (posixly_correct)
+    posix_readline_initialize (1);
+#endif
+
+  bash_readline_initialized = 1;
+}
+
+void
+bashline_reinitialize ()
+{
+  bash_readline_initialized = 0;
+}
+
+void
+bashline_set_event_hook ()
+{
+  rl_event_hook = bash_event_hook;
+}
+
+void
+bashline_reset_event_hook ()
+{
+  rl_event_hook = 0;
+}
+
+/* On Sun systems at least, rl_attempted_completion_function can end up
+   getting set to NULL, and rl_completion_entry_function set to do command
+   word completion if Bash is interrupted while trying to complete a command
+   word.  This just resets all the completion functions to the right thing.
+   It's called from throw_to_top_level(). */
+void
+bashline_reset ()
+{
+  tilde_initialize ();
+  rl_attempted_completion_function = attempt_shell_completion;
+  rl_completion_entry_function = NULL;
+  rl_ignore_some_completions_function = filename_completion_ignore;
+  rl_filename_quote_characters = default_filename_quote_characters;
+  set_filename_bstab (rl_filename_quote_characters);
+
+  set_directory_hook ();
+  rl_filename_stat_hook = bash_filename_stat_hook;
+}
+
+/* Contains the line to push into readline. */
+static char *push_to_readline = (char *)NULL;
+
+/* Push the contents of push_to_readline into the
+   readline buffer. */
+static int
+bash_push_line ()
+{
+  if (push_to_readline)
+    {
+      rl_insert_text (push_to_readline);
+      free (push_to_readline);
+      push_to_readline = (char *)NULL;
+      rl_startup_hook = old_rl_startup_hook;
+    }
+  return 0;
+}
+
+/* Call this to set the initial text for the next line to read
+   from readline. */
+int
+bash_re_edit (line)
+     char *line;
+{
+  FREE (push_to_readline);
+
+  push_to_readline = savestring (line);
+  old_rl_startup_hook = rl_startup_hook;
+  rl_startup_hook = bash_push_line;
+
+  return (0);
+}
+
+static int
+display_shell_version (count, c)
+     int count, c;
+{
+  rl_crlf ();
+  show_shell_version (0);
+  putc ('\r', rl_outstream);
+  fflush (rl_outstream);
+  rl_on_new_line ();
+  rl_redisplay ();
+  return 0;
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                          Readline Stuff                         */
+/*                                                                 */
+/* **************************************************************** */
+
+/* If the user requests hostname completion, then simply build a list
+   of hosts, and complete from that forever more, or at least until
+   HOSTFILE is unset. */
+
+/* THIS SHOULD BE A STRINGLIST. */
+/* The kept list of hostnames. */
+static char **hostname_list = (char **)NULL;
+
+/* The physical size of the above list. */
+static int hostname_list_size;
+
+/* The number of hostnames in the above list. */
+static int hostname_list_length;
+
+/* Whether or not HOSTNAME_LIST has been initialized. */
+int hostname_list_initialized = 0;
+
+/* Initialize the hostname completion table. */
+static void
+initialize_hostname_list ()
+{
+  char *temp;
+
+  temp = get_string_value ("HOSTFILE");
+  if (temp == 0)
+    temp = get_string_value ("hostname_completion_file");
+  if (temp == 0)
+    temp = DEFAULT_HOSTS_FILE;
+
+  snarf_hosts_from_file (temp);
+
+  if (hostname_list)
+    hostname_list_initialized++;
+}
+
+/* Add NAME to the list of hosts. */
+static void
+add_host_name (name)
+     char *name;
+{
+  if (hostname_list_length + 2 > hostname_list_size)
+    {
+      hostname_list_size = (hostname_list_size + 32) - (hostname_list_size % 32);
+      hostname_list = strvec_resize (hostname_list, hostname_list_size);
+    }
+
+  hostname_list[hostname_list_length++] = savestring (name);
+  hostname_list[hostname_list_length] = (char *)NULL;
+}
+
+#define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c))
+
+static void
+snarf_hosts_from_file (filename)
+     char *filename;
+{
+  FILE *file;
+  char *temp, buffer[256], name[256];
+  register int i, start;
+
+  file = fopen (filename, "r");
+  if (file == 0)
+    return;
+
+  while (temp = fgets (buffer, 255, file))
+    {
+      /* Skip to first character. */
+      for (i = 0; buffer[i] && cr_whitespace (buffer[i]); i++)
+       ;
+
+      /* If comment or blank line, ignore. */
+      if (buffer[i] == '\0' || buffer[i] == '#')
+       continue;
+
+      /* If `preprocessor' directive, do the include. */
+      if (strncmp (buffer + i, "$include ", 9) == 0)
+       {
+         char *incfile, *t;
+
+         /* Find start of filename. */
+         for (incfile = buffer + i + 9; *incfile && whitespace (*incfile); incfile++)
+           ;
+
+         /* Find end of filename. */
+         for (t = incfile; *t && cr_whitespace (*t) == 0; t++)
+           ;
+
+         *t = '\0';
+
+         snarf_hosts_from_file (incfile);
+         continue;
+       }
+
+      /* Skip internet address if present. */
+      if (DIGIT (buffer[i]))
+       for (; buffer[i] && cr_whitespace (buffer[i]) == 0; i++);
+
+      /* Gobble up names.  Each name is separated with whitespace. */
+      while (buffer[i])
+       {
+         for (; cr_whitespace (buffer[i]); i++)
+           ;
+         if (buffer[i] == '\0' || buffer[i] ==  '#')
+           break;
+
+         /* Isolate the current word. */
+         for (start = i; buffer[i] && cr_whitespace (buffer[i]) == 0; i++)
+           ;
+         if (i == start)
+           continue;
+         strncpy (name, buffer + start, i - start);
+         name[i - start] = '\0';
+         add_host_name (name);
+       }
+    }
+  fclose (file);
+}
+
+/* Return the hostname list. */
+char **
+get_hostname_list ()
+{
+  if (hostname_list_initialized == 0)
+    initialize_hostname_list ();
+  return (hostname_list);
+}
+
+void
+clear_hostname_list ()
+{
+  register int i;
+
+  if (hostname_list_initialized == 0)
+    return;
+  for (i = 0; i < hostname_list_length; i++)
+    free (hostname_list[i]);
+  hostname_list_length = hostname_list_initialized = 0;
+}
+
+/* Return a NULL terminated list of hostnames which begin with TEXT.
+   Initialize the hostname list the first time if neccessary.
+   The array is malloc ()'ed, but not the individual strings. */
+static char **
+hostnames_matching (text)
+     char *text;
+{
+  register int i, len, nmatch, rsize;
+  char **result;
+
+  if (hostname_list_initialized == 0)
+    initialize_hostname_list ();
+
+  if (hostname_list_initialized == 0)
+    return ((char **)NULL);
+
+  /* Special case.  If TEXT consists of nothing, then the whole list is
+     what is desired. */
+  if (*text == '\0')
+    {
+      result = strvec_create (1 + hostname_list_length);
+      for (i = 0; i < hostname_list_length; i++)
+       result[i] = hostname_list[i];
+      result[i] = (char *)NULL;
+      return (result);
+    }
+
+  /* Scan until found, or failure. */
+  len = strlen (text);
+  result = (char **)NULL;
+  for (i = nmatch = rsize = 0; i < hostname_list_length; i++)
+    {
+      if (STREQN (text, hostname_list[i], len) == 0)
+       continue;
+
+      /* OK, it matches.  Add it to the list. */
+      if (nmatch >= (rsize - 1))
+       {
+         rsize = (rsize + 16) - (rsize % 16);
+         result = strvec_resize (result, rsize);
+       }
+
+      result[nmatch++] = hostname_list[i];
+    }
+  if (nmatch)
+    result[nmatch] = (char *)NULL;
+  return (result);
+}
+
+/* The equivalent of the Korn shell C-o operate-and-get-next-history-line
+   editing command. */
+static int saved_history_line_to_use = -1;
+static int last_saved_history_line = -1;
+
+#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries)
+
+static int
+set_saved_history ()
+{
+  /* XXX - compensate for assumption that history was `shuffled' if it was
+     actually not. */
+  if (HISTORY_FULL () &&
+      hist_last_line_added == 0 &&
+      saved_history_line_to_use < history_length - 1)
+    saved_history_line_to_use++;
+
+  if (saved_history_line_to_use >= 0)
+    {
+     rl_get_previous_history (history_length - saved_history_line_to_use, 0);
+     last_saved_history_line = saved_history_line_to_use;
+    }
+  saved_history_line_to_use = -1;
+  rl_startup_hook = old_rl_startup_hook;
+  return (0);
+}
+
+static int
+operate_and_get_next (count, c)
+     int count, c;
+{
+  int where;
+
+  /* Accept the current line. */
+  rl_newline (1, c);
+
+  /* Find the current line, and find the next line to use. */
+  where = where_history ();
+
+  if (HISTORY_FULL () || (where >= history_length - 1))
+    saved_history_line_to_use = where;
+  else
+    saved_history_line_to_use = where + 1;
+
+  old_rl_startup_hook = rl_startup_hook;
+  rl_startup_hook = set_saved_history;
+
+  return 0;
+}
+
+/* This vi mode command causes VI_EDIT_COMMAND to be run on the current
+   command being entered (if no explicit argument is given), otherwise on
+   a command from the history file. */
+
+#define VI_EDIT_COMMAND                "fc -e \"${VISUAL:-${EDITOR:-vi}}\""
+#define EMACS_EDIT_COMMAND     "fc -e \"${VISUAL:-${EDITOR:-emacs}}\""
+#define POSIX_VI_EDIT_COMMAND  "fc -e vi"
+
+static int
+edit_and_execute_command (count, c, editing_mode, edit_command)
+     int count, c, editing_mode;
+     char *edit_command;
+{
+  char *command, *metaval;
+  int r, rrs, metaflag;
+  sh_parser_state_t ps;
+
+  rrs = rl_readline_state;
+  saved_command_line_count = current_command_line_count;
+
+  /* Accept the current line. */
+  rl_newline (1, c);
+
+  if (rl_explicit_arg)
+    {
+      command = (char *)xmalloc (strlen (edit_command) + 8);
+      sprintf (command, "%s %d", edit_command, count);
+    }
+  else
+    {
+      /* Take the command we were just editing, add it to the history file,
+        then call fc to operate on it.  We have to add a dummy command to
+        the end of the history because fc ignores the last command (assumes
+        it's supposed to deal with the command before the `fc'). */
+      /* This breaks down when using command-oriented history and are not
+        finished with the command, so we should not ignore the last command */
+      using_history ();
+      bash_add_history (rl_line_buffer);
+      bash_add_history ("");
+      history_lines_this_session++;
+      using_history ();
+      command = savestring (edit_command);
+    }
+
+  metaval = rl_variable_value ("input-meta");
+  metaflag = RL_BOOLEAN_VARIABLE_VALUE (metaval);
+  
+  /* Now, POSIX.1-2001 and SUSv3 say that the commands executed from the
+     temporary file should be placed into the history.  We don't do that
+     yet. */
+  if (rl_deprep_term_function)
+    (*rl_deprep_term_function) ();
+  save_parser_state (&ps);
+  r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST);
+  restore_parser_state (&ps);
+  if (rl_prep_term_function)
+    (*rl_prep_term_function) (metaflag);
+
+  current_command_line_count = saved_command_line_count;
+
+  /* Now erase the contents of the current line and undo the effects of the
+     rl_accept_line() above.  We don't even want to make the text we just
+     executed available for undoing. */
+  rl_line_buffer[0] = '\0';    /* XXX */
+  rl_point = rl_end = 0;
+  rl_done = 0;
+  rl_readline_state = rrs;
+
+  rl_forced_update_display ();
+
+  return r;
+}
+
+#if defined (VI_MODE)
+static int
+vi_edit_and_execute_command (count, c)
+     int count, c;
+{
+  if (posixly_correct)
+    return (edit_and_execute_command (count, c, VI_EDITING_MODE, POSIX_VI_EDIT_COMMAND));
+  else
+    return (edit_and_execute_command (count, c, VI_EDITING_MODE, VI_EDIT_COMMAND));
+}
+#endif /* VI_MODE */
+
+static int
+emacs_edit_and_execute_command (count, c)
+     int count, c;
+{
+  return (edit_and_execute_command (count, c, EMACS_EDITING_MODE, EMACS_EDIT_COMMAND));
+}
+
+#if defined (ALIAS)
+static int
+posix_edit_macros (count, key)
+     int count, key;
+{
+  int c;
+  char alias_name[3], *alias_value, *macro;
+
+  c = rl_read_key ();
+  alias_name[0] = '_';
+  alias_name[1] = c;
+  alias_name[2] = '\0';
+
+  alias_value = get_alias_value (alias_name);
+  if (alias_value && *alias_value)
+    {
+      macro = savestring (alias_value);
+      rl_push_macro_input (macro);
+    }
+  return 0;
+}
+#endif
+
+/* Bindable commands that move `shell-words': that is, sequences of
+   non-unquoted-metacharacters. */
+
+#define WORDDELIM(c)   (shellmeta(c) || shellblank(c))
+
+static int
+bash_forward_shellword (count, key)
+     int count, key;
+{
+  size_t slen;
+  int sindex, c, p;
+  DECLARE_MBSTATE;
+
+  if (count < 0)
+    return (bash_backward_shellword (-count, key));
+
+  /* The tricky part of this is deciding whether or not the first character
+     we're on is an unquoted metacharacter.  Not completely handled yet. */
+  /* XXX - need to test this stuff with backslash-escaped shell
+     metacharacters and unclosed single- and double-quoted strings. */
+
+  p = rl_point;
+  slen = rl_end;
+
+  while (count)
+    {
+      if (p == rl_end)
+       {
+         rl_point = rl_end;
+         return 0;
+       }
+
+      /* Are we in a quoted string?  If we are, move to the end of the quoted
+         string and continue the outer loop. We only want quoted strings, not
+         backslash-escaped characters, but char_is_quoted doesn't
+         differentiate. */
+      if (char_is_quoted (rl_line_buffer, p) && p > 0 && rl_line_buffer[p-1] != '\\')
+       {
+         do
+           ADVANCE_CHAR (rl_line_buffer, slen, p);
+         while (p < rl_end && char_is_quoted (rl_line_buffer, p));
+         count--;
+         continue;
+       }
+
+      /* Rest of code assumes we are not in a quoted string. */
+      /* Move forward until we hit a non-metacharacter. */
+      while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c))
+       {
+         switch (c)
+           {
+           default:
+             ADVANCE_CHAR (rl_line_buffer, slen, p);
+             continue;         /* straight back to loop, don't increment p */
+           case '\\':
+             if (p < rl_end && rl_line_buffer[p])
+               ADVANCE_CHAR (rl_line_buffer, slen, p);
+             break;
+           case '\'':
+             p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP);
+             break;
+           case '"':
+             p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP);
+             break;
+           }
+
+         if (p < rl_end)
+           p++;
+       }
+
+      if (rl_line_buffer[p] == 0 || p == rl_end)
+        {
+         rl_point = rl_end;
+         rl_ding ();
+         return 0;
+        }
+       
+      /* Now move forward until we hit a non-quoted metacharacter or EOL */
+      while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c) == 0)
+       {
+         switch (c)
+           {
+           default:
+             ADVANCE_CHAR (rl_line_buffer, slen, p);
+             continue;         /* straight back to loop, don't increment p */
+           case '\\':
+             if (p < rl_end && rl_line_buffer[p])
+               ADVANCE_CHAR (rl_line_buffer, slen, p);
+             break;
+           case '\'':
+             p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP);
+             break;
+           case '"':
+             p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP);
+             break;
+           }
+
+         if (p < rl_end)
+           p++;
+       }
+
+      if (p == rl_end || rl_line_buffer[p] == 0)
+       {
+         rl_point = rl_end;
+         return (0);
+       }
+
+      count--;      
+    }
+
+  rl_point = p;
+  return (0);
+}
+
+static int
+bash_backward_shellword (count, key)
+     int count, key;
+{
+  size_t slen;
+  int sindex, c, p;
+  DECLARE_MBSTATE;
+  
+  if (count < 0)
+    return (bash_forward_shellword (-count, key));
+
+  p = rl_point;
+  slen = rl_end;
+  
+  while (count)
+    {
+      if (p == 0)
+       {
+         rl_point = 0;
+         return 0;
+       }
+
+      /* Move backward until we hit a non-metacharacter. */
+      while (p > 0)
+       {
+         c = rl_line_buffer[p];
+         if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0)
+           BACKUP_CHAR (rl_line_buffer, slen, p);
+         break;
+       }
+
+      if (p == 0)
+       {
+         rl_point = 0;
+         return 0;
+       }
+
+      /* Now move backward until we hit a metacharacter or BOL. */
+      while (p > 0)
+       {
+         c = rl_line_buffer[p];
+         if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0)
+           break;
+         BACKUP_CHAR (rl_line_buffer, slen, p);
+       }
+
+      count--;
+    }
+
+  rl_point = p;
+  return 0;
+}
+
+static int
+bash_kill_shellword (count, key)
+     int count, key;
+{
+  int p;
+
+  if (count < 0)
+    return (bash_backward_kill_shellword (-count, key));
+
+  p = rl_point;
+  bash_forward_shellword (count, key);
+
+  if (rl_point != p)
+    rl_kill_text (p, rl_point);
+
+  rl_point = p;
+  if (rl_editing_mode == 1)    /* 1 == emacs_mode */
+    rl_mark = rl_point;
+
+  return 0;
+}
+
+static int
+bash_backward_kill_shellword (count, key)
+     int count, key;
+{
+  int p;
+
+  if (count < 0)
+    return (bash_kill_shellword (-count, key));
+
+  p = rl_point;
+  bash_backward_shellword (count, key);
+
+  if (rl_point != p)
+    rl_kill_text (p, rl_point);
+
+  if (rl_editing_mode == 1)    /* 1 == emacs_mode */
+    rl_mark = rl_point;
+
+  return 0;
+}
+
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     How To Do Shell Completion                  */
+/*                                                                 */
+/* **************************************************************** */
+
+#define COMMAND_SEPARATORS ";|&{(`"
+/* )} */ 
+#define COMMAND_SEPARATORS_PLUS_WS ";|&{(` \t"
+/* )} */ 
+
+/* check for redirections and other character combinations that are not
+   command separators */
+static int
+check_redir (ti)
+     int ti;
+{
+  register int this_char, prev_char;
+
+  /* Handle the two character tokens `>&', `<&', and `>|'.
+     We are not in a command position after one of these. */
+  this_char = rl_line_buffer[ti];
+  prev_char = rl_line_buffer[ti - 1];
+
+  if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) ||
+      (this_char == '|' && prev_char == '>'))
+    return (1);
+  else if (this_char == '{' && prev_char == '$') /*}*/
+    return (1);
+#if 0  /* Not yet */
+  else if (this_char == '(' && prev_char == '$') /*)*/
+    return (1);
+  else if (this_char == '(' && prev_char == '<') /*)*/
+    return (1);
+#if defined (EXTENDED_GLOB)
+  else if (extended_glob && this_char == '(' && prev_char == '!') /*)*/
+    return (1);
+#endif
+#endif
+  else if (char_is_quoted (rl_line_buffer, ti))
+    return (1);
+  return (0);
+}
+
+#if defined (PROGRAMMABLE_COMPLETION)
+/*
+ * XXX - because of the <= start test, and setting os = s+1, this can
+ * potentially return os > start.  This is probably not what we want to
+ * happen, but fix later after 2.05a-release.
+ */
+static int
+find_cmd_start (start)
+     int start;
+{
+  register int s, os;
+
+  os = 0;
+  /* Flags == SD_NOJMP only because we want to skip over command substitutions
+     in assignment statements.  Have to test whether this affects `standalone'
+     command substitutions as individual words. */
+  while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP/*|SD_NOSKIPCMD*/)) <= start) &&
+        rl_line_buffer[s])
+    os = s+1;
+  return os;
+}
+
+static int
+find_cmd_end (end)
+     int end;
+{
+  register int e;
+
+  e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS, SD_NOJMP);
+  return e;
+}
+
+static char *
+find_cmd_name (start, sp, ep)
+     int start;
+     int *sp, *ep;
+{
+  char *name;
+  register int s, e;
+
+  for (s = start; whitespace (rl_line_buffer[s]); s++)
+    ;
+
+  /* skip until a shell break character */
+  e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n", SD_NOJMP);
+
+  name = substring (rl_line_buffer, s, e);
+
+  if (sp)
+    *sp = s;
+  if (ep)
+    *ep = e;
+
+  return (name);
+}
+
+static char *
+prog_complete_return (text, matchnum)
+     const char *text;
+     int matchnum;
+{
+  static int ind;
+
+  if (matchnum == 0)
+    ind = 0;
+
+  if (prog_complete_matches == 0 || prog_complete_matches[ind] == 0)
+    return (char *)NULL;
+  return (prog_complete_matches[ind++]);
+}
+
+#endif /* PROGRAMMABLE_COMPLETION */
+
+/* Do some completion on TEXT.  The indices of TEXT in RL_LINE_BUFFER are
+   at START and END.  Return an array of matches, or NULL if none. */
+static char **
+attempt_shell_completion (text, start, end)
+     const char *text;
+     int start, end;
+{
+  int in_command_position, ti, saveti, qc, dflags;
+  char **matches, *command_separator_chars;
+
+  command_separator_chars = COMMAND_SEPARATORS;
+  matches = (char **)NULL;
+  rl_ignore_some_completions_function = filename_completion_ignore;
+
+  rl_filename_quote_characters = default_filename_quote_characters;
+  set_filename_bstab (rl_filename_quote_characters);
+  set_directory_hook ();
+  rl_filename_stat_hook = bash_filename_stat_hook;
+
+  /* Determine if this could be a command word.  It is if it appears at
+     the start of the line (ignoring preceding whitespace), or if it
+     appears after a character that separates commands.  It cannot be a
+     command word if we aren't at the top-level prompt. */
+  ti = start - 1;
+  saveti = qc = -1;
+
+  while ((ti > -1) && (whitespace (rl_line_buffer[ti])))
+    ti--;
+
+#if 1
+  /* If this is an open quote, maybe we're trying to complete a quoted
+     command name. */
+  if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\''))
+    {
+      qc = rl_line_buffer[ti];
+      saveti = ti--;
+      while (ti > -1 && (whitespace (rl_line_buffer[ti])))
+       ti--;
+    }
+#endif
+      
+  in_command_position = 0;
+  if (ti < 0)
+    {
+      /* Only do command completion at the start of a line when we
+        are prompting at the top level. */
+      if (current_prompt_string == ps1_prompt)
+       in_command_position++;
+      else if (parser_in_command_position ())
+       in_command_position++;
+    }
+  else if (member (rl_line_buffer[ti], command_separator_chars))
+    {
+      in_command_position++;
+
+      if (check_redir (ti) == 1)
+       in_command_position = 0;
+    }
+  else
+    {
+      /* This still could be in command position.  It is possible
+        that all of the previous words on the line are variable
+        assignments. */
+    }
+
+  /* Check that we haven't incorrectly flagged a closed command substitution
+     as indicating we're in a command position. */
+  if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' &&
+       *text != '`' && unclosed_pair (rl_line_buffer, end, "`") == 0)
+    in_command_position = 0;
+
+  /* Special handling for command substitution.  If *TEXT is a backquote,
+     it can be the start or end of an old-style command substitution, or
+     unmatched.  If it's unmatched, both calls to unclosed_pair will
+     succeed.  Don't bother if readline found a single quote and we are
+     completing on the substring.  */
+  if (*text == '`' && rl_completion_quote_character != '\'' &&
+       (in_command_position || (unclosed_pair (rl_line_buffer, start, "`") &&
+                                unclosed_pair (rl_line_buffer, end, "`"))))
+    matches = rl_completion_matches (text, command_subst_completion_function);
+
+#if defined (PROGRAMMABLE_COMPLETION)
+  /* Attempt programmable completion. */
+  if (matches == 0 && (in_command_position == 0 || text[0] == '\0') &&
+      prog_completion_enabled && (progcomp_size () > 0) &&
+      current_prompt_string == ps1_prompt)
+    {
+      int s, e, s1, e1, os, foundcs;
+      char *n;
+
+      /* XXX - don't free the members */
+      if (prog_complete_matches)
+       free (prog_complete_matches);
+      prog_complete_matches = (char **)NULL;
+
+      os = start;
+      n = 0;
+      s = find_cmd_start (os);
+      e = find_cmd_end (end);
+      do
+       {
+         /* Skip over assignment statements preceding a command name.  If we
+            don't find a command name at all, we can perform command name
+            completion.  If we find a partial command name, we should perform
+            command name completion on it. */
+         FREE (n);
+         n = find_cmd_name (s, &s1, &e1);
+         s = e1 + 1;
+       }
+      while (assignment (n, 0));
+      s = s1;          /* reset to index where name begins */
+
+      if (start == 0 && end == 0 && e != 0 && text[0] == '\0') /* beginning of non-empty line */
+        foundcs = 0;
+      else if (start == end && start == s1 && e != 0 && e1 > end)      /* beginning of command name, leading whitespace */
+       foundcs = 0;
+      else if (e == 0 && e == s && text[0] == '\0')    /* beginning of empty line */
+        prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs);
+      else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start]))
+        foundcs = 0;           /* whitespace before command name */
+      else if (e > s && assignment (n, 0) == 0)
+       prog_complete_matches = programmable_completions (n, text, s, e, &foundcs);
+      else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0)
+        {
+          foundcs = 0; /* empty command name following assignments */
+          in_command_position = 1;
+        }
+      else if (s == start && e == end && STREQ (n, text) && start > 0)
+        {
+          foundcs = 0; /* partial command name following assignments */
+          in_command_position = 1;
+        }
+      else
+       foundcs = 0;
+      FREE (n);
+      /* XXX - if we found a COMPSPEC for the command, just return whatever
+        the programmable completion code returns, and disable the default
+        filename completion that readline will do unless the COPT_DEFAULT
+        option has been set with the `-o default' option to complete or
+        compopt. */
+      if (foundcs)
+       {
+         pcomp_set_readline_variables (foundcs, 1);
+         /* Turn what the programmable completion code returns into what
+            readline wants.  I should have made compute_lcd_of_matches
+            external... */
+         matches = rl_completion_matches (text, prog_complete_return);
+         if ((foundcs & COPT_DEFAULT) == 0)
+           rl_attempted_completion_over = 1;   /* no default */
+         if (matches || ((foundcs & COPT_BASHDEFAULT) == 0))
+           return (matches);
+       }
+    }
+#endif
+
+  if (matches == 0)
+    {
+      dflags = 0;
+      if (in_command_position)
+       dflags |= DEFCOMP_CMDPOS;
+      matches = bash_default_completion (text, start, end, qc, dflags);
+    }
+
+  return matches;
+}
+
+char **
+bash_default_completion (text, start, end, qc, compflags)
+     const char *text;
+     int start, end, qc, compflags;
+{
+  char **matches, *t;
+
+  matches = (char **)NULL;
+
+  /* New posix-style command substitution or variable name? */
+  if (!matches && *text == '$')
+    {
+      if (qc != '\'' && text[1] == '(') /* ) */
+       matches = rl_completion_matches (text, command_subst_completion_function);
+      else
+       {
+         matches = rl_completion_matches (text, variable_completion_function);
+         if (matches && matches[0] && matches[1] == 0)
+           {
+             t = savestring (matches[0]);
+             bash_filename_stat_hook (&t);
+             /* doesn't use test_for_directory because that performs tilde
+                expansion */
+             if (file_isdir (t))
+               rl_completion_append_character = '/';
+             free (t);
+           }
+       }
+    }
+
+  /* If the word starts in `~', and there is no slash in the word, then
+     try completing this word as a username. */
+  if (matches == 0 && *text == '~' && mbschr (text, '/') == 0)
+    matches = rl_completion_matches (text, rl_username_completion_function);
+
+  /* Another one.  Why not?  If the word starts in '@', then look through
+     the world of known hostnames for completion first. */
+  if (matches == 0 && perform_hostname_completion && *text == '@')
+    matches = rl_completion_matches (text, hostname_completion_function);
+
+  /* And last, (but not least) if this word is in a command position, then
+     complete over possible command names, including aliases, functions,
+     and command names. */
+  if (matches == 0 && (compflags & DEFCOMP_CMDPOS))
+    {
+      /* If END == START and text[0] == 0, we are trying to complete an empty
+        command word. */
+      if (no_empty_command_completion && end == start && text[0] == '\0')
+       {
+         matches = (char **)NULL;
+         rl_ignore_some_completions_function = bash_ignore_everything;
+       }
+      else
+       {
+#define CMD_IS_DIR(x)  (absolute_pathname(x) == 0 && absolute_program(x) == 0 && *(x) != '~' && test_for_directory (x))
+
+         dot_in_path = 0;
+         matches = rl_completion_matches (text, command_word_completion_function);
+
+         /* If we are attempting command completion and nothing matches, we
+            do not want readline to perform filename completion for us.  We
+            still want to be able to complete partial pathnames, so set the
+            completion ignore function to something which will remove
+            filenames and leave directories in the match list. */
+         if (matches == (char **)NULL)
+           rl_ignore_some_completions_function = bash_ignore_filenames;
+         else if (matches[1] == 0 && CMD_IS_DIR(matches[0]) && dot_in_path == 0)
+           /* If we found a single match, without looking in the current
+              directory (because it's not in $PATH), but the found name is
+              also a command in the current directory, suppress appending any
+              terminating character, since it's ambiguous. */
+           {
+             rl_completion_suppress_append = 1;
+             rl_filename_completion_desired = 0;
+           }
+         else if (matches[0] && matches[1] && STREQ (matches[0], matches[1]) && CMD_IS_DIR (matches[0]))
+           /* There are multiple instances of the same match (duplicate
+              completions haven't yet been removed).  In this case, all of
+              the matches will be the same, and the duplicate removal code
+              will distill them all down to one.  We turn on
+              rl_completion_suppress_append for the same reason as above.
+              Remember: we only care if there's eventually a single unique
+              completion.  If there are multiple completions this won't
+              make a difference and the problem won't occur. */
+           {
+             rl_completion_suppress_append = 1;
+             rl_filename_completion_desired = 0;
+           }
+       }
+    }
+
+  /* This could be a globbing pattern, so try to expand it using pathname
+     expansion. */
+  if (!matches && glob_pattern_p (text))
+    {
+      matches = rl_completion_matches (text, glob_complete_word);
+      /* A glob expression that matches more than one filename is problematic.
+        If we match more than one filename, punt. */
+      if (matches && matches[1] && rl_completion_type == TAB)
+       {
+         strvec_dispose (matches);
+         matches = (char **)0;
+       }
+    }
+
+  return (matches);
+}
+
+static int
+bash_command_name_stat_hook (name)
+     char **name;
+{
+  char *cname, *result;
+
+  cname = *name;
+  /* XXX - we could do something here with converting aliases, builtins,
+     and functions into something that came out as executable, but we don't. */
+  result = search_for_command (cname, 0);
+  if (result)
+    {
+      *name = result;
+      return 1;
+    }
+  return 0;
+}
+
+static int
+executable_completion (filename, searching_path)
+     const char *filename;
+     int searching_path;
+{
+  char *f;
+  int r;
+
+  f = savestring (filename);
+  bash_directory_completion_hook (&f);
+  
+  r = searching_path ? executable_file (f) : executable_or_directory (f);
+  free (f);
+  return r;
+}
+
+/* This is the function to call when the word to complete is in a position
+   where a command word can be found.  It grovels $PATH, looking for commands
+   that match.  It also scans aliases, function names, and the shell_builtin
+   table. */
+char *
+command_word_completion_function (hint_text, state)
+     const char *hint_text;
+     int state;
+{
+  static char *hint = (char *)NULL;
+  static char *path = (char *)NULL;
+  static char *val = (char *)NULL;
+  static char *filename_hint = (char *)NULL;
+  static char *dequoted_hint = (char *)NULL;
+  static char *directory_part = (char *)NULL;
+  static char **glob_matches = (char **)NULL;
+  static int path_index, hint_len, dequoted_len, istate, igncase;
+  static int mapping_over, local_index, searching_path, hint_is_dir;
+  static int old_glob_ignore_case, globpat;
+  static SHELL_VAR **varlist = (SHELL_VAR **)NULL;
+#if defined (ALIAS)
+  static alias_t **alias_list = (alias_t **)NULL;
+#endif /* ALIAS */
+  char *temp, *cval;
+
+  /* We have to map over the possibilities for command words.  If we have
+     no state, then make one just for that purpose. */
+  if (state == 0)
+    {
+      rl_filename_stat_hook = bash_command_name_stat_hook;
+
+      if (dequoted_hint && dequoted_hint != hint)
+       free (dequoted_hint);
+      if (hint)
+       free (hint);
+
+      mapping_over = searching_path = 0;
+      hint_is_dir = CMD_IS_DIR (hint_text);
+      val = (char *)NULL;
+
+      temp = rl_variable_value ("completion-ignore-case");
+      igncase = RL_BOOLEAN_VARIABLE_VALUE (temp);
+
+      if (glob_matches)
+       {
+         free (glob_matches);
+         glob_matches = (char **)NULL;
+       }
+
+      globpat = glob_pattern_p (hint_text);
+
+      /* If this is an absolute program name, do not check it against
+        aliases, reserved words, functions or builtins.  We must check
+        whether or not it is unique, and, if so, whether that filename
+        is executable. */
+      if (globpat || absolute_program (hint_text))
+       {
+         /* Perform tilde expansion on what's passed, so we don't end up
+            passing filenames with tildes directly to stat(). */
+         if (*hint_text == '~')
+           {
+             hint = bash_tilde_expand (hint_text, 0);
+             directory_part = savestring (hint_text);
+             temp = strchr (directory_part, '/');
+             if (temp)
+               *temp = 0;
+             else
+               {
+                 free (directory_part);
+                 directory_part = (char *)NULL;
+               }
+           }
+         else
+           hint = savestring (hint_text);
+
+         dequoted_hint = hint;
+         /* If readline's completer found a quote character somewhere, but
+            didn't set the quote character, there must have been a quote
+            character embedded in the filename.  It can't be at the start of
+            the filename, so we need to dequote the filename before we look
+            in the file system for it. */
+         if (rl_completion_found_quote && rl_completion_quote_character == 0)
+           {
+             dequoted_hint = bash_dequote_filename (hint, 0);
+             free (hint);
+             hint = dequoted_hint;
+           }
+         dequoted_len = hint_len = strlen (hint);
+
+         if (filename_hint)
+           free (filename_hint);
+
+         filename_hint = savestring (hint);
+
+         istate = 0;
+
+         if (globpat)
+           {
+             mapping_over = 5;
+             goto globword;
+           }
+         else
+           {
+            if (dircomplete_expand && path_dot_or_dotdot (filename_hint))
+               {
+                 dircomplete_expand = 0;
+                 set_directory_hook ();
+                 dircomplete_expand = 1;
+               }
+             mapping_over = 4;
+             goto inner;
+           }
+       }
+
+      dequoted_hint = hint = savestring (hint_text);
+      dequoted_len = hint_len = strlen (hint);
+
+      if (rl_completion_found_quote && rl_completion_quote_character == 0)
+       {
+         dequoted_hint = bash_dequote_filename (hint, 0);
+         dequoted_len = strlen (dequoted_hint);
+       }
+      
+      path = get_string_value ("PATH");
+      path_index = dot_in_path = 0;
+
+      /* Initialize the variables for each type of command word. */
+      local_index = 0;
+
+      if (varlist)
+       free (varlist);
+
+      varlist = all_visible_functions ();
+
+#if defined (ALIAS)
+      if (alias_list)
+       free (alias_list);
+
+      alias_list = all_aliases ();
+#endif /* ALIAS */
+    }
+
+  /* mapping_over says what we are currently hacking.  Note that every case
+     in this list must fall through when there are no more possibilities. */
+
+  switch (mapping_over)
+    {
+    case 0:                    /* Aliases come first. */
+#if defined (ALIAS)
+      while (alias_list && alias_list[local_index])
+       {
+         register char *alias;
+
+         alias = alias_list[local_index++]->name;
+
+         if (STREQN (alias, hint, hint_len))
+           return (savestring (alias));
+       }
+#endif /* ALIAS */
+      local_index = 0;
+      mapping_over++;
+
+    case 1:                    /* Then shell reserved words. */
+      {
+       while (word_token_alist[local_index].word)
+         {
+           register char *reserved_word;
+
+           reserved_word = word_token_alist[local_index++].word;
+
+           if (STREQN (reserved_word, hint, hint_len))
+             return (savestring (reserved_word));
+         }
+       local_index = 0;
+       mapping_over++;
+      }
+
+    case 2:                    /* Then function names. */
+      while (varlist && varlist[local_index])
+       {
+         register char *varname;
+
+         varname = varlist[local_index++]->name;
+
+         if (STREQN (varname, hint, hint_len))
+           return (savestring (varname));
+       }
+      local_index = 0;
+      mapping_over++;
+
+    case 3:                    /* Then shell builtins. */
+      for (; local_index < num_shell_builtins; local_index++)
+       {
+         /* Ignore it if it doesn't have a function pointer or if it
+            is not currently enabled. */
+         if (!shell_builtins[local_index].function ||
+             (shell_builtins[local_index].flags & BUILTIN_ENABLED) == 0)
+           continue;
+
+         if (STREQN (shell_builtins[local_index].name, hint, hint_len))
+           {
+             int i = local_index++;
+
+             return (savestring (shell_builtins[i].name));
+           }
+       }
+      local_index = 0;
+      mapping_over++;
+    }
+
+globword:
+  /* Limited support for completing command words with globbing chars.  Only
+     a single match (multiple matches that end up reducing the number of
+     characters in the common prefix are bad) will ever be returned on
+     regular completion. */
+  if (globpat)
+    {
+      if (state == 0)
+       {
+         glob_ignore_case = igncase;
+         glob_matches = shell_glob_filename (hint);
+         glob_ignore_case = old_glob_ignore_case;
+
+         if (GLOB_FAILED (glob_matches) || glob_matches == 0)
+           {
+             glob_matches = (char **)NULL;
+             return ((char *)NULL);
+           }
+
+         local_index = 0;
+               
+         if (glob_matches[1] && rl_completion_type == TAB)     /* multiple matches are bad */
+           return ((char *)NULL);
+       }
+
+      while (val = glob_matches[local_index++])
+        {
+         if (executable_or_directory (val))
+           {
+             if (*hint_text == '~' && directory_part)
+               {
+                 temp = restore_tilde (val, directory_part);
+                 free (val);
+                 val = temp;
+               }
+             return (val);
+           }
+         free (val);
+        }
+
+      glob_ignore_case = old_glob_ignore_case;
+      return ((char *)NULL);
+    }
+
+  /* If the text passed is a directory in the current directory, return it
+     as a possible match.  Executables in directories in the current
+     directory can be specified using relative pathnames and successfully
+     executed even when `.' is not in $PATH. */
+  if (hint_is_dir)
+    {
+      hint_is_dir = 0; /* only return the hint text once */
+      return (savestring (hint_text));
+    }
+    
+  /* Repeatedly call filename_completion_function while we have
+     members of PATH left.  Question:  should we stat each file?
+     Answer: we call executable_file () on each file. */
+ outer:
+
+  istate = (val != (char *)NULL);
+
+  if (istate == 0)
+    {
+      char *current_path;
+
+      /* Get the next directory from the path.  If there is none, then we
+        are all done. */
+      if (path == 0 || path[path_index] == 0 ||
+         (current_path = extract_colon_unit (path, &path_index)) == 0)
+       return ((char *)NULL);
+
+      searching_path = 1;
+      if (*current_path == 0)
+       {
+         free (current_path);
+         current_path = savestring (".");
+       }
+
+      if (*current_path == '~')
+       {
+         char *t;
+
+         t = bash_tilde_expand (current_path, 0);
+         free (current_path);
+         current_path = t;
+       }
+
+      if (current_path[0] == '.' && current_path[1] == '\0')
+       dot_in_path = 1;
+
+      if (filename_hint)
+       free (filename_hint);
+
+      filename_hint = sh_makepath (current_path, hint, 0);
+      free (current_path);             /* XXX */
+    }
+
+ inner:
+  val = rl_filename_completion_function (filename_hint, istate);
+  if (mapping_over == 4 && dircomplete_expand)
+    set_directory_hook ();
+
+  istate = 1;
+
+  if (val == 0)
+    {
+      /* If the hint text is an absolute program, then don't bother
+        searching through PATH. */
+      if (absolute_program (hint))
+       return ((char *)NULL);
+
+      goto outer;
+    }
+  else
+    {
+      int match, freetemp;
+
+      if (absolute_program (hint))
+       {
+         if (igncase == 0)
+           match = strncmp (val, hint, hint_len) == 0;
+         else
+           match = strncasecmp (val, hint, hint_len) == 0;
+
+         /* If we performed tilde expansion, restore the original
+            filename. */
+         if (*hint_text == '~')
+           temp = restore_tilde (val, directory_part);
+         else
+           temp = savestring (val);
+         freetemp = 1;
+       }
+      else
+       {
+         temp = strrchr (val, '/');
+
+         if (temp)
+           {
+             temp++;
+             if (igncase == 0)
+               freetemp = match = strncmp (temp, hint, hint_len) == 0;
+             else
+               freetemp = match = strncasecmp (temp, hint, hint_len) == 0;
+             if (match)
+               temp = savestring (temp);
+           }
+         else
+           freetemp = match = 0;
+       }
+
+      /* If we have found a match, and it is an executable file, return it.
+        We don't return directory names when searching $PATH, since the
+        bash execution code won't find executables in directories which
+        appear in directories in $PATH when they're specified using
+        relative pathnames.  */
+#if 0
+      /* If we're not searching $PATH and we have a relative pathname, we
+        need to re-canonicalize it before testing whether or not it's an
+        executable or a directory so the shell treats .. relative to $PWD
+        according to the physical/logical option.  The shell already
+        canonicalizes the directory name in order to tell readline where
+        to look, so not doing it here will be inconsistent. */
+      /* XXX -- currently not used -- will introduce more inconsistency,
+        since shell does not canonicalize ../foo before passing it to
+        shell_execve().  */
+      if (match && searching_path == 0 && *val == '.')
+       {
+         char *t, *t1;
+
+         t = get_working_directory ("command-word-completion");
+         t1 = make_absolute (val, t);
+         free (t);
+         cval = sh_canonpath (t1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
+       }
+      else
+#endif
+       cval = val;
+
+      if (match && executable_completion ((searching_path ? val : cval), searching_path))
+       {
+         if (cval != val)
+           free (cval);
+         free (val);
+         val = "";             /* So it won't be NULL. */
+         return (temp);
+       }
+      else
+       {
+         if (freetemp)
+           free (temp);
+         if (cval != val)
+           free (cval);
+         free (val);
+         goto inner;
+       }
+    }
+}
+
+/* Completion inside an unterminated command substitution. */
+static char *
+command_subst_completion_function (text, state)
+     const char *text;
+     int state;
+{
+  static char **matches = (char **)NULL;
+  static const char *orig_start;
+  static char *filename_text = (char *)NULL;
+  static int cmd_index, start_len;
+  char *value;
+
+  if (state == 0)
+    {
+      if (filename_text)
+       free (filename_text);
+      orig_start = text;
+      if (*text == '`')
+       text++;
+      else if (*text == '$' && text[1] == '(') /* ) */
+       text += 2;
+      /* If the text was quoted, suppress any quote character that the
+        readline completion code would insert. */
+      rl_completion_suppress_quote = 1;
+      start_len = text - orig_start;
+      filename_text = savestring (text);
+      if (matches)
+       free (matches);
+
+      /*
+       * At this point we can entertain the idea of re-parsing
+       * `filename_text' into a (possibly incomplete) command name and
+       * arguments, and doing completion based on that.  This is
+       * currently very rudimentary, but it is a small improvement.
+       */
+      for (value = filename_text + strlen (filename_text) - 1; value > filename_text; value--)
+        if (whitespace (*value) || member (*value, COMMAND_SEPARATORS))
+          break;
+      if (value <= filename_text)
+       matches = rl_completion_matches (filename_text, command_word_completion_function);
+      else
+       {
+         value++;
+         start_len += value - filename_text;
+         if (whitespace (value[-1]))
+           matches = rl_completion_matches (value, rl_filename_completion_function);
+         else
+           matches = rl_completion_matches (value, command_word_completion_function);
+       }
+
+      /* If there is more than one match, rl_completion_matches has already
+        put the lcd in matches[0].  Skip over it. */
+      cmd_index = matches && matches[0] && matches[1];
+
+      /* If there's a single match and it's a directory, set the append char
+        to the expected `/'.  Otherwise, don't append anything. */
+      if (matches && matches[0] && matches[1] == 0 && test_for_directory (matches[0]))
+       rl_completion_append_character = '/';
+      else
+       rl_completion_suppress_append = 1;
+    }
+
+  if (matches == 0 || matches[cmd_index] == 0)
+    {
+      rl_filename_quoting_desired = 0; /* disable quoting */
+      return ((char *)NULL);
+    }
+  else
+    {
+      value = (char *)xmalloc (1 + start_len + strlen (matches[cmd_index]));
+
+      if (start_len == 1)
+       value[0] = *orig_start;
+      else
+       strncpy (value, orig_start, start_len);
+
+      strcpy (value + start_len, matches[cmd_index]);
+
+      cmd_index++;
+      return (value);
+    }
+}
+
+/* Okay, now we write the entry_function for variable completion. */
+static char *
+variable_completion_function (text, state)
+     const char *text;
+     int state;
+{
+  static char **varlist = (char **)NULL;
+  static int varlist_index;
+  static char *varname = (char *)NULL;
+  static int namelen;
+  static int first_char, first_char_loc;
+
+  if (!state)
+    {
+      if (varname)
+       free (varname);
+
+      first_char_loc = 0;
+      first_char = text[0];
+
+      if (first_char == '$')
+       first_char_loc++;
+
+      if (text[first_char_loc] == '{')
+       first_char_loc++;
+
+      varname = savestring (text + first_char_loc);
+
+      namelen = strlen (varname);
+      if (varlist)
+       strvec_dispose (varlist);
+
+      varlist = all_variables_matching_prefix (varname);
+      varlist_index = 0;
+    }
+
+  if (!varlist || !varlist[varlist_index])
+    {
+      return ((char *)NULL);
+    }
+  else
+    {
+      char *value;
+
+      value = (char *)xmalloc (4 + strlen (varlist[varlist_index]));
+
+      if (first_char_loc)
+       {
+         value[0] = first_char;
+         if (first_char_loc == 2)
+           value[1] = '{';
+       }
+
+      strcpy (value + first_char_loc, varlist[varlist_index]);
+      if (first_char_loc == 2)
+       strcat (value, "}");
+
+      varlist_index++;
+      return (value);
+    }
+}
+
+/* How about a completion function for hostnames? */
+static char *
+hostname_completion_function (text, state)
+     const char *text;
+     int state;
+{
+  static char **list = (char **)NULL;
+  static int list_index = 0;
+  static int first_char, first_char_loc;
+
+  /* If we don't have any state, make some. */
+  if (state == 0)
+    {
+      FREE (list);
+
+      list = (char **)NULL;
+
+      first_char_loc = 0;
+      first_char = *text;
+
+      if (first_char == '@')
+       first_char_loc++;
+
+      list = hostnames_matching ((char *)text+first_char_loc);
+      list_index = 0;
+    }
+
+  if (list && list[list_index])
+    {
+      char *t;
+
+      t = (char *)xmalloc (2 + strlen (list[list_index]));
+      *t = first_char;
+      strcpy (t + first_char_loc, list[list_index]);
+      list_index++;
+      return (t);
+    }
+
+  return ((char *)NULL);
+}
+
+/*
+ * A completion function for service names from /etc/services (or wherever).
+ */
+char *
+bash_servicename_completion_function (text, state)
+     const char *text;
+     int state;
+{
+#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GETSERVENT)
+  return ((char *)NULL);
+#else
+  static char *sname = (char *)NULL;
+  static struct servent *srvent;
+  static int snamelen, firstc;
+  char *value;
+  char **alist, *aentry;
+  int afound;
+
+  if (state == 0)
+    {
+      FREE (sname);
+      firstc = *text;
+
+      sname = savestring (text);
+      snamelen = strlen (sname);
+      setservent (0);
+    }
+
+  while (srvent = getservent ())
+    {
+      afound = 0;
+      if (snamelen == 0 || (STREQN (sname, srvent->s_name, snamelen)))
+       break;
+      /* Not primary, check aliases */
+      for (alist = srvent->s_aliases; *alist; alist++)
+       {
+         aentry = *alist;
+         if (STREQN (sname, aentry, snamelen))
+           {
+             afound = 1;
+             break;
+           }
+       }
+
+      if (afound)
+       break;
+    }
+
+  if (srvent == 0)
+    {
+      endservent ();
+      return ((char *)NULL);
+    }
+
+  value = afound ? savestring (aentry) : savestring (srvent->s_name);
+  return value;
+#endif
+}
+
+/*
+ * A completion function for group names from /etc/group (or wherever).
+ */
+char *
+bash_groupname_completion_function (text, state)
+     const char *text;
+     int state;
+{
+#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H)
+  return ((char *)NULL);
+#else
+  static char *gname = (char *)NULL;
+  static struct group *grent;
+  static int gnamelen;
+  char *value;
+
+  if (state == 0)
+    {
+      FREE (gname);
+      gname = savestring (text);
+      gnamelen = strlen (gname);
+
+      setgrent ();
+    }
+
+  while (grent = getgrent ())
+    {
+      if (gnamelen == 0 || (STREQN (gname, grent->gr_name, gnamelen)))
+        break;
+    }
+
+  if (grent == 0)
+    {
+      endgrent ();
+      return ((char *)NULL);
+    }
+
+  value = savestring (grent->gr_name);
+  return (value);
+#endif
+}
+
+/* Functions to perform history and alias expansions on the current line. */
+
+#if defined (BANG_HISTORY)
+/* Perform history expansion on the current line.  If no history expansion
+   is done, pre_process_line() returns what it was passed, so we need to
+   allocate a new line here. */
+static char *
+history_expand_line_internal (line)
+     char *line;
+{
+  char *new_line;
+  int old_verify;
+
+  old_verify = hist_verify;
+  hist_verify = 0;
+  new_line = pre_process_line (line, 0, 0);
+  hist_verify = old_verify;
+
+  return (new_line == line) ? savestring (line) : new_line;
+}
+#endif
+
+/* There was an error in expansion.  Let the preprocessor print
+   the error here. */
+static void
+cleanup_expansion_error ()
+{
+  char *to_free;
+#if defined (BANG_HISTORY)
+  int old_verify;
+
+  old_verify = hist_verify;
+  hist_verify = 0;
+#endif
+
+  fprintf (rl_outstream, "\r\n");
+  to_free = pre_process_line (rl_line_buffer, 1, 0);
+#if defined (BANG_HISTORY)
+  hist_verify = old_verify;
+#endif
+  if (to_free != rl_line_buffer)
+    FREE (to_free);
+  putc ('\r', rl_outstream);
+  rl_forced_update_display ();
+}
+
+/* If NEW_LINE differs from what is in the readline line buffer, add an
+   undo record to get from the readline line buffer contents to the new
+   line and make NEW_LINE the current readline line. */
+static void
+maybe_make_readline_line (new_line)
+     char *new_line;
+{
+  if (strcmp (new_line, rl_line_buffer) != 0)
+    {
+      rl_point = rl_end;
+
+      rl_add_undo (UNDO_BEGIN, 0, 0, 0);
+      rl_delete_text (0, rl_point);
+      rl_point = rl_end = rl_mark = 0;
+      rl_insert_text (new_line);
+      rl_add_undo (UNDO_END, 0, 0, 0);
+    }
+}
+
+/* Make NEW_LINE be the current readline line.  This frees NEW_LINE. */
+static void
+set_up_new_line (new_line)
+     char *new_line;
+{
+  int old_point, at_end;
+
+  old_point = rl_point;
+  at_end = rl_point == rl_end;
+
+  /* If the line was history and alias expanded, then make that
+     be one thing to undo. */
+  maybe_make_readline_line (new_line);
+  free (new_line);
+
+  /* Place rl_point where we think it should go. */
+  if (at_end)
+    rl_point = rl_end;
+  else if (old_point < rl_end)
+    {
+      rl_point = old_point;
+      if (!whitespace (rl_line_buffer[rl_point]))
+       rl_forward_word (1, 0);
+    }
+}
+
+#if defined (ALIAS)
+/* Expand aliases in the current readline line. */
+static int
+alias_expand_line (count, ignore)
+     int count, ignore;
+{
+  char *new_line;
+
+  new_line = alias_expand (rl_line_buffer);
+
+  if (new_line)
+    {
+      set_up_new_line (new_line);
+      return (0);
+    }
+  else
+    {
+      cleanup_expansion_error ();
+      return (1);
+    }
+}
+#endif
+
+#if defined (BANG_HISTORY)
+/* History expand the line. */
+static int
+history_expand_line (count, ignore)
+     int count, ignore;
+{
+  char *new_line;
+
+  new_line = history_expand_line_internal (rl_line_buffer);
+
+  if (new_line)
+    {
+      set_up_new_line (new_line);
+      return (0);
+    }
+  else
+    {
+      cleanup_expansion_error ();
+      return (1);
+    }
+}
+
+/* Expand history substitutions in the current line and then insert a
+   space (hopefully close to where we were before). */
+static int
+tcsh_magic_space (count, ignore)
+     int count, ignore;
+{
+  int dist_from_end, old_point;
+
+  old_point = rl_point;
+  dist_from_end = rl_end - rl_point;
+  if (history_expand_line (count, ignore) == 0)
+    {
+      /* Try a simple heuristic from Stephen Gildea <gildea@intouchsys.com>.
+        This works if all expansions were before rl_point or if no expansions
+        were performed. */
+      rl_point = (old_point == 0) ? old_point : rl_end - dist_from_end;
+      rl_insert (1, ' ');
+      return (0);
+    }
+  else
+    return (1);
+}
+#endif /* BANG_HISTORY */
+
+/* History and alias expand the line. */
+static int
+history_and_alias_expand_line (count, ignore)
+     int count, ignore;
+{
+  char *new_line;
+
+  new_line = 0;
+#if defined (BANG_HISTORY)
+  new_line = history_expand_line_internal (rl_line_buffer);
+#endif
+
+#if defined (ALIAS)
+  if (new_line)
+    {
+      char *alias_line;
+
+      alias_line = alias_expand (new_line);
+      free (new_line);
+      new_line = alias_line;
+    }
+#endif /* ALIAS */
+
+  if (new_line)
+    {
+      set_up_new_line (new_line);
+      return (0);
+    }
+  else
+    {
+      cleanup_expansion_error ();
+      return (1);
+    }
+}
+
+/* History and alias expand the line, then perform the shell word
+   expansions by calling expand_string.  This can't use set_up_new_line()
+   because we want the variable expansions as a separate undo'able
+   set of operations. */
+static int
+shell_expand_line (count, ignore)
+     int count, ignore;
+{
+  char *new_line;
+  WORD_LIST *expanded_string;
+
+  new_line = 0;
+#if defined (BANG_HISTORY)
+  new_line = history_expand_line_internal (rl_line_buffer);
+#endif
+
+#if defined (ALIAS)
+  if (new_line)
+    {
+      char *alias_line;
+
+      alias_line = alias_expand (new_line);
+      free (new_line);
+      new_line = alias_line;
+    }
+#endif /* ALIAS */
+
+  if (new_line)
+    {
+      int old_point = rl_point;
+      int at_end = rl_point == rl_end;
+
+      /* If the line was history and alias expanded, then make that
+        be one thing to undo. */
+      maybe_make_readline_line (new_line);
+      free (new_line);
+
+      /* If there is variable expansion to perform, do that as a separate
+        operation to be undone. */
+      new_line = savestring (rl_line_buffer);
+      expanded_string = expand_string (new_line, 0);
+      FREE (new_line);
+      if (expanded_string == 0)
+       {
+         new_line = (char *)xmalloc (1);
+         new_line[0] = '\0';
+       }
+      else
+       {
+         new_line = string_list (expanded_string);
+         dispose_words (expanded_string);
+       }
+
+      maybe_make_readline_line (new_line);
+      free (new_line);
+
+      /* Place rl_point where we think it should go. */
+      if (at_end)
+       rl_point = rl_end;
+      else if (old_point < rl_end)
+       {
+         rl_point = old_point;
+         if (!whitespace (rl_line_buffer[rl_point]))
+           rl_forward_word (1, 0);
+       }
+      return 0;
+    }
+  else
+    {
+      cleanup_expansion_error ();
+      return 1;
+    }
+}
+
+/* If FIGNORE is set, then don't match files with the given suffixes when
+   completing filenames.  If only one of the possibilities has an acceptable
+   suffix, delete the others, else just return and let the completer
+   signal an error.  It is called by the completer when real
+   completions are done on filenames by the completer's internal
+   function, not for completion lists (M-?) and not on "other"
+   completion types, such as hostnames or commands. */
+
+static struct ignorevar fignore =
+{
+  "FIGNORE",
+  (struct ign *)0,
+  0,
+  (char *)0,
+  (sh_iv_item_func_t *) 0,
+};
+
+static void
+_ignore_completion_names (names, name_func)
+     char **names;
+     sh_ignore_func_t *name_func;
+{
+  char **newnames;
+  int idx, nidx;
+  char **oldnames;
+  int oidx;
+
+  /* If there is only one completion, see if it is acceptable.  If it is
+     not, free it up.  In any case, short-circuit and return.  This is a
+     special case because names[0] is not the prefix of the list of names
+     if there is only one completion; it is the completion itself. */
+  if (names[1] == (char *)0)
+    {
+      if (force_fignore)
+       if ((*name_func) (names[0]) == 0)
+         {
+           free (names[0]);
+           names[0] = (char *)NULL;
+         }
+
+      return;
+    }
+
+  /* Allocate space for array to hold list of pointers to matching
+     filenames.  The pointers are copied back to NAMES when done. */
+  for (nidx = 1; names[nidx]; nidx++)
+    ;
+  newnames = strvec_create (nidx + 1);
+
+  if (force_fignore == 0)
+    {
+      oldnames = strvec_create (nidx - 1);
+      oidx = 0;
+    }
+
+  newnames[0] = names[0];
+  for (idx = nidx = 1; names[idx]; idx++)
+    {
+      if ((*name_func) (names[idx]))
+       newnames[nidx++] = names[idx];
+      else if (force_fignore == 0)
+       oldnames[oidx++] = names[idx];
+      else
+       free (names[idx]);
+    }
+
+  newnames[nidx] = (char *)NULL;
+
+  /* If none are acceptable then let the completer handle it. */
+  if (nidx == 1)
+    {
+      if (force_fignore)
+       {
+         free (names[0]);
+         names[0] = (char *)NULL;
+       }
+      else
+       free (oldnames);
+
+      free (newnames);
+      return;
+    }
+
+  if (force_fignore == 0)
+    {
+      while (oidx)
+       free (oldnames[--oidx]);
+      free (oldnames);
+    }
+
+  /* If only one is acceptable, copy it to names[0] and return. */
+  if (nidx == 2)
+    {
+      free (names[0]);
+      names[0] = newnames[1];
+      names[1] = (char *)NULL;
+      free (newnames);
+      return;
+    }
+
+  /* Copy the acceptable names back to NAMES, set the new array end,
+     and return. */
+  for (nidx = 1; newnames[nidx]; nidx++)
+    names[nidx] = newnames[nidx];
+  names[nidx] = (char *)NULL;
+  free (newnames);
+}
+
+static int
+name_is_acceptable (name)
+     const char *name;
+{
+  struct ign *p;
+  int nlen;
+
+  for (nlen = strlen (name), p = fignore.ignores; p->val; p++)
+    {
+      if (nlen > p->len && p->len > 0 && STREQ (p->val, &name[nlen - p->len]))
+       return (0);
+    }
+
+  return (1);
+}
+
+#if 0
+static int
+ignore_dot_names (name)
+     char *name;
+{
+  return (name[0] != '.');
+}
+#endif
+
+static int
+filename_completion_ignore (names)
+     char **names;
+{
+#if 0
+  if (glob_dot_filenames == 0)
+    _ignore_completion_names (names, ignore_dot_names);
+#endif
+
+  setup_ignore_patterns (&fignore);
+
+  if (fignore.num_ignores == 0)
+    return 0;
+
+  _ignore_completion_names (names, name_is_acceptable);
+
+  return 0;
+}
+
+/* Return 1 if NAME is a directory.  NAME undergoes tilde expansion. */
+static int
+test_for_directory (name)
+     const char *name;
+{
+  char *fn;
+  int r;
+
+  fn = bash_tilde_expand (name, 0);
+  r = file_isdir (fn);
+  free (fn);
+
+  return (r);
+}
+
+/* Remove files from NAMES, leaving directories. */
+static int
+bash_ignore_filenames (names)
+     char **names;
+{
+  _ignore_completion_names (names, test_for_directory);
+  return 0;
+}
+
+static int
+return_zero (name)
+     const char *name;
+{
+  return 0;
+}
+
+static int
+bash_ignore_everything (names)
+     char **names;
+{
+  _ignore_completion_names (names, return_zero);
+  return 0;
+}
+
+/* Replace a tilde-prefix in VAL with a `~', assuming the user typed it.  VAL
+   is an expanded filename.  DIRECTORY_PART is the tilde-prefix portion
+   of the un-tilde-expanded version of VAL (what the user typed). */
+static char *
+restore_tilde (val, directory_part)
+     char *val, *directory_part;
+{
+  int l, vl, dl2, xl;
+  char *dh2, *expdir, *ret;
+
+  vl = strlen (val);
+
+  /* We need to duplicate the expansions readline performs on the directory
+     portion before passing it to our completion function. */
+  dh2 = directory_part ? bash_dequote_filename (directory_part, 0) : 0;
+  bash_directory_expansion (&dh2);
+  dl2 = strlen (dh2);
+
+  expdir = bash_tilde_expand (directory_part, 0);
+  xl = strlen (expdir);
+  free (expdir);
+
+  /*
+     dh2 = unexpanded but dequoted tilde-prefix
+     dl2 = length of tilde-prefix
+     expdir = tilde-expanded tilde-prefix
+     xl = length of expanded tilde-prefix
+     l = length of remainder after tilde-prefix
+  */
+  l = (vl - xl) + 1;
+
+  ret = (char *)xmalloc (dl2 + 2 + l);
+  strcpy (ret, dh2);
+  strcpy (ret + dl2, val + xl);
+
+  free (dh2);
+  return (ret);
+}
+
+/* Simulate the expansions that will be performed by
+   rl_filename_completion_function.  This must be called with the address of
+   a pointer to malloc'd memory. */
+static void
+bash_directory_expansion (dirname)
+     char **dirname;
+{
+  char *d, *nd;
+
+  d = savestring (*dirname);
+
+  if ((rl_directory_rewrite_hook) && (*rl_directory_rewrite_hook) (&d))
+    {
+      free (*dirname);
+      *dirname = d;
+    }
+  else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d))
+    {
+      free (*dirname);
+      *dirname = d;
+    }
+  else if (rl_completion_found_quote)
+    {
+      nd = bash_dequote_filename (d, rl_completion_quote_character);
+      free (*dirname);
+      free (d);
+      *dirname = nd;
+    }
+}
+
+/* If necessary, rewrite directory entry */
+static char *
+bash_filename_rewrite_hook (fname, fnlen)
+     char *fname;
+     int fnlen;
+{
+  char *conv;
+
+  conv = fnx_fromfs (fname, fnlen);
+  if (conv != fname)
+    conv = savestring (conv);
+  return conv;
+}
+
+/* Functions to save and restore the appropriate directory hook */
+/* This is not static so the shopt code can call it */
+void
+set_directory_hook ()
+{
+  if (dircomplete_expand)
+    {
+      rl_directory_completion_hook = bash_directory_completion_hook;
+      rl_directory_rewrite_hook = (rl_icppfunc_t *)0;
+    }
+  else
+    {
+      rl_directory_rewrite_hook = bash_directory_completion_hook;
+      rl_directory_completion_hook = (rl_icppfunc_t *)0;
+    }
+}
+
+static rl_icppfunc_t *
+save_directory_hook ()
+{
+  rl_icppfunc_t *ret;
+
+  if (dircomplete_expand)
+    {
+      ret = rl_directory_completion_hook;
+      rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
+    }
+  else
+    {
+      ret = rl_directory_rewrite_hook;
+      rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
+    }
+
+  return ret;
+}
+
+static void
+restore_directory_hook (hookf)
+     rl_icppfunc_t *hookf;
+{
+  if (dircomplete_expand)
+    rl_directory_completion_hook = hookf;
+  else
+    rl_directory_rewrite_hook = hookf;
+}
+
+/* Expand a filename before the readline completion code passes it to stat(2).
+   The filename will already have had tilde expansion performed. */
+static int
+bash_filename_stat_hook (dirname)
+     char **dirname;
+{
+  char *local_dirname, *new_dirname, *t;
+  int should_expand_dirname, return_value;
+  WORD_LIST *wl;
+  struct stat sb;
+
+  local_dirname = *dirname;
+  should_expand_dirname = return_value = 0;
+  if (t = mbschr (local_dirname, '$'))
+    should_expand_dirname = '$';
+  else if (t = mbschr (local_dirname, '`'))    /* XXX */
+    should_expand_dirname = '`';
+
+#if defined (HAVE_LSTAT)
+  if (should_expand_dirname && lstat (local_dirname, &sb) == 0)
+#else
+  if (should_expand_dirname && stat (local_dirname, &sb) == 0)
+#endif
+    should_expand_dirname = 0;
+  
+  if (should_expand_dirname)  
+    {
+      new_dirname = savestring (local_dirname);
+      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB);  /* does the right thing */
+      if (wl)
+       {
+         free (new_dirname);
+         new_dirname = string_list (wl);
+         /* Tell the completer we actually expanded something and change
+            *dirname only if we expanded to something non-null -- stat
+            behaves unpredictably when passed null or empty strings */
+         if (new_dirname && *new_dirname)
+           {
+             *dirname = new_dirname;
+             return_value = STREQ (local_dirname, *dirname) == 0;
+           }
+         else
+           free (new_dirname);
+         free (local_dirname);
+         dispose_words (wl);
+       }
+      else
+       free (new_dirname);
+    }  
+
+  /* This is very similar to the code in bash_directory_completion_hook below,
+     but without spelling correction and not worrying about whether or not
+     we change relative pathnames. */
+  if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1]))
+    {
+      char *temp1, *temp2;
+
+      t = get_working_directory ("symlink-hook");
+      temp1 = make_absolute (local_dirname, t);
+      free (t);
+      temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
+
+      /* If we can't canonicalize, bail. */
+      if (temp2 == 0)
+       {
+         free (temp1);
+         return return_value;
+       }
+
+      free (local_dirname);
+      *dirname = temp2;
+      free (temp1);
+    }
+
+  return (return_value);
+}
+
+/* Handle symbolic link references and other directory name
+   expansions while hacking completion.  This should return 1 if it modifies
+   the DIRNAME argument, 0 otherwise.  It should make sure not to modify
+   DIRNAME if it returns 0. */
+static int
+bash_directory_completion_hook (dirname)
+     char **dirname;
+{
+  char *local_dirname, *new_dirname, *t;
+  int return_value, should_expand_dirname, nextch, closer;
+  WORD_LIST *wl;
+  struct stat sb;
+
+  return_value = should_expand_dirname = nextch = closer = 0;
+  local_dirname = *dirname;
+
+  if (t = mbschr (local_dirname, '$'))
+    {
+      should_expand_dirname = '$';
+      nextch = t[1];
+      /* Deliberately does not handle the deprecated $[...] arithmetic
+        expansion syntax */
+      if (nextch == '(')
+       closer = ')';
+      else if (nextch == '{')
+       closer = '}';
+      else
+       nextch = 0;
+    }
+  else if (local_dirname[0] == '~')
+    should_expand_dirname = '~';
+  else
+    {
+      t = mbschr (local_dirname, '`');
+      if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
+       should_expand_dirname = '`';
+    }
+
+#if defined (HAVE_LSTAT)
+  if (should_expand_dirname && lstat (local_dirname, &sb) == 0)
+#else
+  if (should_expand_dirname && stat (local_dirname, &sb) == 0)
+#endif
+    should_expand_dirname = 0;
+
+  if (should_expand_dirname)  
+    {
+      new_dirname = savestring (local_dirname);
+      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB);  /* does the right thing */
+      if (wl)
+       {
+         *dirname = string_list (wl);
+         /* Tell the completer to replace the directory name only if we
+            actually expanded something. */
+         return_value = STREQ (local_dirname, *dirname) == 0;
+         free (local_dirname);
+         free (new_dirname);
+         dispose_words (wl);
+         local_dirname = *dirname;
+         /* XXX - change rl_filename_quote_characters here based on
+            should_expand_dirname/nextch/closer.  This is the only place
+            custom_filename_quote_characters is modified. */
+         if (rl_filename_quote_characters && *rl_filename_quote_characters)
+           {
+             int i, j, c;
+             i = strlen (default_filename_quote_characters);
+             custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
+             for (i = j = 0; c = default_filename_quote_characters[i]; i++)
+               {
+                 if (c == should_expand_dirname || c == nextch || c == closer)
+                   continue;
+                 custom_filename_quote_characters[j++] = c;
+               }
+             custom_filename_quote_characters[j] = '\0';
+             rl_filename_quote_characters = custom_filename_quote_characters;
+             set_filename_bstab (rl_filename_quote_characters);
+           }
+       }
+      else
+       {
+         free (new_dirname);
+         free (local_dirname);
+         *dirname = (char *)xmalloc (1);
+         **dirname = '\0';
+         return 1;
+       }
+    }
+  else 
+    {
+      /* Dequote the filename even if we don't expand it. */
+      new_dirname = bash_dequote_filename (local_dirname, rl_completion_quote_character);
+      return_value = STREQ (local_dirname, new_dirname) == 0;
+      free (local_dirname);
+      local_dirname = *dirname = new_dirname;
+    }
+
+  /* no_symbolic_links == 0 -> use (default) logical view of the file system.
+     local_dirname[0] == '.' && local_dirname[1] == '/' means files in the
+     current directory (./).
+     local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames
+     in the current directory (e.g., lib/sh).
+     XXX - should we do spelling correction on these? */
+
+  /* This is test as it was in bash-4.2: skip relative pathnames in current
+     directory.  Change test to
+      (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/'))
+     if we want to skip paths beginning with ./ also. */
+  if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1]))
+    {
+      char *temp1, *temp2;
+      int len1, len2;
+
+      /* If we have a relative path
+               (local_dirname[0] != '/' && local_dirname[0] != '.')
+        that is canonical after appending it to the current directory, then
+               temp1 = temp2+'/'
+        That is,
+               strcmp (temp1, temp2) == 0
+        after adding a slash to temp2 below.  It should be safe to not
+        change those.
+      */
+      t = get_working_directory ("symlink-hook");
+      temp1 = make_absolute (local_dirname, t);
+      free (t);
+      temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
+
+      /* Try spelling correction if initial canonicalization fails.  Make
+        sure we are set to replace the directory name with the results so
+        subsequent directory checks don't fail. */
+      if (temp2 == 0 && dircomplete_spelling && dircomplete_expand)
+       {
+         temp2 = dirspell (temp1);
+         if (temp2)
+           {
+             free (temp1);
+             temp1 = temp2;
+             temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
+             return_value |= temp2 != 0;
+           }
+       }
+      /* If we can't canonicalize, bail. */
+      if (temp2 == 0)
+       {
+         free (temp1);
+         return return_value;
+       }
+      len1 = strlen (temp1);
+      if (temp1[len1 - 1] == '/')
+       {
+         len2 = strlen (temp2);
+         if (len2 > 2)         /* don't append `/' to `/' or `//' */
+           {
+             temp2 = (char *)xrealloc (temp2, len2 + 2);
+             temp2[len2] = '/';
+             temp2[len2 + 1] = '\0';
+           }
+       }
+
+      /* dircomplete_expand_relpath == 0 means we want to leave relative
+        pathnames that are unchanged by canonicalization alone.
+        *local_dirname != '/' && *local_dirname != '.' == relative pathname
+        (consistent with general.c:absolute_pathname())
+        temp1 == temp2 (after appending a slash to temp2) means the pathname
+        is not changed by canonicalization as described above. */
+      if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0))
+       return_value |= STREQ (local_dirname, temp2) == 0;
+      free (local_dirname);
+      *dirname = temp2;
+      free (temp1);
+    }
+
+  return (return_value);
+}
+
+static char **history_completion_array = (char **)NULL;
+static int harry_size;
+static int harry_len;
+
+static void
+build_history_completion_array ()
+{
+  register int i, j;
+  HIST_ENTRY **hlist;
+  char **tokens;
+
+  /* First, clear out the current dynamic history completion list. */
+  if (harry_size)
+    {
+      strvec_dispose (history_completion_array);
+      history_completion_array = (char **)NULL;
+      harry_size = 0;
+      harry_len = 0;
+    }
+
+  /* Next, grovel each line of history, making each shell-sized token
+     a separate entry in the history_completion_array. */
+  hlist = history_list ();
+
+  if (hlist)
+    {
+      for (i = 0; hlist[i]; i++)
+       ;
+      for ( --i; i >= 0; i--)
+       {
+         /* Separate each token, and place into an array. */
+         tokens = history_tokenize (hlist[i]->line);
+
+         for (j = 0; tokens && tokens[j]; j++)
+           {
+             if (harry_len + 2 > harry_size)
+               history_completion_array = strvec_resize (history_completion_array, harry_size += 10);
+
+             history_completion_array[harry_len++] = tokens[j];
+             history_completion_array[harry_len] = (char *)NULL;
+           }
+         free (tokens);
+       }
+
+      /* Sort the complete list of tokens. */
+      if (dabbrev_expand_active == 0)
+        qsort (history_completion_array, harry_len, sizeof (char *), (QSFUNC *)strvec_strcmp);
+    }
+}
+
+static char *
+history_completion_generator (hint_text, state)
+     const char *hint_text;
+     int state;
+{
+  static int local_index, len;
+  static const char *text;
+
+  /* If this is the first call to the generator, then initialize the
+     list of strings to complete over. */
+  if (state == 0)
+    {
+      if (dabbrev_expand_active)       /* This is kind of messy */
+       rl_completion_suppress_append = 1;
+      local_index = 0;
+      build_history_completion_array ();
+      text = hint_text;
+      len = strlen (text);
+    }
+
+  while (history_completion_array && history_completion_array[local_index])
+    {
+      if (strncmp (text, history_completion_array[local_index++], len) == 0)
+       return (savestring (history_completion_array[local_index - 1]));
+    }
+  return ((char *)NULL);
+}
+
+static int
+dynamic_complete_history (count, key)
+     int count, key;
+{
+  int r;
+  rl_compentry_func_t *orig_func;
+  rl_completion_func_t *orig_attempt_func;
+  rl_compignore_func_t *orig_ignore_func;
+
+  orig_func = rl_completion_entry_function;
+  orig_attempt_func = rl_attempted_completion_function;
+  orig_ignore_func = rl_ignore_some_completions_function;
+
+  rl_completion_entry_function = history_completion_generator;
+  rl_attempted_completion_function = (rl_completion_func_t *)NULL;
+  rl_ignore_some_completions_function = filename_completion_ignore;
+
+  /* XXX - use rl_completion_mode here? */
+  if (rl_last_func == dynamic_complete_history)
+    r = rl_complete_internal ('?');
+  else
+    r = rl_complete_internal (TAB);
+
+  rl_completion_entry_function = orig_func;
+  rl_attempted_completion_function = orig_attempt_func;
+  rl_ignore_some_completions_function = orig_ignore_func;
+
+  return r;
+}
+
+static int
+bash_dabbrev_expand (count, key)
+     int count, key;
+{
+  int r, orig_suppress, orig_sort;
+  rl_compentry_func_t *orig_func;
+  rl_completion_func_t *orig_attempt_func;
+  rl_compignore_func_t *orig_ignore_func;
+
+  orig_func = rl_menu_completion_entry_function;
+  orig_attempt_func = rl_attempted_completion_function;
+  orig_ignore_func = rl_ignore_some_completions_function;
+  orig_suppress = rl_completion_suppress_append;
+  orig_sort = rl_sort_completion_matches;
+
+  rl_menu_completion_entry_function = history_completion_generator;
+  rl_attempted_completion_function = (rl_completion_func_t *)NULL;
+  rl_ignore_some_completions_function = filename_completion_ignore;
+  rl_filename_completion_desired = 0;
+  rl_completion_suppress_append = 1;
+  rl_sort_completion_matches = 0;
+
+  /* XXX - use rl_completion_mode here? */
+  dabbrev_expand_active = 1;
+  if (rl_last_func == bash_dabbrev_expand)
+    rl_last_func = rl_menu_complete;
+  r = rl_menu_complete (count, key);
+  dabbrev_expand_active = 0;
+
+  rl_last_func = bash_dabbrev_expand;
+  rl_menu_completion_entry_function = orig_func;
+  rl_attempted_completion_function = orig_attempt_func;
+  rl_ignore_some_completions_function = orig_ignore_func;
+  rl_completion_suppress_append = orig_suppress;
+  rl_sort_completion_matches = orig_sort;
+
+  return r;
+}
+
+#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
+static int
+bash_complete_username (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_username_internal (rl_completion_mode (bash_complete_username));
+}
+
+static int
+bash_possible_username_completions (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_username_internal ('?');
+}
+
+static int
+bash_complete_username_internal (what_to_do)
+     int what_to_do;
+{
+  return bash_specific_completion (what_to_do, rl_username_completion_function);
+}
+
+static int
+bash_complete_filename (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_filename_internal (rl_completion_mode (bash_complete_filename));
+}
+
+static int
+bash_possible_filename_completions (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_filename_internal ('?');
+}
+
+static int
+bash_complete_filename_internal (what_to_do)
+     int what_to_do;
+{
+  rl_compentry_func_t *orig_func;
+  rl_completion_func_t *orig_attempt_func;
+  rl_icppfunc_t *orig_dir_func;
+  rl_compignore_func_t *orig_ignore_func;
+  /*const*/ char *orig_rl_completer_word_break_characters;
+  int r;
+
+  orig_func = rl_completion_entry_function;
+  orig_attempt_func = rl_attempted_completion_function;
+  orig_ignore_func = rl_ignore_some_completions_function;
+  orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
+
+  orig_dir_func = save_directory_hook ();
+
+  rl_completion_entry_function = rl_filename_completion_function;
+  rl_attempted_completion_function = (rl_completion_func_t *)NULL;
+  rl_ignore_some_completions_function = filename_completion_ignore;
+  rl_completer_word_break_characters = " \t\n\"\'";
+
+  r = rl_complete_internal (what_to_do);
+
+  rl_completion_entry_function = orig_func;
+  rl_attempted_completion_function = orig_attempt_func;
+  rl_ignore_some_completions_function = orig_ignore_func;
+  rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
+
+  restore_directory_hook (orig_dir_func);
+
+  return r;
+}
+
+static int
+bash_complete_hostname (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_hostname_internal (rl_completion_mode (bash_complete_hostname));
+}
+
+static int
+bash_possible_hostname_completions (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_hostname_internal ('?');
+}
+
+static int
+bash_complete_variable (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_variable_internal (rl_completion_mode (bash_complete_variable));
+}
+
+static int
+bash_possible_variable_completions (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_variable_internal ('?');
+}
+
+static int
+bash_complete_command (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_command_internal (rl_completion_mode (bash_complete_command));
+}
+
+static int
+bash_possible_command_completions (ignore, ignore2)
+     int ignore, ignore2;
+{
+  return bash_complete_command_internal ('?');
+}
+
+static int
+bash_complete_hostname_internal (what_to_do)
+     int what_to_do;
+{
+  return bash_specific_completion (what_to_do, hostname_completion_function);
+}
+
+static int
+bash_complete_variable_internal (what_to_do)
+     int what_to_do;
+{
+  return bash_specific_completion (what_to_do, variable_completion_function);
+}
+
+static int
+bash_complete_command_internal (what_to_do)
+     int what_to_do;
+{
+  return bash_specific_completion (what_to_do, command_word_completion_function);
+}
+
+static char *globtext;
+static char *globorig;
+
+static char *
+glob_complete_word (text, state)
+     const char *text;
+     int state;
+{
+  static char **matches = (char **)NULL;
+  static int ind;
+  int glen;
+  char *ret, *ttext;
+
+  if (state == 0)
+    {
+      rl_filename_completion_desired = 1;
+      FREE (matches);
+      if (globorig != globtext)
+       FREE (globorig);
+      FREE (globtext);
+
+      ttext = bash_tilde_expand (text, 0);
+
+      if (rl_explicit_arg)
+       {
+         globorig = savestring (ttext);
+         glen = strlen (ttext);
+         globtext = (char *)xmalloc (glen + 2);
+         strcpy (globtext, ttext);
+         globtext[glen] = '*';
+         globtext[glen+1] = '\0';
+       }
+      else
+        globtext = globorig = savestring (ttext);
+
+      if (ttext != text)
+       free (ttext);
+
+      matches = shell_glob_filename (globtext);
+      if (GLOB_FAILED (matches))
+       matches = (char **)NULL;
+      ind = 0;
+    }
+
+  ret = matches ? matches[ind] : (char *)NULL;
+  ind++;
+  return ret;
+}
+
+static int
+bash_glob_completion_internal (what_to_do)
+     int what_to_do;
+{
+  return bash_specific_completion (what_to_do, glob_complete_word);
+}
+
+/* A special quoting function so we don't end up quoting globbing characters
+   in the word if there are no matches or multiple matches. */
+static char *
+bash_glob_quote_filename (s, rtype, qcp)
+     char *s;
+     int rtype;
+     char *qcp;
+{
+  if (globorig && qcp && *qcp == '\0' && STREQ (s, globorig))
+    return (savestring (s));
+  else
+    return (bash_quote_filename (s, rtype, qcp));
+}
+
+static int
+bash_glob_complete_word (count, key)
+     int count, key;
+{
+  int r;
+  rl_quote_func_t *orig_quoting_function;
+
+  if (rl_editing_mode == EMACS_EDITING_MODE)
+    rl_explicit_arg = 1;       /* force `*' append */
+  orig_quoting_function = rl_filename_quoting_function;
+  rl_filename_quoting_function = bash_glob_quote_filename;
+  
+  r = bash_glob_completion_internal (rl_completion_mode (bash_glob_complete_word));
+
+  rl_filename_quoting_function = orig_quoting_function;
+  return r;
+}
+
+static int
+bash_glob_expand_word (count, key)
+     int count, key;
+{
+  return bash_glob_completion_internal ('*');
+}
+
+static int
+bash_glob_list_expansions (count, key)
+     int count, key;
+{
+  return bash_glob_completion_internal ('?');
+}
+
+static int
+bash_specific_completion (what_to_do, generator)
+     int what_to_do;
+     rl_compentry_func_t *generator;
+{
+  rl_compentry_func_t *orig_func;
+  rl_completion_func_t *orig_attempt_func;
+  rl_compignore_func_t *orig_ignore_func;
+  int r;
+
+  orig_func = rl_completion_entry_function;
+  orig_attempt_func = rl_attempted_completion_function;
+  orig_ignore_func = rl_ignore_some_completions_function;
+  rl_completion_entry_function = generator;
+  rl_attempted_completion_function = NULL;
+  rl_ignore_some_completions_function = orig_ignore_func;
+
+  r = rl_complete_internal (what_to_do);
+
+  rl_completion_entry_function = orig_func;
+  rl_attempted_completion_function = orig_attempt_func;
+  rl_ignore_some_completions_function = orig_ignore_func;
+
+  return r;
+}
+
+#endif /* SPECIFIC_COMPLETION_FUNCTIONS */
+
+#if defined (VI_MODE)
+/* Completion, from vi mode's point of view.  This is a modified version of
+   rl_vi_complete which uses the bash globbing code to implement what POSIX
+   specifies, which is to append a `*' and attempt filename generation (which
+   has the side effect of expanding any globbing characters in the word). */
+static int
+bash_vi_complete (count, key)
+     int count, key;
+{
+#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
+  int p, r;
+  char *t;
+
+  if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
+    {
+      if (!whitespace (rl_line_buffer[rl_point + 1]))
+       rl_vi_end_word (1, 'E');
+      rl_point++;
+    }
+
+  /* Find boundaries of current word, according to vi definition of a
+     `bigword'. */
+  t = 0;
+  if (rl_point > 0)
+    {
+      p = rl_point;
+      rl_vi_bWord (1, 'B');
+      r = rl_point;
+      rl_point = p;
+      p = r;
+
+      t = substring (rl_line_buffer, p, rl_point);
+    }      
+
+  if (t && glob_pattern_p (t) == 0)
+    rl_explicit_arg = 1;       /* XXX - force glob_complete_word to append `*' */
+  FREE (t);
+
+  if (key == '*')      /* Expansion and replacement. */
+    r = bash_glob_expand_word (count, key);
+  else if (key == '=') /* List possible completions. */
+    r = bash_glob_list_expansions (count, key);
+  else if (key == '\\')        /* Standard completion */
+    r = bash_glob_complete_word (count, key);
+  else
+    r = rl_complete (0, key);
+
+  if (key == '*' || key == '\\')
+    rl_vi_start_inserting (key, 1, 1);
+
+  return (r);
+#else
+  return rl_vi_complete (count, key);
+#endif /* !SPECIFIC_COMPLETION_FUNCTIONS */
+}
+#endif /* VI_MODE */
+
+/* Filename quoting for completion. */
+/* A function to strip unquoted quote characters (single quotes, double
+   quotes, and backslashes).  It allows single quotes to appear
+   within double quotes, and vice versa.  It should be smarter. */
+static char *
+bash_dequote_filename (text, quote_char)
+     char *text;
+     int quote_char;
+{
+  char *ret, *p, *r;
+  int l, quoted;
+
+  l = strlen (text);
+  ret = (char *)xmalloc (l + 1);
+  for (quoted = quote_char, p = text, r = ret; p && *p; p++)
+    {
+      /* Allow backslash-escaped characters to pass through unscathed. */
+      if (*p == '\\')
+       {
+         /* Backslashes are preserved within single quotes. */
+         if (quoted == '\'')
+           *r++ = *p;
+         /* Backslashes are preserved within double quotes unless the
+            character is one that is defined to be escaped */
+         else if (quoted == '"' && ((sh_syntaxtab[p[1]] & CBSDQUOTE) == 0))
+           *r++ = *p;
+
+         *r++ = *++p;
+         if (*p == '\0')
+           return ret;         /* XXX - was break; */
+         continue;
+       }
+      /* Close quote. */
+      if (quoted && *p == quoted)
+       {
+         quoted = 0;
+         continue;
+       }
+      /* Open quote. */
+      if (quoted == 0 && (*p == '\'' || *p == '"'))
+       {
+         quoted = *p;
+         continue;
+       }
+      *r++ = *p;
+    }
+  *r = '\0';
+  return ret;
+}
+
+/* Quote characters that the readline completion code would treat as
+   word break characters with backslashes.  Pass backslash-quoted
+   characters through without examination. */
+static char *
+quote_word_break_chars (text)
+     char *text;
+{
+  char *ret, *r, *s;
+  int l;
+
+  l = strlen (text);
+  ret = (char *)xmalloc ((2 * l) + 1);
+  for (s = text, r = ret; *s; s++)
+    {
+      /* Pass backslash-quoted characters through, including the backslash. */
+      if (*s == '\\')
+       {
+         *r++ = '\\';
+         *r++ = *++s;
+         if (*s == '\0')
+           break;
+         continue;
+       }
+      /* OK, we have an unquoted character.  Check its presence in
+        rl_completer_word_break_characters. */
+      if (mbschr (rl_completer_word_break_characters, *s))
+       *r++ = '\\';
+      /* XXX -- check for standalone tildes here and backslash-quote them */
+      if (s == text && *s == '~' && file_exists (text))
+        *r++ = '\\';
+      *r++ = *s;
+    }
+  *r = '\0';
+  return ret;
+}
+
+/* Use characters in STRING to populate the table of characters that should
+   be backslash-quoted.  The table will be used for sh_backslash_quote from
+   this file. */
+static void
+set_filename_bstab (string)
+     const char *string;
+{
+  const char *s;
+
+  memset (filename_bstab, 0, sizeof (filename_bstab));
+  for (s = string; s && *s; s++)
+    filename_bstab[*s] = 1;
+}
+
+/* Quote a filename using double quotes, single quotes, or backslashes
+   depending on the value of completion_quoting_style.  If we're
+   completing using backslashes, we need to quote some additional
+   characters (those that readline treats as word breaks), so we call
+   quote_word_break_chars on the result.  This returns newly-allocated
+   memory. */
+static char *
+bash_quote_filename (s, rtype, qcp)
+     char *s;
+     int rtype;
+     char *qcp;
+{
+  char *rtext, *mtext, *ret;
+  int rlen, cs;
+
+  rtext = (char *)NULL;
+
+  /* If RTYPE == MULT_MATCH, it means that there is
+     more than one match.  In this case, we do not add
+     the closing quote or attempt to perform tilde
+     expansion.  If RTYPE == SINGLE_MATCH, we try
+     to perform tilde expansion, because single and double
+     quotes inhibit tilde expansion by the shell. */
+
+  cs = completion_quoting_style;
+  /* Might need to modify the default completion style based on *qcp,
+     since it's set to any user-provided opening quote.  We also change
+     to single-quoting if there is no user-provided opening quote and
+     the word being completed contains newlines, since those are not
+     quoted correctly using backslashes (a backslash-newline pair is
+     special to the shell parser). */
+  if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n'))
+    cs = COMPLETE_SQUOTE;
+  else if (*qcp == '"')
+    cs = COMPLETE_DQUOTE;
+  else if (*qcp == '\'')
+    cs = COMPLETE_SQUOTE;
+#if defined (BANG_HISTORY)
+  else if (*qcp == '\0' && history_expansion && cs == COMPLETE_DQUOTE &&
+          history_expansion_inhibited == 0 && mbschr (s, '!'))
+    cs = COMPLETE_BSQUOTE;
+
+  if (*qcp == '"' && history_expansion && cs == COMPLETE_DQUOTE &&
+       history_expansion_inhibited == 0 && mbschr (s, '!'))
+    {
+      cs = COMPLETE_BSQUOTE;
+      *qcp = '\0';
+    }
+#endif
+
+  /* Don't tilde-expand backslash-quoted filenames, since only single and
+     double quotes inhibit tilde expansion. */
+  mtext = s;
+  if (mtext[0] == '~' && rtype == SINGLE_MATCH && cs != COMPLETE_BSQUOTE)
+    mtext = bash_tilde_expand (s, 0);
+
+  switch (cs)
+    {
+    case COMPLETE_DQUOTE:
+      rtext = sh_double_quote (mtext);
+      break;
+    case COMPLETE_SQUOTE:
+      rtext = sh_single_quote (mtext);
+      break;
+    case COMPLETE_BSQUOTE:
+      rtext = sh_backslash_quote (mtext, complete_fullquote ? 0 : filename_bstab, 0);
+      break;
+    }
+
+  if (mtext != s)
+    free (mtext);
+
+  /* We may need to quote additional characters: those that readline treats
+     as word breaks that are not quoted by backslash_quote. */
+  if (rtext && cs == COMPLETE_BSQUOTE)
+    {
+      mtext = quote_word_break_chars (rtext);
+      free (rtext);
+      rtext = mtext;
+    }
+
+  /* Leave the opening quote intact.  The readline completion code takes
+     care of avoiding doubled opening quotes. */
+  if (rtext)
+    {
+      rlen = strlen (rtext);
+      ret = (char *)xmalloc (rlen + 1);
+      strcpy (ret, rtext);
+    }
+  else
+    {
+      ret = (char *)xmalloc (rlen = 1);
+      ret[0] = '\0';
+    }
+
+  /* If there are multiple matches, cut off the closing quote. */
+  if (rtype == MULT_MATCH && cs != COMPLETE_BSQUOTE)
+    ret[rlen - 1] = '\0';
+  free (rtext);
+  return ret;
+}
+
+/* Support for binding readline key sequences to Unix commands. */
+static Keymap cmd_xmap;
+
+static int
+putx(c)
+     int c;
+{
+  return (putc (c, rl_outstream));
+}
+  
+static int
+bash_execute_unix_command (count, key)
+     int count;        /* ignored */
+     int key;
+{
+  Keymap ckmap;                /* current keymap */
+  Keymap xkmap;                /* unix command executing keymap */
+  rl_command_func_t *func;
+  int type;
+  register int i, r;
+  intmax_t mi;
+  sh_parser_state_t ps;
+  char *cmd, *value, *l, *l1, *ce;
+  SHELL_VAR *v;
+  char ibuf[INT_STRLEN_BOUND(int) + 1];
+
+  /* First, we need to find the right command to execute.  This is tricky,
+     because we might have already indirected into another keymap, so we
+     have to walk cmd_xmap using the entire key sequence. */
+  cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type);
+    
+  if (cmd == 0 || type != ISMACR)
+    {
+      rl_crlf ();
+      internal_error (_("bash_execute_unix_command: cannot find keymap for command"));
+      rl_forced_update_display ();
+      return 1;
+    }
+
+  ce = rl_get_termcap ("ce");
+  if (ce)      /* clear current line */
+    {
+      fprintf (rl_outstream, "\r");
+      tputs (ce, 1, putx);
+      fflush (rl_outstream);
+    }
+  else
+    rl_crlf ();        /* move to a new line */
+
+  v = bind_variable ("READLINE_LINE", rl_line_buffer, 0);
+  if (v)
+    VSETATTR (v, att_exported);
+  l = v ? value_cell (v) : 0;
+  value = inttostr (rl_point, ibuf, sizeof (ibuf));
+  v = bind_int_variable ("READLINE_POINT", value);
+  if (v)
+    VSETATTR (v, att_exported);
+  array_needs_making = 1;
+
+  save_parser_state (&ps);
+  r = parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE);
+  restore_parser_state (&ps);
+
+  v = find_variable ("READLINE_LINE");
+  l1 = v ? value_cell (v) : 0;
+  if (l1 != l)
+    maybe_make_readline_line (value_cell (v));
+  v = find_variable ("READLINE_POINT");
+  if (v && legal_number (value_cell (v), &mi))
+    {
+      i = mi;
+      if (i != rl_point)
+       {
+         rl_point = i;
+         if (rl_point > rl_end)
+           rl_point = rl_end;
+         else if (rl_point < 0)
+           rl_point = 0;
+       }
+    }      
+
+  unbind_variable ("READLINE_LINE");
+  unbind_variable ("READLINE_POINT");
+  array_needs_making = 1;
+
+  /* and restore the readline buffer and display after command execution. */
+  rl_forced_update_display ();
+  return 0;
+}
+
+int
+print_unix_command_map ()
+{
+  Keymap save;
+
+  save = rl_get_keymap ();
+  rl_set_keymap (cmd_xmap);
+  rl_macro_dumper (1);
+  rl_set_keymap (save);
+  return 0;
+}
+
+static void
+init_unix_command_map ()
+{
+  cmd_xmap = rl_make_bare_keymap ();
+}
+
+static int
+isolate_sequence (string, ind, need_dquote, startp)
+     char *string;
+     int ind, need_dquote, *startp;
+{
+  register int i;
+  int c, passc, delim;
+
+  for (i = ind; string[i] && whitespace (string[i]); i++)
+    ;
+  /* NEED_DQUOTE means that the first non-white character *must* be `"'. */
+  if (need_dquote && string[i] != '"')
+    {
+      builtin_error (_("%s: first non-whitespace character is not `\"'"), string);
+      return -1;
+    }
+
+  /* We can have delimited strings even if NEED_DQUOTE == 0, like the command
+     string to bind the key sequence to. */
+  delim = (string[i] == '"' || string[i] == '\'') ? string[i] : 0;
+    
+  if (startp)
+    *startp = delim ? ++i : i;
+
+  for (passc = 0; c = string[i]; i++)
+    {
+      if (passc)
+       {
+         passc = 0;
+         continue;
+       }
+      if (c == '\\')
+       {
+         passc++;
+         continue;
+       }
+      if (c == delim)
+       break;
+    }
+
+  if (delim && string[i] != delim)
+    {
+      builtin_error (_("no closing `%c' in %s"), delim, string);
+      return -1;
+    }
+
+  return i;
+}
+
+int
+bind_keyseq_to_unix_command (line)
+     char *line;
+{
+  Keymap kmap;
+  char *kseq, *value;
+  int i, kstart;
+
+  if (cmd_xmap == 0)
+    init_unix_command_map ();
+
+  kmap = rl_get_keymap ();
+
+  /* We duplicate some of the work done by rl_parse_and_bind here, but
+     this code only has to handle `"keyseq": ["]command["]' and can
+     generate an error for anything else. */
+  i = isolate_sequence (line, 0, 1, &kstart);
+  if (i < 0)
+    return -1;
+
+  /* Create the key sequence string to pass to rl_generic_bind */
+  kseq = substring (line, kstart, i);
+
+  for ( ; line[i] && line[i] != ':'; i++)
+    ;
+  if (line[i] != ':')
+    {
+      builtin_error (_("%s: missing colon separator"), line);
+      FREE (kseq);
+      return -1;
+    }
+
+  i = isolate_sequence (line, i + 1, 0, &kstart);
+  if (i < 0)
+    {
+      FREE (kseq);
+      return -1;
+    }
+
+  /* Create the value string containing the command to execute. */
+  value = substring (line, kstart, i);
+
+  /* Save the command to execute and the key sequence in the CMD_XMAP */
+  rl_generic_bind (ISMACR, kseq, value, cmd_xmap);
+
+  /* and bind the key sequence in the current keymap to a function that
+     understands how to execute from CMD_XMAP */
+  rl_bind_keyseq_in_map (kseq, bash_execute_unix_command, kmap);
+
+  free (kseq);  
+  return 0;
+}
+
+/* Used by the programmable completion code.  Complete TEXT as a filename,
+   but return only directories as matches.  Dequotes the filename before
+   attempting to find matches. */
+char **
+bash_directory_completion_matches (text)
+     const char *text;
+{
+  char **m1;
+  char *dfn;
+  int qc;
+
+  qc = rl_dispatching ? rl_completion_quote_character : 0;  
+  dfn = bash_dequote_filename ((char *)text, qc);
+  m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+  free (dfn);
+
+  if (m1 == 0 || m1[0] == 0)
+    return m1;
+  /* We don't bother recomputing the lcd of the matches, because it will just
+     get thrown away by the programmable completion code and recomputed
+     later. */
+  (void)bash_ignore_filenames (m1);
+  return m1;
+}
+
+char *
+bash_dequote_text (text)
+     const char *text;
+{
+  char *dtxt;
+  int qc;
+
+  qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0;
+  dtxt = bash_dequote_filename ((char *)text, qc);
+  return (dtxt);
+}
+
+static int
+bash_event_hook ()
+{
+#if defined (DEBUG)
+itrace("bash_event_hook");
+#endif
+  CHECK_TERMSIG;
+}
+
+#endif /* READLINE */
index 2a9d1f7e382aef3177c5898e198ad2a515833290..0e62d6f62bef1eb65e048ea6b2143d0d0d171b59 100755 (executable)
--- a/configure
+++ b/configure
@@ -2823,6 +2823,7 @@ sparc-linux*)     opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 #*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
 #*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
 *-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
index 42b910acbb5e882cb14f87efa23d75f12bc96879..df91278fd671029c6446d950ca917e23cf56b299 100644 (file)
@@ -75,6 +75,7 @@ sparc-linux*) opt_bash_malloc=no ;;   # sparc running linux; requires ELF
 #*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
 #*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
 *-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
index 8af3319ff5a2d6b4e4b0f6559fed9a4ebbb36f6d..5a8cca8ed96359b4112fd11180de757daa207d10 100644 (file)
@@ -5,12 +5,12 @@
 .\"    Case Western Reserve University
 .\"    chet@po.cwru.edu
 .\"
-.\"    Last Change: Thu Jul  5 11:10:13 EDT 2012
+.\"    Last Change: Sat Jul 14 14:31:31 EDT 2012
 .\"
 .\" bash_builtins, strip all but Built-Ins section
 .if \n(zZ=1 .ig zZ
 .if \n(zY=1 .ig zY
-.TH BASH 1 "2012 July 5" "GNU Bash 4.2"
+.TH BASH 1 "2012 July 14" "GNU Bash 4.2"
 .\"
 .\" There's some problem with having a `@'
 .\" in a tagged paragraph with the BSD man macros.
@@ -8707,6 +8707,12 @@ separately (see
 .B "COMMAND EXECUTION ENVIRONMENT"
 above), and may cause
 subshells to exit before executing all the commands in the subshell.
+If a shell function executes in a context where \fB\-e\fP is being ignored,
+even if \fB\-e\fP is set, none of the commands executed within the function
+body will be affected by the \fB\-e\fP setting.
+If a shell function sets \fB\-e\fP while executing in a context where
+\fB\-e\fP is ignored, that setting will not have any effect until the
+command containing the function call completes.
 .TP 8
 .B \-f
 Disable pathname expansion.
diff --git a/doc/bash.1~ b/doc/bash.1~
new file mode 100644 (file)
index 0000000..8af3319
--- /dev/null
@@ -0,0 +1,10187 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\"    Chet Ramey
+.\"    Case Western Reserve University
+.\"    chet@po.cwru.edu
+.\"
+.\"    Last Change: Thu Jul  5 11:10:13 EDT 2012
+.\"
+.\" bash_builtins, strip all but Built-Ins section
+.if \n(zZ=1 .ig zZ
+.if \n(zY=1 .ig zY
+.TH BASH 1 "2012 July 5" "GNU Bash 4.2"
+.\"
+.\" There's some problem with having a `@'
+.\" in a tagged paragraph with the BSD man macros.
+.\" It has to do with `@' appearing in the }1 macro.
+.\" This is a problem on 4.3 BSD and Ultrix, but Sun
+.\" appears to have fixed it.
+.\" If you're seeing the characters
+.\" `@u-3p' appearing before the lines reading
+.\" `possible-hostname-completions
+.\" and `complete-hostname' down in READLINE,
+.\" then uncomment this redefinition.
+.\"
+.de }1
+.ds ]X \&\\*(]B\\
+.nr )E 0
+.if !"\\$1"" .nr )I \\$1n
+.}f
+.ll \\n(LLu
+.in \\n()Ru+\\n(INu+\\n()Iu
+.ti \\n(INu
+.ie !\\n()Iu+\\n()Ru-\w\a\\*(]X\au-3p \{\\*(]X
+.br\}
+.el \\*(]X\h\a|\\n()Iu+\\n()Ru\a\c
+.}f
+..
+.\"
+.\" File Name macro.  This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+bash \- GNU Bourne-Again SHell
+.SH SYNOPSIS
+.B bash
+[options]
+[command_string | file]
+.SH COPYRIGHT
+.if n Bash is Copyright (C) 1989-2012 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2012 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+.B Bash
+is an \fBsh\fR-compatible command language interpreter that
+executes commands read from the standard input or from a file.
+.B Bash
+also incorporates useful features from the \fIKorn\fP and \fIC\fP
+shells (\fBksh\fP and \fBcsh\fP).
+.PP
+.B Bash
+is intended to be a conformant implementation of the
+Shell and Utilities portion of the IEEE POSIX specification
+(IEEE Standard 1003.1).
+.B Bash
+can be configured to be POSIX-conformant by default.
+.SH OPTIONS
+All of the  single-character shell options documented in the
+description of the \fBset\fR builtin command can be used as options
+when the shell is invoked.
+In addition, \fBbash\fR
+interprets the following options when it is invoked:
+.PP
+.PD 0
+.TP 10
+.B \-c
+If the
+.B \-c
+option is present, then commands are read from the first non-option argument
+.IR command_string .
+If there are arguments after the
+.IR command_string ,
+they are assigned to the positional parameters, starting with
+.BR $0 .
+.TP
+.B \-i
+If the
+.B \-i
+option is present, the shell is
+.IR interactive .
+.TP
+.B \-l
+Make
+.B bash
+act as if it had been invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-r
+If the
+.B \-r
+option is present, the shell becomes
+.I restricted
+(see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-s
+If the
+.B \-s
+option is present, or if no arguments remain after option
+processing, then commands are read from the standard input.
+This option allows the positional parameters to be set
+when invoking an interactive shell.
+.TP
+.B \-D
+A list of all double-quoted strings preceded by \fB$\fP
+is printed on the standard output.
+These are the strings that
+are subject to language translation when the current locale
+is not \fBC\fP or \fBPOSIX\fP.
+This implies the \fB\-n\fP option; no commands will be executed.
+.TP
+.B [\-+]O [\fIshopt_option\fP]
+\fIshopt_option\fP is one of the shell options accepted by the
+\fBshopt\fP builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option;
+\fB+O\fP unsets it.
+If \fIshopt_option\fP is not supplied, the names and values of the shell
+options accepted by \fBshopt\fP are printed on the standard output.
+If the invocation option is \fB+O\fP, the output is displayed in a format
+that may be reused as input.
+.TP
+.B \-\-
+A
+.B \-\-
+signals the end of options and disables further option processing.
+Any arguments after the
+.B \-\-
+are treated as filenames and arguments.  An argument of
+.B \-
+is equivalent to \fB\-\-\fP.
+.PD
+.PP
+.B Bash
+also interprets a number of multi-character options.
+These options must appear on the command line before the
+single-character options to be recognized.
+.PP
+.PD 0
+.TP
+.B \-\-debugger
+Arrange for the debugger profile to be executed before the shell
+starts.
+Turns on extended debugging mode (see the description of the
+.B extdebug
+option to the
+.B shopt
+builtin below).
+.TP
+.B \-\-dump\-po\-strings
+Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP
+\fBpo\fP (portable object) file format.
+.TP
+.B \-\-dump\-strings
+Equivalent to \fB\-D\fP.
+.TP
+.B \-\-help
+Display a usage message on standard output and exit successfully.
+.TP
+\fB\-\-init\-file\fP \fIfile\fP
+.PD 0
+.TP
+\fB\-\-rcfile\fP \fIfile\fP
+.PD
+Execute commands from
+.I file
+instead of the standard personal initialization file
+.I ~/.bashrc
+if the shell is interactive (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-login
+Equivalent to \fB\-l\fP.
+.TP
+.B \-\-noediting
+Do not use the GNU
+.B readline
+library to read command lines when the shell is interactive.
+.TP
+.B \-\-noprofile
+Do not read either the system-wide startup file
+.FN /etc/profile
+or any of the personal initialization files
+.IR ~/.bash_profile ,
+.IR ~/.bash_login ,
+or
+.IR ~/.profile .
+By default,
+.B bash
+reads these files when it is invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-norc
+Do not read and execute the personal initialization file
+.I ~/.bashrc
+if the shell is interactive.
+This option is on by default if the shell is invoked as
+.BR sh .
+.TP
+.B \-\-posix
+Change the behavior of \fBbash\fP where the default operation differs
+from the POSIX standard to match the standard (\fIposix mode\fP).
+.TP
+.B \-\-restricted
+The shell becomes restricted (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-\-verbose
+Equivalent to  \fB\-v\fP.
+.TP
+.B \-\-version
+Show version information for this instance of
+.B bash
+on the standard output and exit successfully.
+.PD
+.SH ARGUMENTS
+If arguments remain after option processing, and neither the
+.B \-c
+nor the
+.B \-s
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands.
+If
+.B bash
+is invoked in this fashion, 
+.B $0
+is set to the name of the file, and the positional parameters
+are set to the remaining arguments.
+.B Bash
+reads and executes commands from this file, then exits.
+\fBBash\fP's exit status is the exit status of the last command
+executed in the script.
+If no commands are executed, the exit status is 0.
+An attempt is first made to open the file in the current directory, and,
+if no file is found, then the shell searches the directories in
+.SM
+.B PATH
+for the script.
+.SH INVOCATION
+A \fIlogin shell\fP is one whose first character of argument zero is a
+.BR \- ,
+or one started with the 
+.B \-\-login
+option.
+.PP
+An \fIinteractive\fP shell is one started without non-option arguments
+and without the
+.B \-c
+option
+whose standard input and error are
+both connected to terminals (as determined by
+.IR isatty (3)),
+or one started with the
+.B \-i
+option.
+.SM
+.B PS1
+is set and
+.B $\-
+includes
+.B i
+if
+.B bash
+is interactive,
+allowing a shell script or a startup file to test this state.
+.PP
+The following paragraphs describe how
+.B bash
+executes its startup files.
+If any of the files exist but cannot be read,
+.B bash
+reports an error.
+Tildes are expanded in filenames as described below under
+.B "Tilde Expansion"
+in the
+.SM
+.B EXPANSION
+section.
+.PP
+When
+.B bash
+is invoked as an interactive login shell, or as a non-interactive shell
+with the \fB\-\-login\fP option, it first reads and
+executes commands from the file \fI/etc/profile\fP, if that
+file exists.
+After reading that file, it looks for \fI~/.bash_profile\fP,
+\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The
+.B \-\-noprofile
+option may be used when the shell is started to inhibit this behavior.
+.PP
+When a login shell exits,
+.B bash
+reads and executes commands from the file \fI~/.bash_logout\fP, if it
+exists.
+.PP
+When an interactive shell that is not a login shell is started,
+.B bash
+reads and executes commands from \fI~/.bashrc\fP, if that file exists.
+This may be inhibited by using the
+.B \-\-norc
+option.
+The \fB\-\-rcfile\fP \fIfile\fP option will force
+.B bash
+to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP.
+.PP
+When
+.B bash
+is started non-interactively, to run a shell script, for example, it
+looks for the variable
+.SM
+.B BASH_ENV
+in the environment, expands its value if it appears there, and uses the
+expanded value as the name of a file to read and execute.
+.B Bash
+behaves as if the following command were executed:
+.sp .5
+.RS
+.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
+.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
+.RE
+.sp .5
+but the value of the
+.SM
+.B PATH
+variable is not used to search for the filename.
+.PP
+If
+.B bash
+is invoked with the name
+.BR sh ,
+it tries to mimic the startup behavior of historical versions of
+.B sh
+as closely as possible,
+while conforming to the POSIX standard as well.
+When invoked as an interactive login shell, or a non-interactive
+shell with the \fB\-\-login\fP option, it first attempts to
+read and execute commands from
+.I /etc/profile
+and
+.IR ~/.profile ,
+in that order.
+The
+.B \-\-noprofile
+option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name
+.BR sh ,
+.B bash
+looks for the variable
+.SM
+.BR ENV ,
+expands its value if it is defined, and uses the
+expanded value as the name of a file to read and execute.
+Since a shell invoked as
+.B sh
+does not attempt to read and execute commands from any other startup
+files, the
+.B \-\-rcfile
+option has no effect.
+A non-interactive shell invoked with the name
+.B sh
+does not attempt to read any other startup files. 
+When invoked as
+.BR sh ,
+.B bash
+enters
+.I posix
+mode after the startup files are read.
+.PP
+When
+.B bash
+is started in
+.I posix
+mode, as with the
+.B \-\-posix
+command line option, it follows the POSIX standard for startup files.
+In this mode, interactive shells expand the
+.SM
+.B ENV
+variable and commands are read and executed from the file
+whose name is the expanded value.
+No other startup files are read.
+.PP
+.B Bash
+attempts to determine when it is being run with its standard input
+connected to a network connection, as when executed by the remote shell
+daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP.
+If
+.B bash
+determines it is being run in this fashion, it reads and executes
+commands from \fI~/.bashrc\fP, if that file exists and is readable.
+It will not do this if invoked as \fBsh\fP.
+The
+.B \-\-norc
+option may be used to inhibit this behavior, and the
+.B \-\-rcfile
+option may be used to force another file to be read, but
+\fIrshd\fP does not generally invoke the shell with those options
+or allow them to be specified.
+.PP
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, no startup
+files are read, shell functions are not inherited from the environment, the
+.SM
+.BR SHELLOPTS ,
+.SM
+.BR BASHOPTS ,
+.SM
+.BR CDPATH ,
+and
+.SM
+.B GLOBIGNORE
+variables, if they appear in the environment, are ignored,
+and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+.SH DEFINITIONS
+.PP
+The following definitions are used throughout the rest of this
+document.
+.PD 0
+.TP
+.B blank 
+A space or tab.
+.TP
+.B word
+A sequence of characters considered as a single unit by the shell.
+Also known as a
+.BR token .
+.TP
+.B name
+A 
+.I word
+consisting only of alphanumeric characters and underscores, and
+beginning with an alphabetic character or an underscore.  Also
+referred to as an
+.BR identifier .
+.TP
+.B metacharacter
+A character that, when unquoted, separates words.  One of the following:
+.br
+.RS
+.PP
+.if t \fB|  &  ;  (  )  <  >  space  tab\fP
+.if n \fB|  & ; ( ) < > space tab\fP
+.RE
+.PP
+.TP
+.B control operator
+A \fItoken\fP that performs a control function.  It is one of the following
+symbols:
+.RS
+.PP
+.if t \fB||  &  &&  ;  ;;  (  )  |  |&    <newline>\fP
+.if n \fB|| & && ; ;; ( ) | |& <newline>\fP
+.RE
+.PD
+.SH "RESERVED WORDS"
+\fIReserved words\fP are words that have a special meaning to the shell.
+The following words are recognized as reserved when unquoted and either
+the first word of a simple command (see
+.SM
+.B SHELL GRAMMAR
+below) or the third word of a 
+.B case 
+or
+.B for
+command:
+.if t .RS
+.PP
+.B
+.if n ! case  coproc  do done elif else esac fi for function if in select then until while { } time [[ ]]
+.if t !    case    coproc    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
+.if t .RE
+.SH "SHELL GRAMMAR"
+.SS Simple Commands
+.PP
+A \fIsimple command\fP is a sequence of optional variable assignments
+followed by \fBblank\fP-separated words and redirections, and
+terminated by a \fIcontrol operator\fP.  The first word
+specifies the command to be executed, and is passed as argument zero.
+The remaining words are passed as arguments to the invoked command.
+.PP
+The return value of a \fIsimple command\fP is its exit status, or
+128+\fIn\^\fP if the command is terminated by signal
+.IR n .
+.SS Pipelines
+.PP
+A \fIpipeline\fP is a sequence of one or more commands separated by
+one of the control operators
+.B |
+or \fB|&\fP.
+The format for a pipeline is:
+.RS
+.PP
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ]
+.RE
+.PP
+The standard output of
+.I command
+is connected via a pipe to the standard input of
+.IR command2 .
+This connection is performed before any redirections specified by the
+command (see
+.SM
+.B REDIRECTION
+below).
+If \fB|&\fP is used, \fIcommand\fP's standard output and standard error
+are connected to
+\fIcommand2\fP's standard input through the pipe;
+it is shorthand for \fB2>&1 |\fP.
+This implicit redirection of the standard error is
+performed after any redirections specified by the command.
+.PP
+The return status of a pipeline is the exit status of the last
+command, unless the \fBpipefail\fP option is enabled.
+If \fBpipefail\fP is enabled, the pipeline's return status is the
+value of the last (rightmost) command to exit with a non-zero status,
+or zero if all commands exit successfully.
+If the reserved word
+.B !
+precedes a pipeline, the exit status of that pipeline is the logical
+negation of the exit status as described above.
+The shell waits for all commands in the pipeline to
+terminate before returning a value.
+.PP
+If the
+.B time
+reserved word precedes a pipeline, the elapsed as well as user and
+system time consumed by its execution are reported when the pipeline
+terminates.
+The \fB\-p\fP option changes the output format to that specified by POSIX.
+When the shell is in \fIposix mode\fP, it does not recognize
+\fBtime\fP as a reserved word if the next token begins with a `-'.
+The
+.SM
+.B TIMEFORMAT
+variable may be set to a format string that specifies how the timing
+information should be displayed; see the description of
+.SM
+.B TIMEFORMAT
+under
+.B "Shell Variables"
+below.
+.PP
+When the shell is in \fIposix mode\fP, \fBtime\fP
+may be followed by a newline.  In this case, the shell displays the
+total user and system time consumed by the shell and its children.
+The
+.SM
+.B TIMEFORMAT
+variable may be used to specify the format of
+the time information.
+.PP
+Each command in a pipeline is executed as a separate process (i.e., in a
+subshell).
+.SS Lists
+.PP
+A \fIlist\fP is a sequence of one or more pipelines separated by one
+of the operators
+.BR ; ,
+.BR & ,
+.BR && ,
+or
+.BR || ,
+and optionally terminated by one of
+.BR ; ,
+.BR & ,
+or
+.BR <newline> .
+.PP
+Of these list operators,
+.B &&
+and
+.B ||
+have equal precedence, followed by
+.B ;
+and
+.BR & ,
+which have equal precedence.
+.PP
+A sequence of one or more newlines may appear in a \fIlist\fP instead
+of a semicolon to delimit commands.
+.PP
+If a command is terminated by the control operator
+.BR & ,
+the shell executes the command in the \fIbackground\fP
+in a subshell.  The shell does not wait for the command to
+finish, and the return status is 0.  Commands separated by a
+.B ;
+are executed sequentially; the shell waits for each
+command to terminate in turn.  The return status is the
+exit status of the last command executed.
+.PP
+AND and OR lists are sequences of one of more pipelines separated by the
+\fB&&\fP and \fB||\fP control operators, respectively.
+AND and OR lists are executed with left associativity.
+An AND list has the form
+.RS
+.PP
+\fIcommand1\fP \fB&&\fP \fIcommand2\fP
+.RE
+.PP
+.I command2
+is executed if, and only if,
+.I command1
+returns an exit status of zero.
+.PP
+An OR list has the form
+.RS
+.PP
+\fIcommand1\fP \fB||\fP \fIcommand2\fP
+.PP
+.RE
+.PP
+.I command2
+is executed if and only if
+.I command1
+returns a non-zero exit status.
+The return status of
+AND and OR lists is the exit status of the last command
+executed in the list.
+.SS Compound Commands
+.PP
+A \fIcompound command\fP is one of the following.
+In most cases a \fIlist\fP in a command's description may be separated from
+the rest of the command by one or more newlines, and may be followed by a
+newline in place of a semicolon.
+.TP
+(\fIlist\fP)
+\fIlist\fP is executed in a subshell environment (see
+.SM
+\fBCOMMAND EXECUTION ENVIRONMENT\fP
+below).
+Variable assignments and builtin
+commands that affect the shell's environment do not remain in effect
+after the command completes.  The return status is the exit status of
+\fIlist\fP.
+.TP
+{ \fIlist\fP; }
+\fIlist\fP is simply executed in the current shell environment.
+\fIlist\fP must be terminated with a newline or semicolon.
+This is known as a \fIgroup command\fP.
+The return status is the exit status of
+\fIlist\fP.
+Note that unlike the metacharacters \fB(\fP and \fB)\fP, \fB{\fP and
+\fB}\fP are \fIreserved words\fP and must occur where a reserved
+word is permitted to be recognized.  Since they do not cause a word
+break, they must be separated from \fIlist\fP by whitespace or another
+shell metacharacter.
+.TP
+((\fIexpression\fP))
+The \fIexpression\fP is evaluated according to the rules described
+below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If the value of the expression is non-zero, the return status is 0;
+otherwise the return status is 1.  This is exactly equivalent to
+\fBlet "\fIexpression\fP"\fR.
+.TP
+\fB[[\fP \fIexpression\fP \fB]]\fP
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression \fIexpression\fP.
+Expressions are composed of the primaries described below under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+Word splitting and pathname expansion are not performed on the words
+between the \fB[[\fP and \fB]]\fP; tilde expansion,
+parameter and variable expansion,
+arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+Conditional operators such as \fB\-f\fP must be unquoted to be recognized
+as primaries.
+.if t .sp 0.5
+.if n .sp 1
+When used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort
+lexicographically using the current locale.
+.if t .sp 0.5
+.if n .sp 1
+When the \fB==\fP and \fB!=\fP operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below under \fBPattern Matching\fP.
+If the shell option
+.B nocasematch
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+The return value is 0 if the string matches (\fB==\fP) or does not match
+(\fB!=\fP) the pattern, and 1 otherwise.
+Any part of the pattern may be quoted to force the quoted portion
+to be matched as a string.
+.if t .sp 0.5
+.if n .sp 1
+An additional binary operator, \fB=~\fP, is available, with the same
+precedence as \fB==\fP and \fB!=\fP.
+When it is used, the string to the right of the operator is considered
+an extended regular expression and matched accordingly (as in \fIregex\fP(3)).  
+The return value is 0 if the string matches
+the pattern, and 1 otherwise.
+If the regular expression is syntactically incorrect, the conditional
+expression's return value is 2.
+If the shell option
+.B nocasematch
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+Any part of the pattern may be quoted to force the quoted portion
+to be matched as a string.
+Bracket expressions in regular expressions must be treated carefully,
+since normal quoting characters lose their meanings between brackets.
+If the pattern is stored in a shell variable, quoting the variable
+expansion forces the entire pattern to be matched as a string.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the array variable
+.SM
+.BR BASH_REMATCH .
+The element of
+.SM
+.B BASH_REMATCH
+with index 0 is the portion of the string
+matching the entire regular expression.
+The element of
+.SM
+.B BASH_REMATCH
+with index \fIn\fP is the portion of the
+string matching the \fIn\fPth parenthesized subexpression.
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+.if t .sp 0.5
+.if n .sp 1
+.RS
+.PD 0
+.TP
+.B ( \fIexpression\fP )
+Returns the value of \fIexpression\fP.
+This may be used to override the normal precedence of operators.
+.TP
+.B ! \fIexpression\fP
+True if
+.I expression
+is false.
+.TP
+\fIexpression1\fP \fB&&\fP \fIexpression2\fP
+True if both
+.I expression1
+and
+.I expression2
+are true.
+.TP
+\fIexpression1\fP \fB||\fP \fIexpression2\fP
+True if either
+.I expression1
+or
+.I expression2
+is true.
+.PD
+.LP
+The \fB&&\fP and \fB||\fP
+operators do not evaluate \fIexpression2\fP if the value of
+\fIexpression1\fP is sufficient to determine the return value of
+the entire conditional expression.
+.RE
+.TP
+\fBfor\fP \fIname\fP [ [ \fBin\fP [ \fIword ...\fP ] ] ; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.
+The variable \fIname\fP is set to each element of this list
+in turn, and \fIlist\fP is executed each time.
+If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes
+\fIlist\fP once for each positional parameter that is set (see
+.SM
+.B PARAMETERS
+below).
+The return status is the exit status of the last command that executes.
+If the expansion of the items following \fBin\fP results in an empty
+list, no commands are executed, and the return status is 0.
+.TP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+First, the arithmetic expression \fIexpr1\fP is evaluated according
+to the rules described below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+The arithmetic expression \fIexpr2\fP is then evaluated repeatedly
+until it evaluates to zero.
+Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is
+executed and the arithmetic expression \fIexpr3\fP is evaluated.
+If any expression is omitted, it behaves as if it evaluates to 1.
+The return value is the exit status of the last command in \fIlist\fP
+that is executed, or false if any of the expressions is invalid.
+.TP
+\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.  The set of expanded words is printed on the standard
+error, each preceded by a number.  If the \fBin\fP
+\fIword\fP is omitted, the positional parameters are printed (see
+.SM
+.B PARAMETERS
+below).  The
+.SM
+.B PS3
+prompt is then displayed and a line read from the standard input.
+If the line consists of a number corresponding to one of
+the displayed words, then the value of
+.I name
+is set to that word.  If the line is empty, the words and prompt
+are displayed again.  If EOF is read, the command completes.  Any
+other value read causes
+.I name
+to be set to null.  The line read is saved in the variable
+.SM
+.BR REPLY .
+The
+.I list
+is executed after each selection until a
+.B break
+command is executed.
+The exit status of
+.B select
+is the exit status of the last command executed in
+.IR list ,
+or zero if no commands were executed.
+.TP
+\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \
+... ) \fIlist\fP ;; ] ... \fBesac\fP
+A \fBcase\fP command first expands \fIword\fP, and tries to match
+it against each \fIpattern\fP in turn, using the same matching rules
+as for pathname expansion (see
+.B Pathname Expansion
+below).
+The \fIword\fP is expanded using tilde
+expansion, parameter and variable expansion, arithmetic substitution,
+command substitution, process substitution and quote removal.
+Each \fIpattern\fP examined is expanded using tilde
+expansion, parameter and variable expansion, arithmetic substitution,
+command substitution, and process substitution.
+If the shell option
+.B nocasematch
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+When a match is found, the corresponding \fIlist\fP is executed.
+If the \fB;;\fP operator is used, no subsequent matches are attempted after
+the first pattern match.
+Using \fB;&\fP in place of \fB;;\fP causes execution to continue with
+the \fIlist\fP associated with the next set of patterns.
+Using \fB;;&\fP in place of \fB;;\fP causes the shell to test the next
+pattern list in the statement, if any, and execute any associated \fIlist\fP
+on a successful match.
+The exit status is zero if no
+pattern matches.  Otherwise, it is the exit status of the
+last command executed in \fIlist\fP.
+.TP
+\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \
+[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \
+[ \fBelse\fP \fIlist\fP; ] \fBfi\fP
+The
+.B if 
+.I list
+is executed.  If its exit status is zero, the
+\fBthen\fP \fIlist\fP is executed.  Otherwise, each \fBelif\fP
+\fIlist\fP is executed in turn, and if its exit status is zero,
+the corresponding \fBthen\fP \fIlist\fP is executed and the
+command completes.  Otherwise, the \fBelse\fP \fIlist\fP is
+executed, if present.  The exit status is the exit status of the
+last command executed, or zero if no condition tested true.
+.TP
+\fBwhile\fP \fIlist-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP
+.PD 0
+.TP
+\fBuntil\fP \fIlist-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP
+.PD
+The \fBwhile\fP command continuously executes the list
+\fIlist-2\fP as long as the last command in the list \fIlist-1\fP returns
+an exit status of zero.  The \fBuntil\fP command is identical
+to the \fBwhile\fP command, except that the test is negated;
+.I list-2
+is executed as long as the last command in
+.I list-1
+returns a non-zero exit status.
+The exit status of the \fBwhile\fP and \fBuntil\fP commands
+is the exit status
+of the last command executed in \fIlist-2\fP, or zero if
+none was executed.
+.SS Coprocesses
+.PP
+A \fIcoprocess\fP is a shell command preceded by the \fBcoproc\fP reserved
+word.
+A coprocess is executed asynchronously in a subshell, as if the command
+had been terminated with the \fB&\fP control operator, with a two-way pipe
+established between the executing shell and the coprocess.
+.PP
+The format for a coprocess is:
+.RS
+.PP
+\fBcoproc\fP [\fINAME\fP] \fIcommand\fP [\fIredirections\fP]
+.RE
+.PP
+This creates a coprocess named \fINAME\fP.
+If \fINAME\fP is not supplied, the default name is \fBCOPROC\fP.
+\fINAME\fP must not be supplied if \fIcommand\fP is a \fIsimple
+command\fP (see above); otherwise, it is interpreted as the first word
+of the simple command.
+When the coprocess is executed, the shell creates an array variable (see
+.B Arrays
+below) named \fINAME\fP in the context of the executing shell.
+The standard output of
+.I command
+is connected via a pipe to a file descriptor in the executing shell,
+and that file descriptor is assigned to \fINAME\fP[0].
+The standard input of
+.I command
+is connected via a pipe to a file descriptor in the executing shell,
+and that file descriptor is assigned to \fINAME\fP[1].
+This pipe is established before any redirections specified by the
+command (see
+.SM
+.B REDIRECTION
+below).
+The file descriptors can be utilized as arguments to shell commands
+and redirections using standard word expansions.
+The file descriptors are not available in subshells.
+The process ID of the shell spawned to execute the coprocess is
+available as the value of the variable \fINAME\fP_PID.
+The \fBwait\fP
+builtin command may be used to wait for the coprocess to terminate.
+.PP
+The return status of a coprocess is the exit status of \fIcommand\fP.
+.SS Shell Function Definitions
+.PP
+A shell function is an object that is called like a simple command and
+executes a compound command with a new set of positional parameters.
+Shell functions are declared as follows:
+.TP
+\fIname\fP () \fIcompound\-command\fP [\fIredirection\fP]
+.PD 0
+.TP
+\fBfunction\fP \fIname\fP [()] \fIcompound\-command\fP [\fIredirection\fP]
+.PD
+This defines a function named \fIname\fP.
+The reserved word \fBfunction\fP is optional.
+If the \fBfunction\fP reserved word is supplied, the parentheses are optional.
+The \fIbody\fP of the function is the compound command
+.I compound\-command 
+(see \fBCompound Commands\fP above).
+That command is usually a \fIlist\fP of commands between { and }, but
+may be any command listed under \fBCompound Commands\fP above.
+\fIcompound\-command\fP is executed whenever \fIname\fP is specified as the
+name of a simple command.
+When in \fIposix mode\fP, \fIname\fP may not be the name of one of the
+POSIX \fIspecial builtins\fP.
+Any redirections (see
+.SM
+.B REDIRECTION
+below) specified when a function is defined are performed
+when the function is executed.
+The exit status of a function definition is zero unless a syntax error
+occurs or a readonly function with the same name already exists.
+When executed, the exit status of a function is the exit status of the
+last command executed in the body.  (See
+.SM
+.B FUNCTIONS
+below.)
+.SH COMMENTS
+In a non-interactive shell, or an interactive shell in which the
+.B interactive_comments
+option to the
+.B shopt
+builtin is enabled (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), a word beginning with
+.B #
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the
+.B interactive_comments
+option enabled does not allow comments.  The
+.B interactive_comments
+option is on by default in interactive shells.
+.SH QUOTING
+\fIQuoting\fP is used to remove the special meaning of certain
+characters or words to the shell.  Quoting can be used to 
+disable special treatment for special characters, to prevent
+reserved words from being recognized as such, and to prevent
+parameter expansion.
+.PP
+Each of the \fImetacharacters\fP listed above under
+.SM
+.B DEFINITIONS
+has special meaning to the shell and must be quoted if it is to
+represent itself.
+.PP
+When the command history expansion facilities are being used
+(see
+.SM
+.B HISTORY EXPANSION
+below), the
+\fIhistory expansion\fP character, usually \fB!\fP, must be quoted
+to prevent history expansion.
+.PP
+There are three quoting mechanisms: the
+.IR "escape character" ,
+single quotes, and double quotes.
+.PP
+A non-quoted backslash (\fB\e\fP) is the
+.IR "escape character" .
+It preserves the literal value of the next character that follows,
+with the exception of <newline>.  If a \fB\e\fP<newline> pair
+appears, and the backslash is not itself quoted, the \fB\e\fP<newline>
+is treated as a line continuation (that is, it is removed from the
+input stream and effectively ignored).
+.PP
+Enclosing characters in single quotes preserves the literal value
+of each character within the quotes.  A single quote may not occur
+between single quotes, even when preceded by a backslash.
+.PP
+Enclosing characters in double quotes preserves the literal value
+of all characters within the quotes, with the exception of
+.BR $ ,
+.BR \` ,
+.BR \e ,
+and, when history expansion is enabled,
+.BR ! .
+The characters
+.B $
+and
+.B \`
+retain their special meaning within double quotes.  The backslash
+retains its special meaning only when followed by one of the following
+characters:
+.BR $ ,
+.BR \` ,
+\^\fB"\fP\^,
+.BR \e ,
+or
+.BR <newline> .
+A double quote may be quoted within double quotes by preceding it with
+a backslash.
+If enabled, history expansion will be performed unless an
+.B !
+appearing in double quotes is escaped using a backslash.
+The backslash preceding the
+.B !
+is not removed.
+.PP
+The special parameters
+.B *
+and
+.B @
+have special meaning when in double
+quotes (see
+.SM
+.B PARAMETERS
+below).
+.PP
+Words of the form \fB$\fP\(aq\fIstring\fP\(aq are treated specially.  The
+word expands to \fIstring\fP, with backslash-escaped characters replaced
+as specified by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ee
+.TP
+.B \eE
+an escape character
+.TP   
+.B \ef
+form feed
+.TP  
+.B \en
+new line
+.TP     
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP   
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e\(aq
+single quote
+.TP
+.B \e\(dq
+double quote
+.TP   
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.TP
+.B \eu\fIHHHH\fP
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+\fIHHHH\fP (one to four hex digits)
+.TP
+.B \eU\fIHHHHHHHH\fP
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+\fIHHHHHHHH\fP (one to eight hex digits)
+.TP
+.B \ec\fIx\fP
+a control-\fIx\fP character
+.PD
+.RE
+.LP
+The expanded result is single-quoted, as if the dollar sign had
+not been present.
+.PP
+A double-quoted string preceded by a dollar sign (\fB$\fP\(dq\fIstring\fP\(dq)
+will cause the string to be translated according to the current locale.
+If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+.SH PARAMETERS
+A
+.I parameter
+is an entity that stores values.
+It can be a
+.IR name ,
+a number, or one of the special characters listed below under
+.BR "Special Parameters" .
+A
+.I variable
+is a parameter denoted by a
+.IR name .
+A variable has a \fIvalue\fP and zero or more \fIattributes\fP.
+Attributes are assigned using the
+.B declare
+builtin command (see
+.B declare
+below in
+.SM
+.BR "SHELL BUILTIN COMMANDS" ).
+.PP
+A parameter is set if it has been assigned a value.  The null string is
+a valid value.  Once a variable is set, it may be unset only by using
+the
+.B unset
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.PP
+A
+.I variable
+may be assigned to by a statement of the form
+.RS
+.PP
+\fIname\fP=[\fIvalue\fP]
+.RE
+.PP
+If
+.I value
+is not given, the variable is assigned the null string.  All
+.I values
+undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (see
+.SM
+.B EXPANSION
+below).  If the variable has its
+.B integer
+attribute set, then
+.I value
+is evaluated as an arithmetic expression even if the $((...)) expansion is
+not used (see
+.B "Arithmetic Expansion"
+below).
+Word splitting is not performed, with the exception
+of \fB"$@"\fP as explained below under
+.BR "Special Parameters" .
+Pathname expansion is not performed.
+Assignment statements may also appear as arguments to the
+.BR alias ,
+.BR declare ,
+.BR typeset ,
+.BR export ,
+.BR readonly ,
+and
+.B local
+builtin commands.
+When in \fIposix mode\fP, these builtins may appear in a command after
+one or more instances of the \fBcommand\fP builtin and retain these
+assignment statement properties.
+.PP
+In the context where an assignment statement is assigning a value
+to a shell variable or array index, the += operator can be used to
+append to or add to the variable's previous value.
+When += is applied to a variable for which the \fIinteger\fP attribute has been
+set, \fIvalue\fP is evaluated as an arithmetic expression and added to the
+variable's current value, which is also evaluated.
+When += is applied to an array variable using compound assignment (see
+.B Arrays
+below), the
+variable's value is not unset (as it is when using =), and new values are
+appended to the array beginning at one greater than the array's maximum index
+(for indexed arrays) or added as additional key\-value pairs in an
+associative array.
+When applied to a string-valued variable, \fIvalue\fP is expanded and
+appended to the variable's value.
+.PP
+A variable can be assigned the \fInameref\fP attribute using the
+\fB\-n\fP option to the \fBdeclare\fP or \fBlocal\fP builtin commands
+(see the descriptions of \fBdeclare\fP and \fBlocal\fP below)
+to create a \fInameref\fP, or a reference to another variable.
+This allows variables to be manipulated indirectly.
+Whenever the nameref variable is referenced or assigned to, the operation
+is actually performed on the variable specified by the nameref variable's
+value.
+A nameref is commonly used within shell functions to refer to a variable
+whose name is passed as an argument to the function.
+For instance, if a variable name is passed to a shell function as its first
+argument, running
+.sp .5
+.RS
+.if t \f(CWdeclare -n ref=$1\fP
+.if n declare -n ref=$1
+.RE
+.sp .5
+inside the function creates a nameref variable \fBref\fP whose value is
+the variable name passed as the first argument.
+References and assignments to \fBref\fP are treated as references and
+assignments to the variable whose name was passed as \fB$1\fP.
+If the control variable in a \fBfor\fP loop has the nameref attribute,
+the list of words can be a list of shell variables, and a name reference
+will be established for each word in the list, in turn, when the loop is
+executed.
+Array variables cannot be given the \fB\-n\fP attribute.
+However, nameref variables can reference array variables and subscripted
+array variables.
+Namerefs can be unset using the \fB\-n\fP option to the \fBunset\fP builtin.
+Otherwise, if \fBunset\fP is executed with the name of a nameref variable
+as an argument, the variable referenced by the nameref variable will be unset.
+.SS Positional Parameters
+.PP
+A
+.I positional parameter
+is a parameter denoted by one or more
+digits, other than the single digit 0.  Positional parameters are
+assigned from the shell's arguments when it is invoked,
+and may be reassigned using the
+.B set
+builtin command.  Positional parameters may not be assigned to
+with assignment statements.  The positional parameters are
+temporarily replaced when a shell function is executed (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces (see
+.SM
+.B EXPANSION
+below).
+.SS Special Parameters
+.PP
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+.PD 0
+.TP
+.B *
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, it expands to a single word
+with the value of each parameter separated by the first character
+of the 
+.SM
+.B IFS
+special variable.  That is, "\fB$*\fP" is equivalent
+to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where
+.I c
+is the first character of the value of the
+.SM
+.B IFS
+variable.  If
+.SM
+.B IFS
+is unset, the parameters are separated by spaces.
+If
+.SM
+.B IFS
+is null, the parameters are joined without intervening separators.
+.TP
+.B @
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, "\fB$@\fP" is equivalent to
+"\fB$1\fP" "\fB$2\fP" ...
+If the double-quoted expansion occurs within a word, the expansion of
+the first parameter is joined with the beginning part of the original
+word, and the expansion of the last parameter is joined with the last
+part of the original word.
+When there are no positional parameters, "\fB$@\fP" and 
+.B $@
+expand to nothing (i.e., they are removed).
+.TP
+.B #
+Expands to the number of positional parameters in decimal.
+.TP
+.B ?
+Expands to the exit status of the most recently executed foreground
+pipeline.
+.TP
+.B \-
+Expands to the current option flags as specified upon invocation, 
+by the
+.B set
+builtin command, or those set by the shell itself
+(such as the
+.B \-i
+option).
+.TP
+.B $
+Expands to the process ID of the shell.  In a () subshell, it
+expands to the process ID of the current shell, not the
+subshell.
+.TP
+.B !
+Expands to the process ID of the most recently executed background
+(asynchronous) command.
+.TP
+.B 0
+Expands to the name of the shell or shell script.  This is set at
+shell initialization.  If
+.B bash
+is invoked with a file of commands,
+.B $0
+is set to the name of that file.  If
+.B bash
+is started with the
+.B \-c
+option, then
+.B $0
+is set to the first argument after the string to be
+executed, if one is present.  Otherwise, it is set
+to the filename used to invoke
+.BR bash ,
+as given by argument zero.
+.TP
+.B _
+At shell startup, set to the absolute pathname used to invoke the
+shell or shell script being executed as passed in the environment
+or argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.
+Also set to the full pathname used to invoke each command executed
+and placed in the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file
+currently being checked.
+.PD
+.SS Shell Variables
+.PP
+The following variables are set by the shell:
+.PP
+.PD 0
+.TP
+.B BASH
+Expands to the full filename used to invoke this instance of
+.BR bash .
+.TP
+.B BASHOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the
+.B \-s
+option to the
+.B shopt
+builtin command (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).  The options appearing in
+.SM
+.B BASHOPTS
+are those reported as
+.I on
+by \fBshopt\fP.
+If this variable is in the environment when
+.B bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.
+This variable is read-only.
+.TP
+.B BASHPID
+Expands to the process ID of the current \fBbash\fP process.
+This differs from \fB$$\fP under certain circumstances, such as subshells
+that do not require \fBbash\fP to be re-initialized.
+.TP
+.B BASH_ALIASES
+An associative array variable whose members correspond to the internal
+list of aliases as maintained by the \fBalias\fP builtin.
+Elements added to this array appear in the alias list; unsetting array
+elements cause aliases to be removed from the alias list.
+.TP
+.B BASH_ARGC
+An array variable whose values are the number of parameters in each
+frame of the current \fBbash\fP execution call stack.
+The number of
+parameters to the current subroutine (shell function or script executed
+with \fB.\fP or \fBsource\fP) is at the top of the stack.
+When a subroutine is executed, the number of parameters passed is pushed onto
+.SM
+.BR BASH_ARGC .
+The shell sets
+.SM
+.B BASH_ARGC
+only when in extended debugging mode (see the description of the
+.B extdebug
+option to the
+.B shopt
+builtin below)
+.TP
+.B BASH_ARGV
+An array variable containing all of the parameters in the current \fBbash\fP
+execution call stack.  The final parameter of the last subroutine call
+is at the top of the stack; the first parameter of the initial call is
+at the bottom.  When a subroutine is executed, the parameters supplied
+are pushed onto
+.SM
+.BR BASH_ARGV .
+The shell sets
+.SM
+.B BASH_ARGV
+only when in extended debugging mode
+(see the description of the
+.B extdebug
+option to the
+.B shopt
+builtin below)
+.TP
+.B BASH_CMDS
+An associative array variable whose members correspond to the internal
+hash table of commands as maintained by the \fBhash\fP builtin.
+Elements added to this array appear in the hash table; unsetting array
+elements cause commands to be removed from the hash table.
+.TP
+.B BASH_COMMAND
+The command currently being executed or about to be executed, unless the
+shell is executing a command as the result of a trap,
+in which case it is the command executing at the time of the trap.
+.TP
+.B BASH_EXECUTION_STRING
+The command argument to the \fB\-c\fP invocation option.
+.TP
+.B BASH_LINENO
+An array variable whose members are the line numbers in source files
+where each corresponding member of
+.SM
+.B FUNCNAME
+was invoked.
+\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source
+file (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) where
+\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called
+(or \fB${BASH_LINENO[\fP\fI$i-1\fP\fB]}\fP if referenced within another
+shell function).
+Use
+.SM
+.B LINENO
+to obtain the current line number.
+.TP
+.B BASH_REMATCH
+An array variable whose members are assigned by the \fB=~\fP binary
+operator to the \fB[[\fP conditional command.
+The element with index 0 is the portion of the string
+matching the entire regular expression.
+The element with index \fIn\fP is the portion of the
+string matching the \fIn\fPth parenthesized subexpression.
+This variable is read-only.
+.TP
+.B BASH_SOURCE
+An array variable whose members are the source filenames
+where the corresponding shell function names in the
+.SM
+.B FUNCNAME
+array variable are defined.
+The shell function
+\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP is defined in the file
+\fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP and called from
+\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP.
+.TP
+.B BASH_SUBSHELL
+Incremented by one within each subshell or subshell environment when
+the shell begins executing in that environment.
+The initial value is 0.
+.TP
+.B BASH_VERSINFO
+A readonly array variable whose members hold version information for
+this instance of
+.BR bash .
+The values assigned to the array members are as follows:
+.sp .5
+.RS
+.TP 24
+.B BASH_VERSINFO[\fR0\fP]
+The major version number (the \fIrelease\fP).
+.TP
+.B BASH_VERSINFO[\fR1\fP]
+The minor version number (the \fIversion\fP).
+.TP
+.B BASH_VERSINFO[\fR2\fP]
+The patch level.
+.TP
+.B BASH_VERSINFO[\fR3\fP]
+The build version.
+.TP
+.B BASH_VERSINFO[\fR4\fP]
+The release status (e.g., \fIbeta1\fP).
+.TP
+.B BASH_VERSINFO[\fR5\fP]
+The value of
+.SM
+.BR MACHTYPE .
+.RE
+.TP
+.B BASH_VERSION
+Expands to a string describing the version of this instance of
+.BR bash .
+.TP
+.B COMP_CWORD
+An index into \fB${COMP_WORDS}\fP of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_KEY
+The key (or final key of a key sequence) used to invoke the current
+completion function.
+.TP
+.B COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_POINT
+The index of the current cursor position relative to the beginning of
+the current command.
+If the current cursor position is at the end of the current command,
+the value of this variable is equal to \fB${#COMP_LINE}\fP.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_TYPE
+Set to an integer value corresponding to the type of completion attempted
+that caused a completion function to be called:
+\fITAB\fP, for normal completion,
+\fI?\fP, for listing completions after successive tabs,
+\fI!\fP, for listing alternatives on partial word completion,
+\fI@\fP, to list completions if the word is not unmodified,
+or
+\fI%\fP, for menu completion.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_WORDBREAKS
+The set of characters that the \fBreadline\fP library treats as word
+separators when performing word completion.
+If
+.SM
+.B COMP_WORDBREAKS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B COMP_WORDS
+An array variable (see \fBArrays\fP below) consisting of the individual
+words in the current command line.
+The line is split into words as \fBreadline\fP would split it, using
+.SM
+.B COMP_WORDBREAKS
+as described above.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COPROC
+An array variable (see \fBArrays\fP below) created to hold the file descriptors
+for output from and input to an unnamed coprocess (see \fBCoprocesses\fP
+above).
+.TP
+.B DIRSTACK
+An array variable (see
+.B Arrays
+below) containing the current contents of the directory stack.
+Directories appear in the stack in the order they are displayed by the
+.B dirs
+builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the
+.B pushd
+and
+.B popd
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If
+.SM
+.B DIRSTACK
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B EUID
+Expands to the effective user ID of the current user, initialized at
+shell startup.  This variable is readonly.
+.TP
+.B FUNCNAME
+An array variable containing the names of all shell functions
+currently in the execution call stack.
+The element with index 0 is the name of any currently-executing
+shell function.
+The bottom-most element (the one with the highest index) is
+.if t \f(CW"main"\fP.
+.if n "main".
+This variable exists only when a shell function is executing.
+Assignments to
+.SM
+.B FUNCNAME
+have no effect and return an error status.
+If
+.SM
+.B FUNCNAME
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.if t .sp 0.5
+.if n .sp 1
+This variable can be used with \fBBASH_LINENO\fP and \fBBASH_SOURCE\fP.
+Each element of \fBFUNCNAME\fP has corresponding elements in
+\fBBASH_LINENO\fP and \fBBASH_SOURCE\fP to describe the call stack.
+For instance, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called from the file
+\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP at line number
+\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP.
+The \fBcaller\fP builtin displays the current call stack using this
+information.
+.TP
+.B GROUPS
+An array variable containing the list of groups of which the current
+user is a member.
+Assignments to    
+.SM
+.B GROUPS
+have no effect and return an error status.
+If
+.SM
+.B GROUPS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HISTCMD
+The history number, or index in the history list, of the current
+command.
+If
+.SM
+.B HISTCMD
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HOSTNAME
+Automatically set to the name of the current host.
+.TP
+.B HOSTTYPE
+Automatically set to a string that uniquely
+describes the type of machine on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B LINENO
+Each time this parameter is referenced, the shell substitutes
+a decimal number representing the current sequential line number
+(starting with 1) within a script or function.  When not in a
+script or function, the value substituted is not guaranteed to
+be meaningful.
+If
+.SM
+.B LINENO
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B MACHTYPE
+Automatically set to a string that fully describes the system
+type on which
+.B bash
+is executing, in the standard GNU \fIcpu-company-system\fP format.
+The default is system-dependent.
+.TP
+.B MAPFILE
+An array variable (see \fBArrays\fP below) created to hold the text
+read by the \fBmapfile\fP builtin when no variable name is supplied.
+.TP
+.B OLDPWD
+The previous working directory as set by the
+.B cd
+command.
+.TP
+.B OPTARG
+The value of the last option argument processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OPTIND
+The index of the next argument to be processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OSTYPE
+Automatically set to a string that
+describes the operating system on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B PIPESTATUS
+An array variable (see
+.B Arrays
+below) containing a list of exit status values from the processes
+in the most-recently-executed foreground pipeline (which may
+contain only a single command).
+.TP
+.B PPID
+The process ID of the shell's parent.  This variable is readonly.
+.TP
+.B PWD
+The current working directory as set by the
+.B cd
+command.
+.TP
+.B RANDOM
+Each time this parameter is referenced, a random integer between
+0 and 32767 is
+generated.  The sequence of random numbers may be initialized by assigning
+a value to
+.SM
+.BR RANDOM .
+If
+.SM
+.B RANDOM
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B READLINE_LINE
+The contents of the
+.B readline
+line buffer, for use with
+.if t \f(CWbind -x\fP
+.if n "bind -x"
+(see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.TP
+.B READLINE_POINT
+The position of the insertion point in the
+.B readline
+line buffer, for use with
+.if t \f(CWbind -x\fP
+.if n "bind -x"
+(see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.TP
+.B REPLY
+Set to the line of input read by the
+.B read
+builtin command when no arguments are supplied.
+.TP
+.B SECONDS
+Each time this parameter is
+referenced, the number of seconds since shell invocation is returned.  If a
+value is assigned to 
+.SM
+.BR SECONDS ,
+the value returned upon subsequent
+references is
+the number of seconds since the assignment plus the value assigned.
+If
+.SM
+.B SECONDS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).  The options appearing in
+.SM
+.B SHELLOPTS
+are those reported as
+.I on
+by \fBset \-o\fP.
+If this variable is in the environment when
+.B bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.
+This variable is read-only.
+.TP
+.B SHLVL
+Incremented by one each time an instance of
+.B bash
+is started.
+.TP
+.B UID
+Expands to the user ID of the current user, initialized at shell startup.
+This variable is readonly.
+.PD
+.PP
+The following variables are used by the shell.  In some cases,
+.B bash
+assigns a default value to a variable; these cases are noted
+below.
+.PP
+.PD 0
+.TP
+.B BASH_ENV
+If this parameter is set when \fBbash\fP is executing a shell script,
+its value is interpreted as a filename containing commands to
+initialize the shell, as in
+.IR ~/.bashrc .
+The value of
+.SM
+.B BASH_ENV
+is subjected to parameter expansion, command substitution, and arithmetic
+expansion before being interpreted as a filename.
+.SM
+.B PATH
+is not used to search for the resultant filename.
+.TP
+.B BASH_XTRACEFD
+If set to an integer corresponding to a valid file descriptor, \fBbash\fP
+will write the trace output generated when
+.if t \f(CWset -x\fP
+.if n \fIset -x\fP
+is enabled to that file descriptor.
+The file descriptor is closed when
+.SM
+.B BASH_XTRACEFD
+is unset or assigned a new value.
+Unsetting
+.SM
+.B BASH_XTRACEFD
+or assigning it the empty string causes the
+trace output to be sent to the standard error.
+Note that setting
+.SM
+.B BASH_XTRACEFD
+to 2 (the standard error file
+descriptor) and then unsetting it will result in the standard error
+being closed.
+.TP
+.B CDPATH
+The search path for the
+.B cd
+command.
+This is a colon-separated list of directories in which the shell looks
+for destination directories specified by the
+.B cd
+command.
+A sample value is
+.if t \f(CW".:~:/usr"\fP.
+.if n ".:~:/usr".
+.TP
+.B COLUMNS
+Used by the \fBselect\fP compound command to determine the terminal width
+when printing selection lists.  Automatically set in an interactive shell
+upon receipt of a
+.SM
+.BR SIGWINCH .
+.TP
+.B COMPREPLY
+An array variable from which \fBbash\fP reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (see \fBProgrammable Completion\fP below).
+Each array element contains one possible completion.
+.TP
+.B EMACS
+If \fBbash\fP finds this variable in the environment when the shell starts
+with value
+.if t \f(CWt\fP,
+.if n "t",
+it assumes that the shell is running in an Emacs shell buffer and disables
+line editing.
+.TP
+.B ENV
+Similar to
+.SM
+.BR BASH_ENV ;
+used when the shell is invoked in POSIX mode.
+.TP
+.B FCEDIT
+The default editor for the
+.B fc
+builtin command.
+.TP
+.B FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion (see
+.SM
+.B READLINE
+below).
+A filename whose suffix matches one of the entries in 
+.SM
+.B FIGNORE
+is excluded from the list of matched filenames.
+A sample value is
+.if t \f(CW".o:~"\fP.
+.if n ".o:~".
+.TP
+.B FUNCNEST
+If set to a numeric value greater than 0, defines a maximum function
+nesting level.  Function invocations that exceed this nesting level
+will cause the current command to abort.
+.TP
+.B GLOBIGNORE
+A colon-separated list of patterns defining the set of filenames to
+be ignored by pathname expansion.
+If a filename matched by a pathname expansion pattern also matches one
+of the patterns in
+.SM
+.BR GLOBIGNORE ,
+it is removed from the list of matches.
+.TP
+.B HISTCONTROL
+A colon-separated list of values controlling how commands are saved on
+the history list.
+If the list of values includes
+.IR ignorespace ,
+lines which begin with a
+.B space
+character are not saved in the history list.
+A value of 
+.I ignoredups
+causes lines matching the previous history entry to not be saved.
+A value of
+.I ignoreboth
+is shorthand for \fIignorespace\fP and \fIignoredups\fP.
+A value of
+.IR erasedups
+causes all previous lines matching the current line to be removed from
+the history list before that line is saved.
+Any value not in the above list is ignored.
+If
+.SM
+.B HISTCONTROL
+is unset, or does not include a valid value,
+all lines read by the shell parser are saved on the history list,
+subject to the value of
+.SM
+.BR HISTIGNORE .
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.SM
+.BR HISTCONTROL .
+.TP
+.B HISTFILE
+The name of the file in which command history is saved (see
+.SM
+.B HISTORY
+below).  The default value is \fI~/.bash_history\fP.  If unset, the
+command history is not saved when a shell exits.
+.TP
+.B HISTFILESIZE
+The maximum number of lines contained in the history file.  When this
+variable is assigned a value, the history file is truncated, if
+necessary,
+to contain no more than that number of lines by removing the oldest entries.
+The history file is also truncated to this size after
+writing it when a shell exits.
+If the value is 0, the history file is truncated to zero size.
+Non-numeric values and numeric values less than zero inhibit truncation.
+The shell sets the default value to the value of \fBHISTSIZE\fP
+after reading any startup files.
+.TP
+.B HISTIGNORE
+A colon-separated list of patterns used to decide which command lines
+should be saved on the history list.  Each pattern is anchored at the
+beginning of the line and must match the complete line (no implicit
+`\fB*\fP' is appended).  Each pattern is tested against the line
+after the checks specified by
+.SM
+.B HISTCONTROL
+are applied.
+In addition to the normal shell pattern matching characters, `\fB&\fP'
+matches the previous history line.  `\fB&\fP' may be escaped using a
+backslash; the backslash is removed before attempting a match.
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.SM
+.BR HISTIGNORE .
+.TP
+.B HISTSIZE
+The number of commands to remember in the command history (see
+.SM
+.B HISTORY
+below).
+If the value is 0, commands are not saved in the history list.
+Numeric values less than zero result in every command being saved
+on the history list (there is no limit).
+The shell sets the default value to 500 after reading any startup files.
+.TP
+.B HISTTIMEFORMAT
+If this variable is set and not null, its value is used as a format string
+for \fIstrftime\fP(3) to print the time stamp associated with each history
+entry displayed by the \fBhistory\fP builtin.
+If this variable is set, time stamps are written to the history file so
+they may be preserved across shell sessions.
+This uses the history comment character to distinguish timestamps from
+other history lines.
+.TP
+.B HOME
+The home directory of the current user; the default argument for the
+\fBcd\fP builtin command.
+The value of this variable is also used when performing tilde expansion.
+.TP
+.B HOSTFILE
+Contains the name of a file in the same format as
+.FN /etc/hosts
+that should be read when the shell needs to complete a
+hostname.
+The list of possible hostname completions may be changed while the
+shell is running;
+the next time hostname completion is attempted after the
+value is changed,
+.B bash
+adds the contents of the new file to the existing list.
+If
+.SM
+.B HOSTFILE
+is set, but has no value, or does not name a readable file,
+\fBbash\fP attempts to read
+.FN /etc/hosts
+to obtain the list of possible hostname completions.
+When
+.SM
+.B HOSTFILE
+is unset, the hostname list is cleared.
+.TP
+.B IFS
+The
+.I Internal Field Separator
+that is used
+for word splitting after expansion and to
+split lines into words with the
+.B read
+builtin command.  The default value is
+``<space><tab><newline>''.
+.TP
+.B IGNOREEOF
+Controls the
+action of an interactive shell on receipt of an
+.SM
+.B EOF
+character as the sole input.  If set, the value is the number of
+consecutive
+.SM
+.B EOF
+characters which must be
+typed as the first characters on an input line before
+.B bash
+exits.  If the variable exists but does not have a numeric value, or
+has no value, the default value is 10.  If it does not exist,
+.SM
+.B EOF
+signifies the end of input to the shell.
+.TP
+.B INPUTRC
+The filename for the
+.B readline
+startup file, overriding the default of
+.FN ~/.inputrc
+(see
+.SM
+.B READLINE
+below).
+.TP
+.B LANG
+Used to determine the locale category for any category not specifically
+selected with a variable starting with \fBLC_\fP.
+.TP
+.B LC_ALL
+This variable overrides the value of
+.SM
+.B LANG
+and any other
+\fBLC_\fP variable specifying a locale category.
+.TP
+.B LC_COLLATE
+This variable determines the collation order used when sorting the
+results of pathname expansion, and determines the behavior of range
+expressions, equivalence classes, and collating sequences within
+pathname expansion and pattern matching.
+.TP
+.B LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within pathname expansion and pattern
+matching.
+.TP
+.B LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a \fB$\fP.
+.TP
+.B LC_NUMERIC
+This variable determines the locale category used for number formatting.
+.TP
+.B LINES
+Used by the \fBselect\fP compound command to determine the column length
+for printing selection lists.  Automatically set by an interactive shell
+upon receipt of a
+.SM
+.BR SIGWINCH .
+.TP
+.B MAIL
+If this parameter is set to a file or directory name and the
+.SM
+.B MAILPATH
+variable is not set,
+.B bash
+informs the user of the arrival of mail in the specified file or
+Maildir-format directory.
+.TP
+.B MAILCHECK
+Specifies how
+often (in seconds)
+.B bash
+checks for mail.  The default is 60 seconds.  When it is time to check
+for mail, the shell does so before displaying the primary prompt.
+If this variable is unset, or set to a value that is not a number
+greater than or equal to zero, the shell disables mail checking.
+.TP
+.B MAILPATH
+A colon-separated list of filenames to be checked for mail. 
+The message to be printed when mail arrives in a particular file
+may be specified by separating the filename from the message with a `?'.
+When used in the text of the message, \fB$_\fP expands to the name of
+the current mailfile. 
+Example:
+.RS
+.PP
+\fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"\(aq
+.PP
+.B Bash
+supplies a default value for this variable, but the location of the user
+mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP).
+.RE
+.TP
+.B OPTERR
+If set to the value 1,
+.B bash
+displays error messages generated by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SM
+.B OPTERR
+is initialized to 1 each time the shell is invoked or a shell
+script is executed.
+.TP
+.B PATH
+The search path for commands.  It
+is a colon-separated list of directories in which
+the shell looks for commands (see
+.SM
+.B COMMAND EXECUTION
+below).
+A zero-length (null) directory name in the value of
+.SM
+.B PATH
+indicates the current directory.
+A null directory name may appear as two adjacent colons, or as an initial
+or trailing colon.
+The default path is system-dependent,
+and is set by the administrator who installs
+.BR bash .
+A common value is
+.if t \f(CW/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin\fP.
+.if n ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
+.TP
+.B POSIXLY_CORRECT
+If this variable is in the environment when \fBbash\fP starts, the shell
+enters \fIposix mode\fP before reading the startup files, as if the
+.B \-\-posix
+invocation option had been supplied.  If it is set while the shell is
+running, \fBbash\fP enables \fIposix mode\fP, as if the command
+.if t \f(CWset -o posix\fP
+.if n \fIset -o posix\fP
+had been executed.
+.TP
+.B PROMPT_COMMAND
+If set, the value is executed as a command prior to issuing each primary
+prompt.
+.TP
+.B PROMPT_DIRTRIM
+If set to a number greater than zero, the value is used as the number of
+trailing directory components to retain when expanding the \fB\ew\fP and
+\fB\eW\fP prompt string escapes (see
+.SM
+.B PROMPTING
+below).  Characters removed are replaced with an ellipsis.
+.TP
+.B PS1
+The value of this parameter is expanded (see
+.SM
+.B PROMPTING
+below) and used as the primary prompt string.  The default value is
+``\fB\es\-\ev\e$ \fP''.
+.TP
+.B PS2
+The value of this parameter is expanded as with
+.SM
+.B PS1
+and used as the secondary prompt string.  The default is
+``\fB> \fP''.
+.TP
+.B PS3
+The value of this parameter is used as the prompt for the
+.B select
+command (see
+.SM
+.B SHELL GRAMMAR
+above).
+.TP
+.B PS4
+The value of this parameter is expanded as with
+.SM
+.B PS1
+and the value is printed before each command
+.B bash
+displays during an execution trace.  The first character of
+.SM
+.B PS4
+is replicated multiple times, as necessary, to indicate multiple
+levels of indirection.  The default is ``\fB+ \fP''.
+.TP
+.B SHELL
+The full pathname to the shell is kept in this environment variable.
+If it is not set when the shell starts,
+.B bash
+assigns to it the full pathname of the current user's login shell.
+.TP
+.B TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the
+.B time
+reserved word should be displayed.
+The \fB%\fP character introduces an escape sequence that is
+expanded to a time value or other information.
+The escape sequences and their meanings are as follows; the
+braces denote optional portions.
+.sp .5
+.RS
+.PD 0
+.TP 10
+.B %%
+A literal \fB%\fP.
+.TP
+.B %[\fIp\fP][l]R
+The elapsed time in seconds.
+.TP
+.B %[\fIp\fP][l]U
+The number of CPU seconds spent in user mode.
+.TP
+.B %[\fIp\fP][l]S
+The number of CPU seconds spent in system mode.
+.TP
+.B %P
+The CPU percentage, computed as (%U + %S) / %R.
+.PD
+.RE
+.IP
+The optional \fIp\fP is a digit specifying the \fIprecision\fP,
+the number of fractional digits after a decimal point.
+A value of 0 causes no decimal point or fraction to be output.
+At most three places after the decimal point may be specified;
+values of \fIp\fP greater than 3 are changed to 3.
+If \fIp\fP is not specified, the value 3 is used.
+.IP
+The optional \fBl\fP specifies a longer format, including
+minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs.
+The value of \fIp\fP determines whether or not the fraction is
+included.
+.IP
+If this variable is not set, \fBbash\fP acts as if it had the
+value \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS\(aq\fP.
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+.PD 0
+.TP
+.B TMOUT
+If set to a value greater than zero,
+.SM
+.B TMOUT
+is treated as the
+default timeout for the \fBread\fP builtin.
+The \fBselect\fP command terminates if input does not arrive
+after
+.SM
+.B TMOUT
+seconds when input is coming from a terminal.
+In an interactive shell, the value is interpreted as the
+number of seconds to wait for a line of input after issuing the
+primary prompt.
+.B Bash
+terminates after waiting for that number of seconds if a complete
+line of input does not arrive.
+.TP
+.B TMPDIR
+If set, \fBbash\fP uses its value as the name of a directory in which
+\fBbash\fP creates temporary files for the shell's use.
+.TP
+.B auto_resume
+This variable controls how the shell interacts with the user and
+job control.  If this variable is set, single word simple
+commands without redirections are treated as candidates for resumption
+of an existing stopped job.  There is no ambiguity allowed; if there is
+more than one job beginning with the string typed, the job most recently
+accessed is selected.  The
+.I name
+of a stopped job, in this context, is the command line used to
+start it.
+If set to the value
+.IR exact ,
+the string supplied must match the name of a stopped job exactly;
+if set to
+.IR substring ,
+the string supplied needs to match a substring of the name of a
+stopped job.  The
+.I substring
+value provides functionality analogous to the
+.B %?
+job identifier (see
+.SM
+.B JOB CONTROL
+below).  If set to any other value, the supplied string must
+be a prefix of a stopped job's name; this provides functionality
+analogous to the \fB%\fP\fIstring\fP job identifier.
+.TP
+.B histchars
+The two or three characters which control history expansion
+and tokenization (see
+.SM
+.B HISTORY EXPANSION
+below).  The first character is the \fIhistory expansion\fP character,
+the character which signals the start of a history
+expansion, normally `\fB!\fP'.
+The second character is the \fIquick substitution\fP
+character, which is used as shorthand for re-running the previous
+command entered, substituting one string for another in the command.
+The default is `\fB^\fP'.
+The optional third character is the character
+which indicates that the remainder of the line is a comment when found
+as the first character of a word, normally `\fB#\fP'.  The history
+comment character causes history substitution to be skipped for the
+remaining words on the line.  It does not necessarily cause the shell
+parser to treat the rest of the line as a comment.
+.PD
+.SS Arrays
+.B Bash
+provides one-dimensional indexed and associative array variables.
+Any variable may be used as an indexed array; the
+.B declare
+builtin will explicitly declare an array.
+There is no maximum
+limit on the size of an array, nor any requirement that members
+be indexed or assigned contiguously.
+Indexed arrays are referenced using integers (including arithmetic
+expressions)  and are zero-based; associative arrays are referenced
+using arbitrary strings.
+Unless otherwise noted, indexed array indices must be non-negative integers.
+.PP
+An indexed array is created automatically if any variable is assigned to
+using the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP.  The
+.I subscript
+is treated as an arithmetic expression that must evaluate to a number.
+To explicitly declare an indexed array, use
+.B declare \-a \fIname\fP
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.B declare \-a \fIname\fP[\fIsubscript\fP]
+is also accepted; the \fIsubscript\fP is ignored.
+.PP
+Associative arrays are created using
+.BR "declare \-A \fIname\fP" .
+.PP
+Attributes may be
+specified for an array variable using the
+.B declare
+and
+.B readonly
+builtins.  Each attribute applies to all members of an array.
+.PP
+Arrays are assigned to using compound assignments of the form
+\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each
+\fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP.
+Indexed array assignments do not require anything but \fIstring\fP.
+When assigning to indexed arrays, if the optional brackets and subscript
+are supplied, that index is assigned to;
+otherwise the index of the element assigned is the last index assigned
+to by the statement plus one.  Indexing starts at zero.
+.PP
+When assigning to an associative array, the subscript is required.
+.PP
+This syntax is also accepted by the
+.B declare
+builtin.  Individual array elements may be assigned to using the
+\fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above.
+.PP
+Any element of an array may be referenced using
+${\fIname\fP[\fIsubscript\fP]}.  The braces are required to avoid
+conflicts with pathname expansion.  If
+\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to
+all members of \fIname\fP.  These subscripts differ only when the
+word appears within double quotes.  If the word is double-quoted,
+${\fIname\fP[*]} expands to a single
+word with the value of each array member separated by the first
+character of the
+.SM
+.B IFS
+special variable, and ${\fIname\fP[@]} expands each element of
+\fIname\fP to a separate word.  When there are no array members,
+${\fIname\fP[@]} expands to nothing.
+If the double-quoted expansion occurs within a word, the expansion of
+the first parameter is joined with the beginning part of the original
+word, and the expansion of the last parameter is joined with the last
+part of the original word.
+This is analogous to the expansion
+of the special parameters \fB*\fP and \fB@\fP (see
+.B Special Parameters
+above).  ${#\fIname\fP[\fIsubscript\fP]} expands to the length of
+${\fIname\fP[\fIsubscript\fP]}.  If \fIsubscript\fP is \fB*\fP or
+\fB@\fP, the expansion is the number of elements in the array.
+Referencing an array variable without a subscript is equivalent to
+referencing the array with a subscript of 0.
+If the
+.I subscript
+used to reference an element of an indexed array
+evaluates to a number less than zero, it is used as
+an offset from one greater than the array's maximum index (so a subcript
+of -1 refers to the last element of the array).
+.PP
+An array variable is considered set if a subscript has been assigned a
+value.  The null string is a valid value.
+.PP
+The
+.B unset
+builtin is used to destroy arrays.  \fBunset\fP \fIname\fP[\fIsubscript\fP]
+destroys the array element at index \fIsubscript\fP.
+Care must be taken to avoid unwanted side effects caused by pathname
+expansion.
+\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
+\fBunset\fP \fIname\fP[\fIsubscript\fP], where
+\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
+.PP
+The
+.BR declare ,
+.BR local ,
+and
+.B readonly
+builtins each accept a
+.B \-a
+option to specify an indexed array and a
+.B \-A
+option to specify an associative array.
+If both options are supplied, 
+.B \-A
+takes precedence.
+The
+.B read
+builtin accepts a
+.B \-a
+option to assign a list of words read from the standard input
+to an array.  The
+.B set
+and
+.B declare
+builtins display array values in a way that allows them to be
+reused as assignments.
+.SH EXPANSION
+Expansion is performed on the command line after it has been split into
+words.  There are seven kinds of expansion performed:
+.IR "brace expansion" ,
+.IR "tilde expansion" ,
+.IR "parameter and variable expansion" ,
+.IR "command substitution" ,
+.IR "arithmetic expansion" ,
+.IR "word splitting" ,
+and
+.IR "pathname expansion" .
+.PP
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable and arithmetic expansion and
+command substitution
+(done in a left-to-right fashion), word splitting, and pathname
+expansion.
+.PP
+On systems that can support it, there is an additional expansion
+available: \fIprocess substitution\fP.
+.PP
+Only brace expansion, word splitting, and pathname expansion
+can change the number of words of the expansion; other expansions
+expand a single word to a single word.
+The only exceptions to this are the expansions of
+"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP"
+as explained above (see
+.SM
+.BR PARAMETERS ).
+.SS Brace Expansion
+.PP
+.I "Brace expansion"
+is a mechanism by which arbitrary strings
+may be generated.  This mechanism is similar to
+\fIpathname expansion\fP, but the filenames generated
+need not exist.  Patterns to be brace expanded take
+the form of an optional
+.IR preamble ,
+followed by either a series of comma-separated strings or
+a sequence expression between a pair of braces, followed by
+an optional
+.IR postscript .
+The preamble is prefixed to each string contained
+within the braces, and the postscript is then appended
+to each resulting string, expanding left to right.
+.PP
+Brace expansions may be nested.  The results of each expanded
+string are not sorted; left to right order is preserved.
+For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'.
+.PP
+A sequence expression takes the form
+\fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP,
+where \fIx\fP and \fIy\fP are either integers or single characters,
+and \fIincr\fP, an optional increment, is an integer.
+When integers are supplied, the expression expands to each number between
+\fIx\fP and \fIy\fP, inclusive.
+Supplied integers may be prefixed with \fI0\fP to force each term to have the
+same width.  When either \fIx\fP or \fPy\fP begins with a zero, the shell
+attempts to force all generated terms to contain the same number of digits,
+zero-padding where necessary.
+When characters are supplied, the expression expands to each character
+lexicographically between \fIx\fP and \fIy\fP, inclusive.  Note that
+both \fIx\fP and \fIy\fP must be of the same type.
+When the increment is supplied, it is used as the difference between
+each term.  The default increment is 1 or -1 as appropriate.
+.PP
+Brace expansion is performed before any other expansions,
+and any characters special to other expansions are preserved
+in the result.  It is strictly textual.
+.B Bash
+does not apply any syntactic interpretation to the context of the
+expansion or the text between the braces.
+.PP
+A correctly-formed brace expansion must contain unquoted opening
+and closing braces, and at least one unquoted comma or a valid
+sequence expression.
+Any incorrectly formed brace expansion is left unchanged.
+A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string \fB${\fP
+is not considered eligible for brace expansion.
+.PP
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+.RS
+.PP
+mkdir /usr/local/src/bash/{old,new,dist,bugs}
+.RE
+or
+.RS
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+.RE
+.PP
+Brace expansion introduces a slight incompatibility with
+historical versions of
+.BR sh .
+.B sh
+does not treat opening or closing braces specially when they
+appear as part of a word, and preserves them in the output.
+.B Bash
+removes braces from words as a consequence of brace
+expansion.  For example, a word entered to
+.B sh
+as \fIfile{1,2}\fP
+appears identically in the output.  The same word is
+output as
+.I file1 file2
+after expansion by
+.BR bash .
+If strict compatibility with
+.B sh
+is desired, start
+.B bash
+with the
+.B +B 
+option or disable brace expansion with the
+.B +B
+option to the
+.B set
+command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS Tilde Expansion
+.PP
+If a word begins with an unquoted tilde character (`\fB~\fP'), all of
+the characters preceding the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a \fItilde-prefix\fP.
+If none of the characters in the tilde-prefix are quoted, the
+characters in the tilde-prefix following the tilde are treated as a
+possible \fIlogin name\fP.
+If this login name is the null string, the tilde is replaced with the
+value of the shell parameter
+.SM
+.BR HOME .
+If
+.SM
+.B HOME
+is unset, the home directory of the user executing the shell is
+substituted instead.
+Otherwise, the tilde-prefix is replaced with the home directory
+associated with the specified login name.
+.PP
+If the tilde-prefix is a `~+', the value of the shell variable
+.SM
+.B PWD
+replaces the tilde-prefix.
+If the tilde-prefix is a `~\-', the value of the shell variable
+.SM
+.BR OLDPWD ,
+if it is set, is substituted.
+If the characters following the tilde in the tilde-prefix consist
+of a number \fIN\fP, optionally prefixed
+by a `+' or a `\-', the tilde-prefix is replaced with the corresponding
+element from the directory stack, as it would be displayed by the
+.B dirs
+builtin invoked with the tilde-prefix as an argument.
+If the characters following the tilde in the tilde-prefix consist of a
+number without a leading `+' or `\-', `+' is assumed.
+.PP
+If the login name is invalid, or the tilde expansion fails, the word
+is unchanged.
+.PP
+Each variable assignment is checked for unquoted tilde-prefixes immediately
+following a
+.B :
+or the first
+.BR = .
+In these cases, tilde expansion is also performed.
+Consequently, one may use filenames with tildes in assignments to
+.SM
+.BR PATH ,
+.SM
+.BR MAILPATH ,
+and
+.SM
+.BR CDPATH ,
+and the shell assigns the expanded value.
+.SS Parameter Expansion
+.PP
+The `\fB$\fP' character introduces parameter expansion,
+command substitution, or arithmetic expansion.  The parameter name
+or symbol to be expanded may be enclosed in braces, which
+are optional but serve to protect the variable to be expanded from
+characters immediately following it which could be
+interpreted as part of the name.
+.PP
+When braces are used, the matching ending brace is the first `\fB}\fP'
+not escaped by a backslash or within a quoted string, and not within an
+embedded arithmetic expansion, command substitution, or parameter
+expansion.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP}
+The value of \fIparameter\fP is substituted.  The braces are required
+when
+.I parameter
+is a positional parameter with more than one digit,
+or when
+.I parameter
+is followed by a character which is not to be
+interpreted as part of its name.
+The \fIparameter\fP is a shell parameter as described above
+\fBPARAMETERS\fP) or an array reference (\fBArrays\fP).
+.PD
+.PP
+If the first character of \fIparameter\fP is an exclamation point (\fB!\fP),
+it introduces a level of variable indirection.
+\fBBash\fP uses the value of the variable formed from the rest of
+\fIparameter\fP as the name of the variable; this variable is then
+expanded and that value is used in the rest of the substitution, rather
+than the value of \fIparameter\fP itself.
+This is known as \fIindirect expansion\fP.
+The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\fP} and
+${\fB!\fP\fIname\fP[\fI@\fP]} described below.
+The exclamation point must immediately follow the left brace in order to
+introduce indirection.
+.PP
+In each of the cases below, \fIword\fP is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+.PP
+When not performing substring expansion, using the forms documented below
+(e.g., \fB:-\fP),
+\fBbash\fP tests for a parameter that is unset or null.  Omitting the colon
+results in a test only for a parameter that is unset.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP\fB:\-\fP\fIword\fP}
+\fBUse Default Values\fP.  If
+.I parameter
+is unset or null, the expansion of
+.I word
+is substituted.  Otherwise, the value of
+.I parameter
+is substituted.
+.TP
+${\fIparameter\fP\fB:=\fP\fIword\fP}
+\fBAssign Default Values\fP.
+If
+.I parameter
+is unset or null, the expansion of
+.I word
+is assigned to
+.IR parameter .
+The value of
+.I parameter
+is then substituted.  Positional parameters and special parameters may
+not be assigned to in this way.
+.TP
+${\fIparameter\fP\fB:?\fP\fIword\fP}
+\fBDisplay Error if Null or Unset\fP.
+If
+.I parameter
+is null or unset, the expansion of \fIword\fP (or a message to that effect
+if
+.I word
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of \fIparameter\fP is
+substituted.
+.TP
+${\fIparameter\fP\fB:+\fP\fIword\fP}
+\fBUse Alternate Value\fP.
+If
+.I parameter
+is null or unset, nothing is substituted, otherwise the expansion of
+.I word
+is substituted.
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
+.PD
+\fBSubstring Expansion\fP.
+Expands to up to \fIlength\fP characters of the value of \fIparameter\fP
+starting at the character specified by \fIoffset\fP.
+If \fIparameter\fP is \fB@\fP, an indexed array subscripted by
+\fB@\fP or \fB*\fP, or an associative array name, the results differ as
+described below.
+If \fIlength\fP is omitted, expands to the substring of the value of
+\fIparameter\fP starting at the character specified by \fIoffset\fP
+and extending to the end of the value.
+\fIlength\fP and \fIoffset\fP are arithmetic expressions (see
+.SM
+.B
+ARITHMETIC EVALUATION
+below).
+.sp 1
+If \fIoffset\fP evaluates to a number less than zero, the value
+is used as an offset in characters
+from the end of the value of \fIparameter\fP.
+If \fIlength\fP evaluates to a number less than zero,
+it is interpreted as an offset in characters
+from the end of the value of \fIparameter\fP rather than
+a number of characters, and the expansion is the characters between
+\fIoffset\fP and that result.
+Note that a negative offset must be separated from the colon by at least
+one space to avoid being confused with the \fB:-\fP expansion.
+.sp 1
+If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
+parameters beginning at \fIoffset\fP.
+A negative \fIoffset\fP is taken relative to one greater than the greatest
+positional parameter, so an offset of -1 evaluates to the last positional
+parameter.
+It is an expansion error if \fIlength\fP evaluates to a number less than
+zero.
+.sp 1
+If \fIparameter\fP is an indexed array name subscripted by @ or *,
+the result is the \fIlength\fP
+members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}.
+A negative \fIoffset\fP is taken relative to one greater than the maximum
+index of the specified array.
+It is an expansion error if \fIlength\fP evaluates to a number less than
+zero.
+.sp 1
+Substring expansion applied to an associative array produces undefined
+results.
+.sp 1
+Substring indexing is zero-based unless the positional parameters 
+are used, in which case the indexing starts at 1 by default.
+If \fIoffset\fP is 0, and the positional parameters are used, \fB$0\fP is
+prefixed to the list.
+.TP
+${\fB!\fP\fIprefix\fP\fB*\fP}
+.PD 0
+.TP
+${\fB!\fP\fIprefix\fP\fB@\fP}
+.PD
+\fBNames matching prefix\fP.
+Expands to the names of variables whose names begin with \fIprefix\fP,
+separated by the first character of the
+.SM
+.B IFS
+special variable.
+When \fI@\fP is used and the expansion appears within double quotes, each
+variable name expands to a separate word.
+.TP
+${\fB!\fP\fIname\fP[\fI@\fP]}
+.PD 0
+.TP
+${\fB!\fP\fIname\fP[\fI*\fP]}
+.PD
+\fBList of array keys\fP.
+If \fIname\fP is an array variable, expands to the list of array indices
+(keys) assigned in \fIname\fP.
+If \fIname\fP is not an array, expands to 0 if \fIname\fP is set and null
+otherwise.
+When \fI@\fP is used and the expansion appears within double quotes, each
+key expands to a separate word.
+.TP
+${\fB#\fP\fIparameter\fP}
+\fBParameter length\fP.
+The length in characters of the value of \fIparameter\fP is substituted.
+If
+.I parameter
+is
+.B *
+or 
+.BR @ ,
+the value substituted is the number of positional parameters.
+If
+.I parameter
+is an array name subscripted by
+.B *
+or
+.BR @ ,
+the value substituted is the number of elements in the array.
+.TP
+${\fIparameter\fP\fB#\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB##\fP\fIword\fP}
+.PD
+\fBRemove matching prefix pattern\fP.
+The 
+.I word
+is expanded to produce a pattern just as in pathname
+expansion.  If the pattern matches the beginning of
+the value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB#\fP'' case) or the
+longest matching pattern (the ``\fB##\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB%\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB%%\fP\fIword\fP}
+.PD
+\fBRemove matching suffix pattern\fP.
+The \fIword\fP is expanded to produce a pattern just as in
+pathname expansion.
+If the pattern matches a trailing portion of the expanded value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB%\fP'' case) or the
+longest matching pattern (the ``\fB%%\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+\fBPattern substitution\fP.
+The \fIpattern\fP is expanded to produce a pattern just as in
+pathname expansion.
+\fIParameter\fP is expanded and the longest match of \fIpattern\fP
+against its value is replaced with \fIstring\fP.
+If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are
+replaced with \fIstring\fP.  Normally only the first match is replaced.
+If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
+of the expanded value of \fIparameter\fP.
+If \fIpattern\fP begins with \fB%\fP, it must match at the end
+of the expanded value of \fIparameter\fP.
+If \fIstring\fP is null, matches of \fIpattern\fP are deleted
+and the \fB/\fP following \fIpattern\fP may be omitted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB^\fP\fIpattern\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB^^\fP\fIpattern\fP}
+.TP
+${\fIparameter\fP\fB,\fP\fIpattern\fP}
+.TP
+${\fIparameter\fP\fB,,\fP\fIpattern\fP}
+.PD
+\fBCase modification\fP.
+This expansion modifies the case of alphabetic characters in \fIparameter\fP.
+The \fIpattern\fP is expanded to produce a pattern just as in
+pathname expansion.
+Each character in the expanded value of \fIparameter\fP is tested against
+\fIpattern\fP, and, if it matches the pattern, its case is converted.
+The pattern should not attempt to match more than one character.
+The \fB^\fP operator converts lowercase letters matching \fIpattern\fP
+to uppercase; the \fB,\fP operator converts matching uppercase letters
+to lowercase.
+The \fB^^\fP and \fB,,\fP expansions convert each matched character in the
+expanded value; the \fB^\fP and \fB,\fP expansions match and convert only
+the first character in the expanded value.
+If \fIpattern\fP is omitted, it is treated like a \fB?\fP, which matches
+every character.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the case modification operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the case modification operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.SS Command Substitution
+.PP
+\fICommand substitution\fP allows the output of a command to replace
+the command name.  There are two forms:
+.RS
+.PP
+\fB$(\fP\fIcommand\fP\|\fB)\fP
+.RE
+or
+.RS
+\fB\`\fP\fIcommand\fP\fB\`\fP
+.RE
+.PP
+.B Bash
+performs the expansion by executing \fIcommand\fP and
+replacing the command substitution with the standard output of the
+command, with any trailing newlines deleted.
+Embedded newlines are not deleted, but they may be removed during
+word splitting.
+The command substitution \fB$(cat \fIfile\fP)\fR can be replaced by
+the equivalent but faster \fB$(< \fIfile\fP)\fR.
+.PP
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+.BR $ ,
+.BR \` ,
+or
+.BR \e .
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the $(\^\fIcommand\fP\|) form, all characters between the
+parentheses make up the command; none are treated specially.
+.PP
+Command substitutions may be nested.  To nest when using the backquoted form,
+escape the inner backquotes with backslashes.
+.PP
+If the substitution appears within double quotes, word splitting and
+pathname expansion are not performed on the results.
+.SS Arithmetic Expansion
+.PP
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+.RS
+.PP
+\fB$((\fP\fIexpression\fP\fB))\fP
+.RE
+.PP
+The
+.I expression
+is treated as if it were within double quotes, but a double quote
+inside the parentheses is not treated specially.
+All tokens in the expression undergo parameter expansion, string
+expansion, command substitution, and quote removal.
+Arithmetic expansions may be nested.
+.PP
+The evaluation is performed according to the rules listed below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If
+.I expression
+is invalid,
+.B bash
+prints a message indicating failure and no substitution occurs.
+.SS Process Substitution
+.PP
+\fIProcess substitution\fP is supported on systems that support named
+pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files.
+It takes the form of
+\fB<(\fP\fIlist\^\fP\fB)\fP
+or
+\fB>(\fP\fIlist\^\fP\fB)\fP.
+The process \fIlist\fP is run with its input or output connected to a
+\fIFIFO\fP or some file in \fB/dev/fd\fP.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to
+the file will provide input for \fIlist\fP.  If the
+\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an
+argument should be read to obtain the output of \fIlist\fP.
+.PP
+When available, process substitution is performed
+simultaneously with parameter and variable expansion, 
+command substitution,
+and arithmetic expansion.
+.SS Word Splitting
+.PP
+The shell scans the results of
+parameter expansion,
+command substitution,
+and
+arithmetic expansion
+that did not occur within double quotes for
+.IR "word splitting" .
+.PP
+The shell treats each character of
+.SM
+.B IFS
+as a delimiter, and splits the results of the other
+expansions into words on these characters.  If
+.SM
+.B IFS
+is unset, or its
+value is exactly
+.BR <space><tab><newline> ,
+the default, then
+sequences of
+.BR <space> ,
+.BR <tab> ,
+and
+.B <newline>
+at the beginning and end of the results of the previous
+expansions are ignored, and
+any sequence of
+.SM
+.B IFS
+characters not at the beginning or end serves to delimit words.
+If
+.SM
+.B IFS
+has a value other than the default, then sequences of
+the whitespace characters
+.B space
+and
+.B tab
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of
+.SM
+.BR IFS
+(an
+.SM
+.B IFS
+whitespace character).
+Any character in
+.SM
+.B IFS
+that is not
+.SM
+.B IFS
+whitespace, along with any adjacent
+.SM
+.B IFS
+whitespace characters, delimits a field.
+A sequence of
+.SM
+.B IFS
+whitespace characters is also treated as a delimiter.
+If the value of
+.SM
+.B IFS
+is null, no word splitting occurs.
+.PP
+Explicit null arguments (\^\f3"\^"\fP or \^\f3\(aq\^\(aq\fP\^) are retained.
+Unquoted implicit null arguments, resulting from the expansion of
+parameters that have no values, are removed.
+If a parameter with no value is expanded within double quotes, a
+null argument results and is retained.
+.PP
+Note that if no expansion occurs, no splitting
+is performed.
+.SS Pathname Expansion
+.PP
+After word splitting,
+unless the
+.B \-f
+option has been set,
+.B bash
+scans each word for the characters
+.BR * ,
+.BR ? ,
+and
+.BR [ .
+If one of these characters appears, then the word is
+regarded as a
+.IR pattern ,
+and replaced with an alphabetically sorted list of
+filenames matching the pattern
+(see
+.SM
+.B "Pattern Matching"
+below).
+If no matching filenames are found,
+and the shell option
+.B nullglob
+is not enabled, the word is left unchanged.
+If the 
+.B nullglob
+option is set, and no matches are found,
+the word is removed.
+If the
+.B failglob
+shell option is set, and no matches are found, an error message
+is printed and the command is not executed.
+If the shell option
+.B nocaseglob
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+When a pattern is used for pathname expansion,
+the character
+.B ``.''
+at the start of a name or immediately following a slash
+must be matched explicitly, unless the shell option
+.B dotglob
+is set.
+When matching a pathname, the slash character must always be
+matched explicitly.
+In other cases, the
+.B ``.''
+character is not treated specially.
+See the description of
+.B shopt
+below under
+.SM
+.B SHELL BUILTIN COMMANDS
+for a description of the
+.BR nocaseglob ,
+.BR nullglob ,
+.BR failglob ,
+and
+.B dotglob
+shell options.
+.PP
+The
+.SM
+.B GLOBIGNORE
+shell variable may be used to restrict the set of filenames matching a
+.IR pattern .
+If
+.SM
+.B GLOBIGNORE
+is set, each matching filename that also matches one of the patterns in
+.SM
+.B GLOBIGNORE
+is removed from the list of matches.
+The filenames
+.B ``.''
+and
+.B ``..''
+are always ignored when
+.SM
+.B GLOBIGNORE
+is set and not null.  However, setting
+.SM
+.B GLOBIGNORE
+to a non-null value has the effect of enabling the
+.B dotglob
+shell option, so all other filenames beginning with a
+.B ``.''
+will match.
+To get the old behavior of ignoring filenames beginning with a
+.BR ``.'' ,
+make
+.B ``.*''
+one of the patterns in
+.SM
+.BR GLOBIGNORE .
+The
+.B dotglob
+option is disabled when
+.SM
+.B GLOBIGNORE
+is unset.
+.PP
+\fBPattern Matching\fP
+.PP
+Any character that appears in a pattern, other than the special pattern
+characters described below, matches itself.  The NUL character may not
+occur in a pattern.  A backslash escapes the following character; the
+escaping backslash is discarded when matching.
+The special pattern characters must be quoted if
+they are to be matched literally.
+.PP
+The special pattern characters have the following meanings:
+.PP
+.PD 0
+.RS
+.TP
+.B *
+Matches any string, including the null string.
+When the \fBglobstar\fP shell option is enabled, and \fB*\fP is used in
+a pathname expansion context, two adjacent \fB*\fPs used as a single
+pattern will match all files and zero or more directories and
+subdirectories.
+If followed by a \fB/\fP, two adjacent \fB*\fPs will match only directories
+and subdirectories.
+.TP
+.B ?
+Matches any single character.
+.TP
+.B [...]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a
+\fIrange expression\fP;
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+.B [
+is a
+.B !
+or a
+.B ^
+then any character not enclosed is matched.
+The sorting order of characters in range expressions is determined by
+the current locale and the values of the
+.SM
+.B LC_COLLATE
+or
+.SM
+.B LC_ALL
+shell variables, if set.
+To obtain the traditional interpretation of range expressions, where
+.B [a\-d]
+is equivalent to
+.BR [abcd] ,
+set value of the
+.B LC_ALL
+shell variable to
+.BR C ,
+or enable the
+.B globasciiranges
+shell option.
+A 
+.B \-
+may be matched by including it as the first or last character
+in the set.
+A
+.B ]
+may be matched by including it as the first character
+in the set.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and
+.BR ] ,
+\fIcharacter classes\fP can be specified using the syntax
+\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the
+following classes defined in the POSIX standard:
+.PP
+.RS
+.B
+.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
+.if t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
+.br
+A character class matches any character belonging to that class.
+The \fBword\fP character class matches letters, digits, and the character _.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+an \fIequivalence class\fP can be specified using the syntax
+\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the
+same collation weight (as defined by the current locale) as
+the character \fIc\fP.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol
+\fIsymbol\fP.
+.RE
+.RE
+.PD
+.PP
+If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
+builtin, several extended pattern matching operators are recognized.
+In the following description, a \fIpattern-list\fP is a list of one
+or more patterns separated by a \fB|\fP.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+.sp 1
+.PD 0
+.RS
+.TP
+\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or one occurrence of the given patterns
+.TP
+\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or more occurrences of the given patterns
+.TP
+\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches one or more occurrences of the given patterns
+.TP
+\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches one of the given patterns
+.TP
+\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches anything except one of the given patterns
+.RE
+.PD
+.SS Quote Removal
+.PP
+After the preceding expansions, all unquoted occurrences of the
+characters
+.BR \e ,
+.BR \(aq ,
+and \^\f3"\fP\^ that did not result from one of the above
+expansions are removed.
+.SH REDIRECTION
+Before a command is executed, its input and output
+may be
+.I redirected
+using a special notation interpreted by the shell.
+Redirection allows commands' file handles to be
+duplicated, opened, closed,
+made to refer to different files,
+and can change the files the command reads from and writes to.
+Redirection may also be used to modify file handles in the
+current shell execution environment.
+The following redirection
+operators may precede or appear anywhere within a
+.I simple command
+or may follow a
+.IR command .
+Redirections are processed in the order they appear, from
+left to right.
+.PP
+Each redirection that may be preceded by a file descriptor number
+may instead be preceded by a word of the form {\fIvarname\fP}.
+In this case, for each redirection operator except
+>&- and <&-, the shell will allocate a file descriptor greater
+than or equal to 10 and assign it to \fIvarname\fP.
+If >&- or <&- is preceded
+by {\fIvarname\fP}, the value of \fIvarname\fP defines the file
+descriptor to close.
+.PP
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+.BR < ,
+the redirection refers to the standard input (file descriptor
+0).  If the first character of the redirection operator is
+.BR > ,
+the redirection refers to the standard output (file descriptor
+1).
+.PP
+The word following the redirection operator in the following
+descriptions, unless otherwise noted, is subjected to
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, quote removal,
+pathname expansion, and word splitting.
+If it expands to more than one word,
+.B bash
+reports an error.
+.PP
+Note that the order of redirections is significant.  For example, 
+the command
+.RS
+.PP
+ls \fB>\fP dirlist 2\fB>&\fP1
+.RE
+.PP
+directs both standard output and standard error to the file 
+.IR dirlist ,
+while the command
+.RS
+.PP
+ls 2\fB>&\fP1 \fB>\fP dirlist
+.RE
+.PP
+directs only the standard output to file
+.IR dirlist ,
+because the standard error was duplicated from the standard output
+before the standard output was redirected to
+.IR dirlist .
+.PP
+\fBBash\fP handles several filenames specially when they are used in
+redirections, as described in the following table:
+.RS
+.PP
+.PD 0
+.TP
+.B /dev/fd/\fIfd\fP
+If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated.
+.TP
+.B /dev/stdin
+File descriptor 0 is duplicated.
+.TP
+.B /dev/stdout
+File descriptor 1 is duplicated.
+.TP
+.B /dev/stderr
+File descriptor 2 is duplicated.
+.TP
+.B /dev/tcp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+the corresponding TCP socket.
+.TP
+.B /dev/udp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+the corresponding UDP socket.
+.PD
+.RE
+.PP
+A failure to open or create a file causes the redirection to fail.
+.PP
+Redirections using file descriptors greater than 9 should be used with
+care, as they may conflict with file descriptors the shell uses
+internally.
+.SS Redirecting Input
+.PP
+Redirection of input causes the file whose name results from
+the expansion of
+.I word
+to be opened for reading on file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if
+.I n
+is not specified.
+.PP
+The general format for redirecting input is:
+.RS
+.PP
+[\fIn\fP]\fB<\fP\fIword\fP
+.RE
+.SS Redirecting Output
+.PP
+Redirection of output causes the file whose name results from
+the expansion of
+.I word
+to be opened for writing on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created;
+if it does exist it is truncated to zero size.
+.PP
+The general format for redirecting output is:
+.RS
+.PP
+[\fIn\fP]\fB>\fP\fIword\fP
+.RE
+.PP
+If the redirection operator is
+.BR > ,
+and the
+.B noclobber
+option to the
+.B set
+builtin has been enabled, the redirection will fail if the file
+whose name results from the expansion of \fIword\fP exists and is
+a regular file.
+If the redirection operator is
+.BR >| ,
+or the redirection operator is
+.B >
+and the
+.B noclobber
+option to the
+.B set
+builtin command is not enabled, the redirection is attempted even
+if the file named by \fIword\fP exists.
+.SS Appending Redirected Output
+.PP
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of
+.I word
+to be opened for appending on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created.
+.PP
+The general format for appending output is:
+.RS
+.PP
+[\fIn\fP]\fB>>\fP\fIword\fP
+.RE
+.PP
+.SS Redirecting Standard Output and Standard Error
+.PP
+This construct allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be redirected to the file whose name is the
+expansion of
+.IR word .
+.PP
+There are two formats for redirecting standard output and
+standard error:
+.RS
+.PP
+\fB&>\fP\fIword\fP
+.RE
+and
+.RS
+\fB>&\fP\fIword\fP
+.RE
+.PP
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+.RS
+.PP
+\fB>\fP\fIword\fP 2\fB>&\fP1
+.RE
+.PP
+When using the second form, \fIword\fP may not expand to a number or
+\fB\-\fP.  If it does, other redirection operators apply
+(see \fBDuplicating File Descriptors\fP below) for compatibility
+reasons.
+.SS Appending Standard Output and Standard Error
+.PP
+This construct allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be appended to the file whose name is the
+expansion of
+.IR word .
+.PP
+The format for appending standard output and standard error is:
+.RS
+.PP
+\fB&>>\fP\fIword\fP
+.RE
+.PP
+This is semantically equivalent to
+.RS
+.PP
+\fB>>\fP\fIword\fP 2\fB>&\fP1
+.RE
+.PP
+(see \fBDuplicating File Descriptors\fP below).
+.SS Here Documents
+.PP
+This type of redirection instructs the shell to read input from the
+current source until a line containing only
+.I delimiter
+(with no trailing blanks)
+is seen.  All of
+the lines read up to that point are then used as the standard
+input for a command.
+.PP
+The format of here-documents is:
+.RS
+.PP
+.nf
+\fB<<\fP[\fB\-\fP]\fIword\fP
+        \fIhere-document\fP
+\fIdelimiter\fP
+.fi
+.RE
+.PP
+No parameter and variable expansion, command substitution,
+arithmetic expansion, or pathname expansion is performed on
+.IR word .
+If any characters in
+.I word
+are quoted, the
+.I delimiter
+is the result of quote removal on
+.IR word ,
+and the lines in the here-document are not expanded.
+If \fIword\fP is unquoted,
+all lines of the here-document are subjected to
+parameter expansion, command substitution, and arithmetic expansion,
+the character sequence
+.B \e<newline>
+is ignored, and
+.B \e
+must be used to quote the characters
+.BR \e ,
+.BR $ ,
+and
+.BR \` .
+.PP
+If the redirection operator is
+.BR <<\- ,
+then all leading tab characters are stripped from input lines and the
+line containing
+.IR delimiter .
+This allows
+here-documents within shell scripts to be indented in a
+natural fashion.
+.SS "Here Strings"
+A variant of here documents, the format is:
+.RS
+.PP
+.nf
+\fB<<<\fP\fIword\fP
+.fi
+.RE
+.PP
+The \fIword\fP undergoes
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote removal.
+Pathname expansion and word splitting are not performed.
+The result is supplied as a single string to the command on its
+standard input.
+.SS "Duplicating File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIword\fP
+.RE
+.PP
+is used to duplicate input file descriptors.
+If
+.I word
+expands to one or more digits, the file descriptor denoted by
+.I n
+is made to be a copy of that file descriptor.
+If the digits in
+.I word
+do not specify a file descriptor open for input, a redirection error occurs.
+If
+.I word
+evaluates to
+.BR \- ,
+file descriptor
+.I n
+is closed.  If
+.I n
+is not specified, the standard input (file descriptor 0) is used.
+.PP
+The operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIword\fP
+.RE
+.PP
+is used similarly to duplicate output file descriptors.  If
+.I n
+is not specified, the standard output (file descriptor 1) is used.
+If the digits in
+.I word
+do not specify a file descriptor open for output, a redirection error occurs.
+If
+.I word
+evaluates to
+.BR \- ,
+file descriptor
+.I n
+is closed.
+As a special case, if \fIn\fP is omitted, and \fIword\fP does not
+expand to one or more digits or \fB\-\fP, the standard output and standard
+error are redirected as described previously.
+.SS "Moving File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if \fIn\fP is not specified.
+\fIdigit\fP is closed after being duplicated to \fIn\fP.
+.PP
+Similarly, the redirection operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if \fIn\fP is not specified.
+.SS "Opening File Descriptors for Reading and Writing"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<>\fP\fIword\fP
+.RE
+.PP
+causes the file whose name is the expansion of
+.I word
+to be opened for both reading and writing on file descriptor
+.IR n ,
+or on file descriptor 0 if
+.I n
+is not specified.  If the file does not exist, it is created.
+.SH ALIASES
+\fIAliases\fP allow a string to be substituted for a word when it is used
+as the first word of a simple command.
+The shell maintains a list of aliases that may be set and unset with the
+.B alias
+and
+.B unalias
+builtin commands (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+The first word of each simple command, if unquoted,
+is checked to see if it has an
+alias.  If so, that word is replaced by the text of the alias.
+The characters \fB/\fP, \fB$\fP, \fB\`\fP, and \fB=\fP and
+any of the shell \fImetacharacters\fP or quoting characters
+listed above may not appear in an alias name.
+The replacement text may contain any valid shell input,
+including shell metacharacters.
+The first word of the replacement text is tested
+for aliases, but a word that is identical to an alias being expanded
+is not expanded a second time.
+This means that one may alias
+.B ls
+to
+.BR "ls \-F" ,
+for instance, and
+.B bash
+does not try to recursively expand the replacement text.
+If the last character of the alias value is a
+.IR blank ,
+then the next command
+word following the alias is also checked for alias expansion.
+.PP
+Aliases are created and listed with the
+.B alias
+command, and removed with the
+.B unalias
+command.
+.PP
+There is no mechanism for using arguments in the replacement text.
+If arguments are needed, a shell function should be used (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+Aliases are not expanded when the shell is not interactive, unless
+the
+.B expand_aliases
+shell option is set using
+.B shopt
+(see the description of
+.B shopt
+under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP
+below).
+.PP
+The rules concerning the definition and use of aliases are
+somewhat confusing.
+.B Bash
+always reads at least one complete line
+of input before executing any
+of the commands on that line.  Aliases are expanded when a
+command is read, not when it is executed.  Therefore, an
+alias definition appearing on the same line as another
+command does not take effect until the next line of input is read.
+The commands following the alias definition
+on that line are not affected by the new alias.
+This behavior is also an issue when functions are executed.
+Aliases are expanded when a function definition is read,
+not when the function is executed, because a function definition
+is itself a compound command.  As a consequence, aliases
+defined in a function are not available until after that
+function is executed.  To be safe, always put
+alias definitions on a separate line, and do not use
+.B alias
+in compound commands.
+.PP
+For almost every purpose, aliases are superseded by
+shell functions.
+.SH FUNCTIONS
+A shell function, defined as described above under
+.SM
+.BR "SHELL GRAMMAR" ,
+stores a series of commands for later execution.
+When the name of a shell function is used as a simple command name,
+the list of commands associated with that function name is executed.
+Functions are executed in the context of the
+current shell; no new process is created to interpret
+them (contrast this with the execution of a shell script).
+When a function is executed, the arguments to the
+function become the positional parameters
+during its execution.
+The special parameter
+.B #
+is updated to reflect the change.  Special parameter \fB0\fP
+is unchanged.
+The first element of the
+.SM
+.B FUNCNAME
+variable is set to the name of the function while the function
+is executing.
+.PP
+All other aspects of the shell execution
+environment are identical between a function and its caller
+with these exceptions:  the
+.SM
+.B DEBUG
+and
+.B RETURN
+traps (see the description of the
+.B trap
+builtin under
+.SM
+.B SHELL BUILTIN COMMANDS
+below) are not inherited unless the function has been given the
+\fBtrace\fP attribute (see the description of the
+.SM
+.B declare
+builtin below) or the
+\fB\-o functrace\fP shell option has been enabled with
+the \fBset\fP builtin
+(in which case all functions inherit the \fBDEBUG\fP and \fBRETURN\fP traps),
+and the
+.SM
+.B ERR
+trap is not inherited unless the \fB\-o errtrace\fP shell option has
+been enabled.
+.PP
+Variables local to the function may be declared with the
+.B local
+builtin command.  Ordinarily, variables and their values
+are shared between the function and its caller.
+.PP
+The \fBFUNCNEST\fP variable, if set to a numeric value greater
+than 0, defines a maximum function nesting level.  Function
+invocations that exceed the limit cause the entire command to
+abort.
+.PP
+If the builtin command
+.B return
+is executed in a function, the function completes and
+execution resumes with the next command after the function
+call.
+Any command associated with the \fBRETURN\fP trap is executed
+before execution resumes.
+When a function completes, the values of the
+positional parameters and the special parameter
+.B #
+are restored to the values they had prior to the function's
+execution.
+.PP
+Function names and definitions may be listed with the
+.B \-f
+option to the
+.B declare
+or
+.B typeset
+builtin commands.  The
+.B \-F
+option to
+.B declare
+or
+.B typeset
+will list the function names only
+(and optionally the source file and line number, if the \fBextdebug\fP
+shell option is enabled).
+Functions may be exported so that subshells
+automatically have them defined with the
+.B \-f
+option to the 
+.B export
+builtin.
+A function definition may be deleted using the \fB\-f\fP option to
+the
+.B unset
+builtin.
+Note that shell functions and variables with the same name may result
+in multiple identically-named entries in the environment passed to the
+shell's children.
+Care should be taken in cases where this may cause a problem.
+.PP
+Functions may be recursive.
+The \fBFUNCNEST\fP variable may be used to limit the depth of the
+function call stack and restrict the number of function invocations.
+By default, no limit is imposed on the number of recursive calls.
+.SH "ARITHMETIC EVALUATION"
+The shell allows arithmetic expressions to be evaluated, under
+certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin
+commands and \fBArithmetic Expansion\fP).
+Evaluation is done in fixed-width integers with no check for overflow,
+though division by 0 is trapped and flagged as an error.
+The operators and their precedence, associativity, and values
+are the same as in the C language.
+The following list of operators is grouped into levels of
+equal-precedence operators.
+The levels are listed in order of decreasing precedence.
+.PP
+.PD 0
+.TP
+.B \fIid\fP++ \fIid\fP\-\-
+variable post-increment and post-decrement
+.TP
+.B ++\fIid\fP \-\-\fIid\fP
+variable pre-increment and pre-decrement
+.TP
+.B \- +
+unary minus and plus
+.TP
+.B ! ~
+logical and bitwise negation
+.TP
+.B **
+exponentiation
+.TP
+.B * / %
+multiplication, division, remainder
+.TP
+.B + \-
+addition, subtraction
+.TP
+.B << >>
+left and right bitwise shifts
+.TP
+.B <= >= < >
+comparison
+.TP
+.B == !=
+equality and inequality
+.TP
+.B &
+bitwise AND
+.TP
+.B ^
+bitwise exclusive OR
+.TP
+.B |
+bitwise OR
+.TP
+.B &&
+logical AND
+.TP
+.B ||
+logical OR
+.TP
+.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
+conditional operator
+.TP
+.B = *= /= %= += \-= <<= >>= &= ^= |=
+assignment
+.TP
+.B \fIexpr1\fP , \fIexpr2\fP
+comma
+.PD
+.PP
+Shell variables are allowed as operands; parameter expansion is
+performed before the expression is evaluated.
+Within an expression, shell variables may also be referenced by name
+without using the parameter expansion syntax.
+A shell variable that is null or unset evaluates to 0 when referenced
+by name without using the parameter expansion syntax.
+The value of a variable is evaluated as an arithmetic expression
+when it is referenced, or when a variable which has been given the
+\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value.
+A null value evaluates to 0.
+A shell variable need not have its \fIinteger\fP attribute
+turned on to be used in an expression.
+.PP
+Constants with a leading 0 are interpreted as octal numbers.
+A leading 0x or 0X denotes hexadecimal.
+Otherwise, numbers take the form [\fIbase#\fP]n, where the optional \fIbase\fP
+is a decimal number between 2 and 64 representing the arithmetic
+base, and \fIn\fP is a number in that base.
+If \fIbase#\fP is omitted, then base 10 is used.
+When specifying \fIn\fP,
+the digits greater< than 9 are represented by the lowercase letters,
+the uppercase letters, @, and _, in that order.
+If \fIbase\fP is less than or equal to 36, lowercase and uppercase
+letters may be used interchangeably to represent numbers between 10
+and 35.
+.PP
+Operators are evaluated in order of precedence.  Sub-expressions in
+parentheses are evaluated first and may override the precedence
+rules above.
+.SH "CONDITIONAL EXPRESSIONS"
+Conditional expressions are used by the \fB[[\fP compound command and
+the \fBtest\fP and \fB[\fP builtin commands to test file attributes
+and perform string and arithmetic comparisons.
+Expressions are formed from the following unary or binary primaries.
+If any \fIfile\fP argument to one of the primaries is of the form
+\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked.
+If the \fIfile\fP argument to one of the primaries is one of
+\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file
+descriptor 0, 1, or 2, respectively, is checked.
+.PP
+Unless otherwise specified, primaries that operate on files follow symbolic
+links and operate on the target of the link, rather than the link itself.
+.if t .sp 0.5
+.if n .sp 1
+When used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort
+lexicographically using the current locale.
+The \fBtest\fP command sorts using ASCII ordering.
+.sp 1
+.PD 0
+.TP
+.B \-a \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-b \fIfile\fP
+True if \fIfile\fP exists and is a block special file.
+.TP
+.B \-c \fIfile\fP
+True if \fIfile\fP exists and is a character special file.
+.TP
+.B \-d \fIfile\fP
+True if \fIfile\fP exists and is a directory.
+.TP
+.B \-e \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-f \fIfile\fP
+True if \fIfile\fP exists and is a regular file.
+.TP
+.B \-g \fIfile\fP
+True if \fIfile\fP exists and is set-group-id.
+.TP
+.B \-h \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-k \fIfile\fP
+True if \fIfile\fP exists and its ``sticky'' bit is set.
+.TP
+.B \-p \fIfile\fP
+True if \fIfile\fP exists and is a named pipe (FIFO).
+.TP
+.B \-r \fIfile\fP
+True if \fIfile\fP exists and is readable.
+.TP
+.B \-s \fIfile\fP
+True if \fIfile\fP exists and has a size greater than zero.
+.TP
+.B \-t \fIfd\fP
+True if file descriptor
+.I fd
+is open and refers to a terminal.
+.TP
+.B \-u \fIfile\fP
+True if \fIfile\fP exists and its set-user-id bit is set.
+.TP
+.B \-w \fIfile\fP
+True if \fIfile\fP exists and is writable.
+.TP
+.B \-x \fIfile\fP
+True if \fIfile\fP exists and is executable.
+.TP
+.B \-G \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective group id.
+.TP
+.B \-L \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-N \fIfile\fP
+True if \fIfile\fP exists and has been modified since it was last read.
+.TP
+.B \-O \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective user id.
+.TP
+.B \-S \fIfile\fP
+True if \fIfile\fP exists and is a socket.
+.TP
+\fIfile1\fP \fB\-ef\fP \fIfile2\fP
+True if \fIfile1\fP and \fIfile2\fP refer to the same device and
+inode numbers.
+.TP
+\fIfile1\fP \-\fBnt\fP \fIfile2\fP
+True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP,
+or if \fIfile1\fP exists and \fPfile2\fP does not.
+.TP
+\fIfile1\fP \-\fBot\fP \fIfile2\fP
+True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists
+and \fIfile1\fP does not.
+.TP
+.B \-o \fIoptname\fP
+True if the shell option
+.I optname
+is enabled.
+See the list of options under the description of the
+.B \-o
+option to the
+.B set
+builtin below.
+.TP
+.B \-v \fIvarname\fP
+True if the shell variable
+.I varname
+is set (has been assigned a value).
+.TP
+.B \-z \fIstring\fP
+True if the length of \fIstring\fP is zero.
+.TP
+\fIstring\fP
+.PD 0
+.TP
+.B \-n \fIstring\fP
+.PD
+True if the length of
+.I string
+is non-zero.
+.TP
+\fIstring1\fP \fB==\fP \fIstring2\fP
+.PD 0
+.TP
+\fIstring1\fP \fB=\fP \fIstring2\fP
+.PD
+True if the strings are equal.  \fB=\fP should be used
+with the \fBtest\fP command for POSIX conformance.
+.TP
+\fIstring1\fP \fB!=\fP \fIstring2\fP
+True if the strings are not equal.
+.TP
+\fIstring1\fP \fB<\fP \fIstring2\fP
+True if \fIstring1\fP sorts before \fIstring2\fP lexicographically.
+.TP
+\fIstring1\fP \fB>\fP \fIstring2\fP
+True if \fIstring1\fP sorts after \fIstring2\fP lexicographically.
+.TP
+.I \fIarg1\fP \fBOP\fP \fIarg2\fP
+.SM
+.B OP
+is one of
+.BR \-eq ,
+.BR \-ne ,
+.BR \-lt ,
+.BR \-le ,
+.BR \-gt ,
+or
+.BR \-ge .
+These arithmetic binary operators return true if \fIarg1\fP
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to \fIarg2\fP, respectively.
+.I Arg1
+and
+.I arg2
+may be positive or negative integers.
+.PD
+.SH "SIMPLE COMMAND EXPANSION"
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+.IP 1.
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+.IP 2.
+The words that are not variable assignments or redirections are
+expanded.  If any words remain after expansion, the first word
+is taken to be the name of the command and the remaining words are
+the arguments.
+.IP 3.
+Redirections are performed as described above under
+.SM
+.BR REDIRECTION .
+.IP 4.
+The text after the \fB=\fP in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+.PP
+If no command name results, the variable assignments affect the current
+shell environment.  Otherwise, the variables are added to the environment
+of the executed command and do not affect the current shell environment.
+If any of the assignments attempts to assign a value to a readonly variable,
+an error occurs, and the command exits with a non-zero status.
+.PP
+If no command name results, redirections are performed, but do not
+affect the current shell environment.  A redirection error causes the
+command to exit with a non-zero status.
+.PP
+If there is a command name left after expansion, execution proceeds as
+described below.  Otherwise, the command exits.  If one of the expansions
+contained a command substitution, the exit status of the command is
+the exit status of the last command substitution performed.  If there
+were no command substitutions, the command exits with a status of zero.
+.SH "COMMAND EXECUTION"
+After a command has been split into words, if it results in a
+simple command and an optional list of arguments, the following
+actions are taken.
+.PP
+If the command name contains no slashes, the shell attempts to
+locate it.  If there exists a shell function by that name, that
+function is invoked as described above in
+.SM
+.BR FUNCTIONS .
+If the name does not match a function, the shell searches for
+it in the list of shell builtins.  If a match is found, that
+builtin is invoked.
+.PP
+If the name is neither a shell function nor a builtin,
+and contains no slashes,
+.B bash
+searches each element of the
+.SM
+.B PATH
+for a directory containing an executable file by that name.
+.B Bash
+uses a hash table to remember the full pathnames of executable
+files (see
+.B hash
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+A full search of the directories in
+.SM
+.B PATH
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell searches for a defined shell
+function named \fBcommand_not_found_handle\fP.
+If that function exists, it is invoked with the original command and
+the original command's arguments as its arguments, and the function's
+exit status becomes the exit status of the shell.
+If that function is not defined, the shell prints an error
+message and returns an exit status of 127.
+.PP
+If the search is successful, or if the command name contains
+one or more slashes, the shell executes the named program in a
+separate execution environment.
+Argument 0 is set to the name given, and the remaining arguments
+to the command are set to the arguments given, if any.
+.PP
+If this execution fails because the file is not in executable
+format, and the file is not a directory, it is assumed to be
+a \fIshell script\fP, a file
+containing shell commands.  A subshell is spawned to execute
+it.  This subshell reinitializes itself, so
+that the effect is as if a new shell had been invoked
+to handle the script, with the exception that the locations of
+commands remembered by the parent (see
+.B hash
+below under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP)
+are retained by the child.
+.PP
+If the program is a file beginning with
+.BR #! ,
+the remainder of the first line specifies an interpreter
+for the program.  The shell executes the
+specified interpreter on operating systems that do not
+handle this executable format themselves.  The arguments to the 
+interpreter consist of a single optional argument following the
+interpreter name on the first line of the program, followed
+by the name of the program, followed by the command
+arguments, if any.
+.SH COMMAND EXECUTION ENVIRONMENT
+The shell has an \fIexecution environment\fP, which consists of the
+following:
+.IP \(bu
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the \fBexec\fP builtin
+.IP \(bu
+the current working directory as set by \fBcd\fP, \fBpushd\fP, or
+\fBpopd\fP, or inherited by the shell at invocation
+.IP \(bu
+the file creation mode mask as set by \fBumask\fP or inherited from
+the shell's parent
+.IP \(bu
+current traps set by \fBtrap\fP
+.IP \(bu
+shell parameters that are set by variable assignment or with \fBset\fP
+or inherited from the shell's parent in the environment
+.IP \(bu
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+.IP \(bu
+options enabled at invocation (either by default or with command-line
+arguments) or by \fBset\fP
+.IP \(bu
+options enabled by \fBshopt\fP
+.IP \(bu
+shell aliases defined with \fBalias\fP
+.IP \(bu
+various process IDs, including those of background jobs, the value
+of \fB$$\fP, and the value of
+.SM
+.B PPID
+.PP
+When a simple command other than a builtin or shell function
+is to be executed, it
+is invoked in a separate execution environment that consists of
+the following.  Unless otherwise noted, the values are inherited
+from the shell.
+.if n .sp 1
+.IP \(bu
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+.IP \(bu
+the current working directory
+.IP \(bu
+the file creation mode mask
+.IP \(bu
+shell variables and functions marked for export, along with variables
+exported for the command, passed in the environment
+.IP \(bu
+traps caught by the shell are reset to the values inherited from the
+shell's parent, and traps ignored by the shell are ignored
+.PP
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+.PP
+Command substitution, commands grouped with parentheses,
+and asynchronous commands are invoked in a
+subshell environment that is a duplicate of the shell environment,
+except that traps caught by the shell are reset to the values
+that the shell inherited from its parent at invocation.  Builtin
+commands that are invoked as part of a pipeline are also executed in a
+subshell environment.  Changes made to the subshell environment
+cannot affect the shell's execution environment.
+.PP
+Subshells spawned to execute command substitutions inherit the value of
+the \fB\-e\fP option from the parent shell.  When not in \fIposix\fP mode,
+\fBbash\fP clears the \fB\-e\fP option in such subshells.
+.PP
+If a command is followed by a \fB&\fP and job control is not active, the
+default standard input for the command is the empty file \fI/dev/null\fP.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+.SH ENVIRONMENT
+When a program is invoked it is given an array of strings
+called the
+.IR environment .
+This is a list of 
+\fIname\fP\-\fIvalue\fP pairs, of the form
+.IR "name\fR=\fPvalue" .
+.PP
+The shell provides several ways to manipulate the environment.
+On invocation, the shell scans its own environment and
+creates a parameter for each name found, automatically marking
+it for
+.I export
+to child processes.  Executed commands inherit the environment.
+The
+.B export
+and
+.B declare \-x
+commands allow parameters and functions to be added to and
+deleted from the environment.  If the value of a parameter
+in the environment is modified, the new value becomes part
+of the environment, replacing the old.  The environment
+inherited by any executed command consists of the shell's
+initial environment, whose values may be modified in the shell,
+less any pairs removed by the
+.B unset
+command, plus any additions via the
+.B export
+and
+.B declare \-x
+commands.
+.PP
+The environment for any
+.I simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described above in
+.SM
+.BR PARAMETERS .
+These assignment statements affect only the environment seen
+by that command.
+.PP
+If the 
+.B \-k
+option is set (see the
+.B set
+builtin command below), then
+.I all
+parameter assignments are placed in the environment for a command,
+not just those that precede the command name.
+.PP
+When
+.B bash
+invokes an external command, the variable
+.B _
+is set to the full filename of the command and passed to that
+command in its environment.
+.SH "EXIT STATUS"
+.PP
+The exit status of an executed command is the value returned by the
+\fIwaitpid\fP system call or equivalent function.  Exit statuses
+fall between 0 and 255, though, as explained below, the shell may
+use values above 125 specially.  Exit statuses from shell builtins and
+compound commands are also limited to this range. Under certain
+circumstances, the shell will use special values to indicate specific
+failure modes.
+.PP
+For the shell's purposes, a command which exits with a 
+zero exit status has succeeded.  An exit status of zero
+indicates success.  A non-zero exit status indicates failure.
+When a command terminates on a fatal signal \fIN\fP, \fBbash\fP uses
+the value of 128+\fIN\fP as the exit status.
+.PP
+If a command is not found, the child process created to
+execute it returns a status of 127.  If a command is found
+but is not executable, the return status is 126.
+.PP
+If a command fails because of an error during expansion or redirection,
+the exit status is greater than zero.
+.PP
+Shell builtin commands return a status of 0 (\fItrue\fP) if
+successful, and non-zero (\fIfalse\fP) if an error occurs
+while they execute. 
+All builtins return an exit status of 2 to indicate incorrect usage.
+.PP
+\fBBash\fP itself returns the exit status of the last command
+executed, unless a syntax error occurs, in which case it exits
+with a non-zero value.  See also the \fBexit\fP builtin
+command below.
+.SH SIGNALS
+When \fBbash\fP is interactive, in the absence of any traps, it ignores
+.SM
+.B SIGTERM
+(so that \fBkill 0\fP does not kill an interactive shell),
+and
+.SM
+.B SIGINT
+is caught and handled (so that the \fBwait\fP builtin is interruptible).
+In all cases, \fBbash\fP ignores
+.SM
+.BR SIGQUIT .
+If job control is in effect,
+.B bash
+ignores
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+Non-builtin commands run by \fBbash\fP have signal handlers
+set to the values inherited by the shell from its parent.
+When job control is not in effect, asynchronous commands
+ignore
+.SM
+.B SIGINT
+and
+.SM
+.B SIGQUIT
+in addition to these inherited handlers.
+Commands run as a result of command substitution ignore the
+keyboard-generated job control signals
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+The shell exits by default upon receipt of a
+.SM
+.BR SIGHUP .
+Before exiting, an interactive shell resends the
+.SM
+.B SIGHUP
+to all jobs, running or stopped.
+Stopped jobs are sent
+.SM
+.B SIGCONT
+to ensure that they receive the
+.SM
+.BR SIGHUP .
+To prevent the shell from
+sending the signal to a particular job, it should be removed from the
+jobs table with the 
+.B disown
+builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below) or marked 
+to not receive
+.SM
+.B SIGHUP
+using
+.BR "disown \-h" .
+.PP
+If the
+.B huponexit
+shell option has been set with
+.BR shopt ,
+.B bash
+sends a 
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.PP
+If \fBbash\fP is waiting for a command to complete and receives a signal
+for which a trap has been set, the trap will not be executed until
+the command completes. 
+When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP
+builtin, the reception of a signal for which a trap has been set will
+cause the \fBwait\fP builtin to return immediately with an exit status
+greater than 128, immediately after which the trap is executed.
+.SH "JOB CONTROL"
+.I Job control
+refers to the ability to selectively stop (\fIsuspend\fP)
+the execution of processes and continue (\fIresume\fP)
+their execution at a later point.  A user typically employs
+this facility via an interactive interface supplied jointly
+by the operating system kernel's terminal driver and
+.BR bash .
+.PP
+The shell associates a
+.I job
+with each pipeline.  It keeps a table of currently executing
+jobs, which may be listed with the
+.B jobs
+command.  When
+.B bash
+starts a job asynchronously (in the
+.IR background ),
+it prints a line that looks like:
+.RS
+.PP
+[1] 25647
+.RE
+.PP
+indicating that this job is job number 1 and that the process ID
+of the last process in the pipeline associated with this job is 25647.
+All of the processes in a single pipeline are members of the same job.
+.B Bash
+uses the
+.I job
+abstraction as the basis for job control.
+.PP
+To facilitate the implementation of the user interface to job
+control, the operating system maintains the notion of a \fIcurrent terminal
+process group ID\fP.  Members of this process group (processes whose
+process group ID is equal to the current terminal process group ID)
+receive keyboard-generated signals such as
+.SM
+.BR SIGINT .
+These processes are said to be in the
+.IR foreground .
+.I Background
+processes are those whose process group ID differs from the terminal's;
+such processes are immune to keyboard-generated signals.
+Only foreground processes are allowed to read from or, if the
+user so specifies with \f(CWstty tostop\fP, write to the
+terminal.
+Background processes which attempt to read from (write to when
+\f(CWstty tostop\fP is in effect) the
+terminal are sent a 
+.SM
+.B SIGTTIN (SIGTTOU)
+signal by the kernel's terminal driver, 
+which, unless caught, suspends the process.
+.PP
+If the operating system on which
+.B bash
+is running supports
+job control,
+.B bash
+contains facilities to use it.
+Typing the
+.I suspend
+character (typically
+.BR ^Z ,
+Control-Z) while a process is running
+causes that process to be stopped and returns control to 
+.BR bash .
+Typing the
+.I "delayed suspend"
+character (typically
+.BR ^Y ,
+Control-Y) causes the process to be stopped when it
+attempts to read input from the terminal, and control to
+be returned to
+.BR bash .
+The user may then manipulate the state of this job, using the
+.B bg
+command to continue it in the background, the
+.B fg
+command to continue it in the foreground, or
+the
+.B kill
+command to kill it.  A \fB^Z\fP takes effect immediately,
+and has the additional side effect of causing pending output
+and typeahead to be discarded.
+.PP
+There are a number of ways to refer to a job in the shell.
+The character
+.B %
+introduces a job specification (\fIjobspec\fP).  Job number
+.I n
+may be referred to as
+.BR %n .
+A job may also be referred to using a prefix of the name used to
+start it, or using a substring that appears in its command line.
+For example,
+.B %ce
+refers to a stopped
+.B ce
+job.  If a prefix matches more than one job,
+.B bash
+reports an error.  Using
+.BR %?ce ,
+on the other hand, refers to any job containing the string
+.B ce
+in its command line.  If the substring matches more than one job,
+.B bash
+reports an error.  The symbols
+.B %%
+and
+.B %+
+refer to the shell's notion of the
+.IR "current job" ,
+which is the last job stopped while it was in
+the foreground or started in the background.
+The 
+.I "previous job"
+may be referenced using
+.BR %\- .
+If there is only a single job, \fB%+\fP and \fB%\-\fP can both be used
+to refer to that job.
+In output pertaining to jobs (e.g., the output of the
+.B jobs
+command), the current job is always flagged with a
+.BR + ,
+and the previous job with a
+.BR \- .
+A single % (with no accompanying job specification) also refers to the
+current job.
+.PP
+Simply naming a job can be used to bring it into the
+foreground:
+.B %1
+is a synonym for
+\fB``fg %1''\fP,
+bringing job 1 from the background into the foreground.
+Similarly,
+.B ``%1 &''
+resumes job 1 in the background, equivalent to
+\fB``bg %1''\fP.
+.PP
+The shell learns immediately whenever a job changes state.
+Normally,
+.B bash
+waits until it is about to print a prompt before reporting
+changes in a job's status so as to not interrupt
+any other output.  If the 
+.B \-b
+option to the
+.B set
+builtin command
+is enabled,
+.B bash
+reports such changes immediately.
+Any trap on
+.SM
+.B SIGCHLD
+is executed for each child that exits.
+.PP
+If an attempt to exit
+.B bash
+is made while jobs are stopped (or, if the \fBcheckjobs\fP shell option has
+been enabled using the \fBshopt\fP builtin, running), the shell prints a
+warning message, and, if the \fBcheckjobs\fP option is enabled, lists the
+jobs and their statuses.
+The
+.B jobs
+command may then be used to inspect their status. 
+If a second attempt to exit is made without an intervening command,
+the shell does not print another warning, and any stopped
+jobs are terminated.
+.SH PROMPTING
+When executing interactively, 
+.B bash
+displays the primary prompt
+.SM
+.B PS1
+when it is ready to read a command, and the secondary prompt
+.SM
+.B PS2
+when it needs more input to complete a command.
+.B Bash
+allows these prompt strings to be customized by inserting a number of
+backslash-escaped special characters that are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+an ASCII bell character (07)
+.TP
+.B \ed
+the date in "Weekday Month Date" format (e.g., "Tue May 26")
+.TP
+.B \eD{\fIformat\fP}
+the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted
+into the prompt string; an empty \fIformat\fP results in a locale-specific
+time representation.  The braces are required
+.TP
+.B \ee
+an ASCII escape character (033)
+.TP
+.B \eh
+the hostname up to the first `.'
+.TP
+.B \eH
+the hostname
+.TP
+.B \ej
+the number of jobs currently managed by the shell
+.TP
+.B \el
+the basename of the shell's terminal device name
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \es
+the name of the shell, the basename of
+.B $0
+(the portion following the final slash)
+.TP
+.B \et
+the current time in 24-hour HH:MM:SS format
+.TP
+.B \eT
+the current time in 12-hour HH:MM:SS format
+.TP
+.B \e@
+the current time in 12-hour am/pm format
+.TP
+.B \eA
+the current time in 24-hour HH:MM format
+.TP
+.B \eu
+the username of the current user
+.TP
+.B \ev
+the version of \fBbash\fP (e.g., 2.00)
+.TP
+.B \eV
+the release of \fBbash\fP, version + patch level (e.g., 2.00.0)
+.TP
+.B \ew
+the current working directory, with
+.SM
+.B $HOME
+abbreviated with a tilde
+(uses the value of the
+.SM
+.B PROMPT_DIRTRIM
+variable)
+.TP
+.B \eW
+the basename of the current working directory, with
+.SM
+.B $HOME
+abbreviated with a tilde
+.TP
+.B \e!
+the history number of this command
+.TP
+.B \e#
+the command number of this command
+.TP
+.B \e$
+if the effective UID is 0, a
+.BR # ,
+otherwise a
+.B $
+.TP
+.B \e\fInnn\fP
+the character corresponding to the octal number \fInnn\fP
+.TP
+.B \e\e
+a backslash
+.TP
+.B \e[
+begin a sequence of non-printing characters, which could be used to
+embed a terminal control sequence into the prompt
+.TP
+.B \e]
+end a sequence of non-printing characters
+.PD
+.RE
+.PP
+The command number and the history number are usually different:
+the history number of a command is its position in the history
+list, which may include commands restored from the history file
+(see
+.SM
+.B HISTORY
+below), while the command number is the position in the sequence
+of commands executed during the current shell session.
+After the string is decoded, it is expanded via
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+.B promptvars
+shell option (see the description of the
+.B shopt
+command under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.SH READLINE
+This is the library that handles reading input when using an interactive
+shell, unless the
+.B \-\-noediting
+option is given at shell invocation.
+Line editing is also used when using the \fB\-e\fP option to the
+\fBread\fP builtin.
+By default, the line editing commands are similar to those of Emacs.
+A vi-style line editing interface is also available.
+Line editing can be enabled at any time using the
+.B \-o emacs
+or
+.B \-o vi
+options to the
+.B set
+builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+To turn off line editing after the shell is running, use the
+.B +o emacs
+or
+.B +o vi
+options to the
+.B set
+builtin.
+.SS "Readline Notation"
+.PP
+In this section, the Emacs-style notation is used to denote
+keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N.  Similarly, 
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
+without a 
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key.  This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count.
+Sometimes, however, it is the sign of the argument that is significant.
+Passing a negative argument to a command that acts in the forward
+direction (e.g., \fBkill\-line\fP) causes that command to act in a
+backward direction. 
+Commands whose behavior with arguments deviates from this are noted
+below.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP).  The killed text is saved in a
+\fIkill ring\fP.  Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once. 
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SS "Readline Initialization"
+.PP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.SM
+.B INPUTRC
+variable.  If that variable is unset, the default is
+.IR ~/.inputrc .
+When a program which uses the readline library starts up, the
+initialization file is read, and the key bindings and variables
+are set.
+There are only a few basic constructs allowed in the
+readline initialization file.
+Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+.PP
+The default key-bindings may be changed with an
+.I inputrc 
+file.
+Other programs that use this library may add their own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+into the 
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized:
+.IR RUBOUT ,
+.IR DEL ,
+.IR ESC ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR SPC ,
+.IR SPACE ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.SS "Readline Key Bindings"
+.PP
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple.  All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English.  For example:
+.sp
+.RS
+Control-u: universal\-argument
+.br
+Meta-Rubout: backward-kill-word
+.br
+Control-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M\-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes.  Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C\-u
+is again bound to the function
+.BR universal\-argument .
+.I "C\-x C\-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and 
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal "
+.TP
+.B \e\(aq
+literal \(aq
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including " and \(aq.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command.  The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Variables"
+.PP
+Readline has variables that can be used to further customize its
+behavior.  A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.B Off
+(without regard to case).
+Unrecognized variable names are ignored.
+When a variable value is read, empty or null values, "on" (case-insensitive),
+and "1" are equivalent to \fBOn\fP.  All other values are equivalent to
+\fBOff\fP.
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell.  If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B bind\-tty\-special\-chars (On)
+If set to \fBOn\fP, readline attempts to bind the control characters
+treated specially by the kernel's terminal driver to their readline
+equivalents.
+.TP
+.B colored\-stats (Off)
+If set to \fBOn\fP, readline displays possible completions using different
+colors to indicate their file type.     
+The color definitions are taken from the value of the \fBLS_COLORS\fP
+environment variable.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted when the readline
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-prefix\-display\-length (0)
+The length in characters of the common prefix of a list of possible
+completions that is displayed without modification.  When set to a
+value greater than zero, common prefixes longer than this value are
+replaced with an ellipsis when displaying possible completions.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to
+zero.  If the number of possible completions is greater than
+or equal to the value of this variable, the user is asked whether
+or not he wishes to view them; otherwise they are simply listed
+on the terminal.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion.  Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIEmacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B echo\-control\-characters (On)
+When set to \fBOn\fP, on operating systems that indicate they support it,
+readline echoes a character corresponding to a signal generated from the
+keyboard.
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called.  Some systems need this to enable the
+arrow keys.
+.TP
+.B enable\-meta\-key (On)
+When set to \fBOn\fP, readline will try to enable any meta modifier
+key the terminal claims to support when it is called.  On many terminals,
+the meta key is used to send eight-bit characters.
+.TP
+.B expand\-tilde (Off)
+If set to \fBOn\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history\-preserve\-point (Off)
+If set to \fBOn\fP, the history code attempts to place point at the
+same location on each history line retrieved with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B history\-size (0)
+Set the maximum number of history entries saved in the history list.  If
+set to zero, the number of entries in the history list is not limited.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not strip the high bit from the characters it reads),
+regardless of what the terminal claims it can support.  The name
+.B meta\-flag
+is a synonym for this variable.
+.TP
+.B isearch\-terminators (``C\-[C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap.  The set of valid keymap names is
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.  The default value is
+.IR emacs ;
+the value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B keyseq\-timeout (500)
+Specifies the duration \fIreadline\fP will wait for a character when reading an
+ambiguous key sequence (one that can form a complete key sequence using
+the input read so far, or can take additional input to complete a longer
+key sequence).
+If no input is received within the timeout, \fIreadline\fP will use the shorter
+but complete key sequence.
+The value is specified in milliseconds, so a value of 1000 means that
+\fIreadline\fP will wait one second for additional input.
+If this variable is set to a value less than or equal to zero, or to a
+non-numeric value, \fIreadline\fP will wait until another key is pressed to
+decide which key sequence to complete.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename 
+completion.
+If set to \fBOff\fP, the leading `.' must be
+supplied by the user in the filename to be completed.
+.TP
+.B menu\-complete\-display\-prefix (Off)
+If set to \fBOn\fP, menu completion displays the common prefix of the
+list of possible completions (which may be empty) before cycling through
+the list.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP 
+.B revert\-all\-at\-newline (Off)
+If set to \fBOn\fP, readline will undo all changes to history lines 
+before returning when \fBaccept\-line\fP is executed.  By default,
+history lines may be modified and retain individual undo lists across
+calls to \fBreadline\fP.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions.  If
+set to
+.BR On ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B show\-all\-if\-unmodified (Off)
+This alters the default behavior of the completion functions in
+a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
+If set to
+.BR On ,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+.TP
+.B skip\-completed\-text (Off)
+If set to \fBOn\fP, this alters the default completion behavior when
+inserting a single match into the line.  It's only active when
+performing completion in the middle of a word.  If enabled, readline
+does not insert characters from the completion that match characters
+after point in the word being completed, so portions of the word
+following the cursor are not duplicated.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS "Readline Conditional Constructs"
+.PP
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests.  There are four parser directives used.
+.IP \fB$if\fP
+The 
+.B $if
+construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+readline.  The text of the test extends to the end of the line;
+no characters are required to isolate it.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys.  The word on the right side of the
+.B =
+is tested against the both full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP.  This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings.  Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file can test for a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program.  For instance, the following command adds a
+key sequence that quotes the current or previous word in \fBbash\fP:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC\-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.  For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SS Searching
+.PP
+Readline provides commands for searching through the command history
+(see
+.SM
+.B HISTORY
+below) for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the Escape and
+Control-J characters will terminate an incremental search.
+Control-G will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+.PP
+To find other matching entries in the history list, type Control-S or
+Control-R as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a \fInewline\fP will terminate the search and accept
+the line, thereby executing the command from the history list.
+.PP
+Readline remembers the last incremental search string.  If two
+Control-Rs are typed without any intervening characters defining a
+new search string, any remembered search string is used.
+.PP
+Non-incremental searches read the entire search string before starting
+to search for matching history lines.  The search string may be
+typed by the user or be part of the contents of the current line.
+.SS "Readline Command Names"
+.PP
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word.  Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word.
+Words are composed of alphanumeric characters (letters and digits).
+.TP
+.B shell\-forward\-word
+Move forward to the end of the next word.
+Words are delimited by non-quoted shell metacharacters.
+.TP
+.B shell\-backward\-word
+Move back to the start of the current or previous word.
+Words are delimited by non-quoted shell metacharacters.
+.TP
+.B clear\-screen (C\-l)
+Clear the screen leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, Return)
+Accept the line regardless of where the cursor is.  If this line is
+non-empty, add it to the history list according to the state of the
+.SM
+.B HISTCONTROL
+variable.  If the line is a modified history
+line, then restore the history line to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B reverse\-search\-history (C\-r)
+Search backward starting at the current line and moving `up' through
+the history as necessary.  This is an incremental search.
+.TP
+.B forward\-search\-history (C\-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary.  This is an incremental search.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search for
+a string supplied by the user.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B history\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B yank\-nth\-arg (M\-C\-y)
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0).  A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+Once the argument \fIn\fP is computed, the argument is extracted
+as if the "!\fIn\fP" history expansion had been specified.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry).
+With a numeric argument, behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last word (or the word specified by the argument to
+the first call) of each line in turn.
+Any numeric argument supplied to these successive calls determines
+the direction to move through the history.  A negative argument switches
+the direction through the history (back or forward).
+The history expansion facilities are used to extract the last argument,
+as if the "!$" history expansion had been specified.
+.TP
+.B shell\-expand\-line (M\-C\-e)
+Expand the line as the shell does.  This
+performs alias and history expansion as well as all of the shell
+word expansions.  See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B history\-expand\-line (M\-^)
+Perform history expansion on the current line.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B magic\-space
+Perform history expansion on the current line and insert a space.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B alias\-expand\-line
+Perform alias expansion on the current line.
+See
+.SM
+.B ALIASES
+above for a description of alias expansion.
+.TP
+.B history\-and\-alias\-expand\-line
+Perform history and alias expansion on the current line.
+.TP
+.B insert\-last\-argument (M\-.\^, M\-_\^)
+A synonym for \fByank\-last\-arg\fP.
+.TP
+.B operate\-and\-get\-next (C\-o)
+Accept the current line for execution and fetch the next line
+relative to the current line from the history for editing.  Any
+argument is ignored.
+.TP
+.B edit\-and\-execute\-command (C\-xC\-e)
+Invoke an editor on the current command line, and execute the result as shell
+commands.
+\fBBash\fP attempts to invoke
+.SM
+.BR $VISUAL ,
+.SM
+.BR $EDITOR ,
+and \fIemacs\fP as the editor, in that order.
+.PD
+.SS Commands for Changing Text
+.PP
+.PD 0
+.TP
+.B delete\-char (C\-d)
+Delete the character at point.  If point is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to \fBdelete\-char\fP,
+then return
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor.  When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B forward\-backward\-delete\-char
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character typed to the line verbatim.  This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (C\-v TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.   
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word.  With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word.  With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word.  With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B overwrite\-mode
+Toggle overwrite mode.  With an explicit positive numeric argument,
+switches to overwrite mode.  With an explicit non-positive numeric
+argument, switches to insert mode.  This command affects only
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace   
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space.  By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B kill\-word  (M\-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as those used by \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B shell\-kill\-word  (M\-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as those used by \fBshell\-forward\-word\fP.
+.TP
+.B shell\-backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBshell\-backward\-word\fP.
+.TP
+.B unix\-word\-rubout (C\-w)
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+.TP
+.B unix\-filename\-rubout
+Kill the word behind point, using white space and the slash character
+as the word boundaries.
+The killed text is saved on the kill-ring.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text in the current region.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top.  Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PP
+.PD 0
+.TP
+.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+Add this digit to the argument already accumulating, or start a new
+argument.  M\-\- starts a negative argument.
+.TP
+.B universal\-argument
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing
+.B universal\-argument
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+.PD
+.SS Completing
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+.B Bash
+attempts completion treating the text as a variable (if the
+text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn.  If none
+of these produces a match, filename completion is attempted.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to \fBTAB\fP, but is unbound
+by default.
+.TP
+.B menu\-complete\-backward
+Identical to \fBmenu\-complete\fP, but moves backward through the list
+of possible completions, as if \fBmenu\-complete\fP had been given a
+negative argument.  This command is unbound by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete\-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible\-completions\fP.
+This command is unbound by default.
+.TP
+.B complete\-filename (M\-/)
+Attempt filename completion on the text before point.
+.TP
+.B possible\-filename\-completions (C\-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+.TP
+.B complete\-username (M\-~)
+Attempt completion on the text before point, treating
+it as a username.
+.TP
+.B possible\-username\-completions (C\-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+.TP
+.B complete\-variable (M\-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+.TP
+.B possible\-variable\-completions (C\-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+.TP
+.B complete\-hostname (M\-@)
+Attempt completion on the text before point, treating
+it as a hostname.
+.TP
+.B possible\-hostname\-completions (C\-x @)
+List the possible completions of the text before point,
+treating it as a hostname.
+.TP
+.B complete\-command (M\-!)
+Attempt completion on the text before point, treating
+it as a command name.  Command completion attempts to
+match the text against aliases, reserved words, shell
+functions, shell builtins, and finally executable filenames,
+in that order.
+.TP
+.B possible\-command\-completions (C\-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+.TP
+.B dynamic\-complete\-history (M\-TAB)
+Attempt completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+.TP
+.B dabbrev\-expand
+Attempt menu completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+.TP
+.B complete\-into\-braces (M\-{)
+Perform filename completion and insert the list of possible completions
+enclosed within braces so the list is available to the shell (see
+.B Brace Expansion
+above).
+.PD
+.SS Keyboard Macros
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B call\-last\-kbd\-macro (C\-x e)
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+.B print\-last\-kbd\-macro ()
+Print the last keyboard macro defined in a format suitable for the
+\fIinputrc\fP file.
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line.  This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point.  If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+Swap the point with the mark.  The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+.TP
+.B character\-search (C\-])
+A character is read and point is moved to the next occurrence of that
+character.  A negative count searches for previous occurrences.
+.TP
+.B character\-search\-backward (M\-C\-])
+A character is read and point is moved to the previous occurrence of that
+character.  A negative count searches for subsequent occurrences.
+.TP
+.B skip\-csi\-sequence
+Read enough characters to consume a multi-key sequence such as those
+defined for keys like Home and End.  Such sequences begin with a
+Control Sequence Indicator (CSI), usually ESC\-[.  If this sequence is
+bound to "\e[", keys producing such sequences will have no effect
+unless explicitly bound to a readline command, instead of inserting
+stray characters into the editing buffer.  This is unbound by default,
+but usually bound to ESC\-[.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle:  if
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment\-begin\fP are deleted from the beginning of 
+the line.
+In either case, the line is accepted as if a newline had been typed.
+The default value of
+\fBcomment\-begin\fP causes this command to make the current line
+a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+.TP
+.B glob\-complete\-word (M\-g)
+The word before point is treated as a pattern for pathname expansion,
+with an asterisk implicitly appended.  This pattern is used to
+generate a list of matching filenames for possible completions.
+.TP
+.B glob\-expand\-word (C\-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching filenames is inserted, replacing the word.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B glob\-list\-expansions (C\-x g)
+The list of expansions that would have been generated by
+.B glob\-expand\-word
+is displayed, and the line is redrawn.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B dump\-functions
+Print all of the functions and their key bindings to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-variables
+Print all of the settable readline variables and their values to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they output.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B display\-shell\-version (C\-x C\-v)
+Display version information about the current instance of
+.BR bash .
+.PD
+.SS Programmable Completion
+.PP
+When word completion is attempted for an argument to a command for
+which a completion specification (a \fIcompspec\fP) has been defined
+using the \fBcomplete\fP builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the programmable completion facilities are invoked.
+.PP
+First, the command name is identified.
+If the command word is the empty string (completion attempted at the
+beginning of an empty line), any compspec defined with
+the \fB\-E\fP option to \fBcomplete\fP is used.
+If a compspec has been defined for that command, the
+compspec is used to generate the list of possible completions for the word.
+If the command word is a full pathname, a compspec for the full
+pathname is searched for first.
+If no compspec is found for the full pathname, an attempt is made to
+find a compspec for the portion following the final slash.
+If those searches do not result in a compspec, any compspec defined with
+the \fB\-D\fP option to \fBcomplete\fP is used as the default.
+.PP
+Once a compspec has been found, it is used to generate the list of
+matching words.
+If a compspec is not found, the default \fBbash\fP completion as
+described above under \fBCompleting\fP is performed.
+.PP
+First, the actions specified by the compspec are used.
+Only matches which are prefixed by the word being completed are
+returned.
+When the
+.B \-f
+or
+.B \-d
+option is used for filename or directory name completion, the shell
+variable
+.SM
+.B FIGNORE
+is used to filter the matches.
+.PP
+Any completions specified by a pathname expansion pattern to the
+\fB\-G\fP option are generated next.
+The words generated by the pattern need not match the word
+being completed.
+The
+.SM
+.B GLOBIGNORE
+shell variable is not used to filter the matches, but the
+.SM
+.B FIGNORE
+variable is used.
+.PP
+Next, the string specified as the argument to the \fB\-W\fP option
+is considered.
+The string is first split using the characters in the
+.SM
+.B IFS
+special variable as delimiters.
+Shell quoting is honored.
+Each word is then expanded using
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, and arithmetic expansion,
+as described above under 
+.SM
+.BR EXPANSION .
+The results are split using the rules described above under
+\fBWord Splitting\fP.
+The results of the expansion are prefix-matched against the word being
+completed, and the matching words become the possible completions.
+.PP
+After these matches have been generated, any shell function or command
+specified with the \fB\-F\fP and \fB\-C\fP options is invoked.
+When the command or function is invoked, the
+.SM
+.BR COMP_LINE ,
+.SM
+.BR COMP_POINT ,
+.SM
+.BR COMP_KEY ,
+and
+.SM
+.B COMP_TYPE
+variables are assigned values as described above under
+\fBShell Variables\fP.
+If a shell function is being invoked, the 
+.SM
+.B COMP_WORDS
+and
+.SM
+.B COMP_CWORD
+variables are also set.
+When the function or command is invoked,
+the first argument (\fB$1\fP) is the name of the command whose arguments are
+being completed,
+the second argument (\fB$2\fP) is the word being completed,
+and the third argument (\fB$3\fP) is the word preceding the word being
+completed on the current command line.
+No filtering of the generated completions against the word being completed
+is performed; the function or command has complete freedom in generating
+the matches.
+.PP
+Any function specified with \fB\-F\fP is invoked first.
+The function may use any of the shell facilities, including the
+\fBcompgen\fP builtin described below, to generate the matches.
+It must put the possible completions in the
+.SM
+.B COMPREPLY
+array variable, one per array element.
+.PP
+Next, any command specified with the \fB\-C\fP option is invoked
+in an environment equivalent to command substitution.
+It should print a list of completions, one per line, to the
+standard output.
+Backslash may be used to escape a newline, if necessary.
+.PP
+After all of the possible completions are generated, any filter
+specified with the \fB\-X\fP option is applied to the list.
+The filter is a pattern as used for pathname expansion; a \fB&\fP
+in the pattern is replaced with the text of the word being completed.
+A literal \fB&\fP may be escaped with a backslash; the backslash
+is removed before attempting a match.
+Any completion that matches the pattern will be removed from the list.
+A leading \fB!\fP negates the pattern; in this case any completion
+not matching the pattern will be removed.
+.PP
+Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP
+options are added to each member of the completion list, and the result is
+returned to the readline completion code as the list of possible
+completions.
+.PP
+If the previously-applied actions do not generate any matches, and the
+\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, directory name completion is attempted.
+.PP
+If the \fB\-o plusdirs\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, directory name completion is attempted and any
+matches are added to the results of the other actions.
+.PP
+By default, if a compspec is found, whatever it generates is returned
+to the completion code as the full set of possible completions.
+The default \fBbash\fP completions are not attempted, and the readline
+default of filename completion is disabled.
+If the \fB\-o bashdefault\fP option was supplied to \fBcomplete\fP when
+the compspec was defined, the \fBbash\fP default completions are attempted
+if the compspec generates no matches.
+If the \fB\-o default\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, readline's default completion will be performed
+if the compspec (and, if attempted, the default \fBbash\fP completions)
+generate no matches.
+.PP
+When a compspec indicates that directory name completion is desired,
+the programmable completion functions force readline to append a slash
+to completed names which are symbolic links to directories, subject to  
+the value of the \fBmark\-directories\fP readline variable, regardless
+of the setting of the \fBmark-symlinked\-directories\fP readline variable.
+.PP
+There is some support for dynamically modifying completions.  This is
+most useful when used in combination with a default completion specified
+with \fBcomplete -D\fP.
+It's possible for shell functions executed as completion
+handlers to indicate that completion should be retried by returning an
+exit status of 124.  If a shell function returns 124, and changes
+the compspec associated with the command on which completion is being
+attempted (supplied as the first argument when the function is executed),
+programmable completion restarts from the beginning, with an
+attempt to find a new compspec for that command.  This allows a set of
+completions to be built dynamically as completion is attempted, rather than
+being loaded all at once.
+.PP
+For instance, assuming that there is a library of compspecs, each kept in a
+file corresponding to the name of the command, the following default
+completion function would load completions dynamically:
+.PP
+\f(CW_completion_loader()
+.br
+{
+.br
+       . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
+.br
+}
+.br
+complete -D -F _completion_loader
+.br
+\fP
+.SH HISTORY
+When the
+.B \-o history
+option to the
+.B set
+builtin is enabled, the shell provides access to the
+\fIcommand history\fP,
+the list of commands previously typed.
+The value of the
+.SM
+.B HISTSIZE
+variable is used as the
+number of commands to save in a history list.
+The text of the last
+.SM
+.B HISTSIZE
+commands (default 500) is saved.  The shell
+stores each command in the history list prior to parameter and
+variable expansion (see
+.SM
+.B EXPANSION
+above) but after history expansion is performed, subject to the
+values of the shell variables
+.SM
+.B HISTIGNORE
+and
+.SM
+.BR HISTCONTROL .
+.PP
+On startup, the history is initialized from the file named by
+the variable
+.SM
+.B HISTFILE
+(default \fI~/.bash_history\fP).
+The file named by the value of
+.SM
+.B HISTFILE
+is truncated, if necessary, to contain no more than
+the number of lines specified by the value of
+.SM
+.BR HISTFILESIZE .
+If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value,
+or a numeric value less than zero, the history file is not truncated.
+When the history file is read,
+lines beginning with the history comment character followed immediately
+by a digit are interpreted as timestamps for the preceding history line.
+These timestamps are optionally displayed depending on the value of the
+.SM
+.B HISTTIMEFORMAT
+variable.
+When a shell with history enabled exits, the last
+.SM
+.B $HISTSIZE
+lines are copied from the history list to
+.SM
+.BR $HISTFILE .
+If the
+.B histappend
+shell option is enabled
+(see the description of
+.B shopt
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the lines are appended to the history file,
+otherwise the history file is overwritten.
+If
+.SM
+.B HISTFILE
+is unset, or if the history file is unwritable, the history is
+not saved.
+If the
+.SM
+.B HISTTIMEFORMAT
+variable is set, time stamps are written to the history file, marked
+with the history comment character, so
+they may be preserved across shell sessions.
+This uses the history comment character to distinguish timestamps from
+other history lines.
+After saving the history, the history file is truncated
+to contain no more than
+.SM
+.B HISTFILESIZE
+lines.  If
+.SM
+.B HISTFILESIZE
+is unset, or set to null, a non-numeric value,
+or a numeric value less than zero, the history file is not truncated.
+.PP
+The builtin command
+.B fc
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below) may be used to list or edit and re-execute a portion of
+the history list.
+The
+.B history
+builtin may be used to display or modify the history list and
+manipulate the history file.
+When using command-line editing, search commands
+are available in each editing mode that provide access to the
+history list.
+.PP
+The shell allows control over which commands are saved on the history
+list.  The
+.SM
+.B HISTCONTROL
+and
+.SM
+.B HISTIGNORE
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The
+.B cmdhist
+shell option, if enabled, causes the shell to attempt to save each
+line of a multi-line command in the same history entry, adding
+semicolons where necessary to preserve syntactic correctness.
+The
+.B lithist
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.  See the description of the
+.B shopt
+builtin below under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+for information on setting and unsetting shell options.
+.SH "HISTORY EXPANSION"
+.PP
+The shell supports a history expansion feature that
+is similar to the history expansion in
+.BR csh.
+This section describes what syntax features are available.  This
+feature is enabled by default for interactive shells, and can be
+disabled using the
+.B +H
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).  Non-interactive shells do not perform history expansion
+by default.
+.PP
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+.PP
+History expansion is performed immediately after a complete line
+is read, before the shell breaks it into words.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as when reading input,
+so that several \fImetacharacter\fP-separated words surrounded by
+quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.PP
+Several characters inhibit history expansion if found immediately
+following the history expansion character, even if it is unquoted:
+space, tab, newline, carriage return, and \fB=\fP.
+If the \fBextglob\fP shell option is enabled, \fB(\fP will also
+inhibit expansion.
+.PP
+Several shell options settable with the
+.B shopt
+builtin may be used to tailor the behavior of history expansion.
+If the
+.B histverify
+shell option is enabled (see the description of the
+.B shopt
+builtin below), and
+.B readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the
+.B readline
+editing buffer for further modification.
+If
+.B readline
+is being used, and the
+.B histreedit
+shell option is enabled, a failed history substitution will be reloaded
+into the
+.B readline
+editing buffer for correction.
+The
+.B \-p
+option to the
+.B history
+builtin command may be used to see what a history expansion will
+do before using it.
+The
+.B \-s
+option to the
+.B history
+builtin may be used to add commands to the end of the history list
+without actually executing them, so that they are available for
+subsequent recall.
+.PP
+The shell allows control of the various characters used by the
+history expansion mechanism (see the description of
+.B histchars
+above under
+.BR "Shell Variables" ).
+The shell uses
+the history comment character to mark history timestamps when
+writing the history file.
+.SS Event Designators
+.PP
+An event designator is a reference to a command line entry in the
+history list.
+Unless the reference is absolute, events are relative to the current
+position in the history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, carriage return, =
+or ( (when the \fBextglob\fP shell option is enabled using
+the \fBshopt\fP builtin).
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command.  This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command preceding the current position in the
+history list starting with
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command preceding the current position in the
+history list containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution.  Repeat the previous command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s/\fIstring1\fP/\fIstring2\fP/''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+.PP
+Word designators are used to select desired words from the event.
+A 
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+Words are inserted into the current line separated by single spaces.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word.  For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument.  That is, word 1.
+.TP
+.B $
+The last argument.
+.TP
+.B %
+The word matched by the most recent `?\fIstring\fR?' search.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth.  This is a synonym
+for `\fI1\-$\fP'.  It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+.PP
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing filename component, leaving only the head.
+.TP
+.B t
+Remove all leading filename components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line.  Any delimiter can be used in place of /.  The
+final delimiter is optional if it is the last character of the
+event line.  The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash.  If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &.  If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line.  This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'.  If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+An \fBa\fP may be used as a synonym for \fBg\fP.
+.TP
+.B G
+Apply the following `\fBs\fP' modifier once to each word in the event line.
+.PD
+.SH "SHELL BUILTIN COMMANDS"
+.\" start of bash_builtins
+.zZ
+.PP
+Unless otherwise noted, each builtin command documented in this
+section as accepting options preceded by
+.B \-
+accepts
+.B \-\-
+to signify the end of the options.
+The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins
+do not accept options and do not treat \fB\-\-\fP specially.
+The \fBexit\fP, \fBlogout\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP,
+and \fBshift\fP builtins accept and process arguments beginning with
+\fB\-\fP without requiring \fB\-\-\fP.
+Other builtins that accept arguments but are not specified as accepting
+options interpret arguments beginning with \fB\-\fP as invalid options and
+require \fB\-\-\fP to prevent this interpretation.
+.sp .5
+.PD 0
+.TP
+\fB:\fP [\fIarguments\fP]
+.PD
+No effect; the command does nothing beyond expanding
+.I arguments
+and performing any specified
+redirections.  A zero exit code is returned.
+.TP
+\fB .\| \fP \fIfilename\fP [\fIarguments\fP]
+.PD 0
+.TP
+\fBsource\fP \fIfilename\fP [\fIarguments\fP]
+.PD
+Read and execute commands from
+.I filename
+in the current
+shell environment and return the exit status of the last command
+executed from
+.IR filename .
+If
+.I filename
+does not contain a slash, filenames in
+.SM
+.B PATH
+are used to find the directory containing
+.IR filename .
+The file searched for in
+.SM
+.B PATH
+need not be executable.
+When \fBbash\fP is not in \fIposix mode\fP, the current directory is
+searched if no file is found in
+.SM
+.BR PATH .
+If the
+.B sourcepath
+option to the
+.B shopt
+builtin command is turned off, the
+.SM
+.B PATH
+is not searched.
+If any \fIarguments\fP are supplied, they become the positional
+parameters when \fIfilename\fP is executed.  Otherwise the positional
+parameters are unchanged.
+The return status is the status of the last command exited within
+the script (0 if no commands are executed), and false if
+.I filename
+is not found or cannot be read.
+.TP
+\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBAlias\fP with no arguments or with the
+.B \-p
+option prints the list of aliases in the form
+\fBalias\fP \fIname\fP=\fIvalue\fP on standard output.
+When arguments are supplied, an alias is defined for
+each \fIname\fP whose \fIvalue\fP is given.
+A trailing space in  \fIvalue\fP causes the next word to be
+checked for alias substitution when the alias is expanded.
+For each \fIname\fP in the argument list for which no \fIvalue\fP
+is supplied, the name and value of the alias is printed.
+\fBAlias\fP returns true unless a \fIname\fP is given for which
+no alias has been defined.
+.TP
+\fBbg\fP [\fIjobspec\fP ...]
+Resume each suspended job \fIjobspec\fP in the background, as if it
+had been started with
+.BR & .
+If
+.I jobspec
+is not present, the shell's notion of the \fIcurrent job\fP is used.
+.B bg
+.I jobspec
+returns 0 unless run when job control is disabled or, when run with
+job control enabled, any specified \fIjobspec\fP was not found
+or was started without job control.
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSVX\fP]
+.PD 0
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
+.TP
+\fBbind\fP \fIreadline\-command\fP
+.PD
+Display current
+.B readline
+key and function bindings, bind a key sequence to a
+.B readline
+function or macro, or set a
+.B readline
+variable.
+Each non-option argument is a command as it would appear in
+.IR .inputrc ,
+but each binding or command must be passed as a separate argument;
+e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-m \fIkeymap\fP
+Use
+.I keymap
+as the keymap to be affected by the subsequent bindings.
+Acceptable
+.I keymap
+names are
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-move, vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.
+.TP
+.B \-l
+List the names of all \fBreadline\fP functions.
+.TP
+.B \-p
+Display \fBreadline\fP function names and bindings in such a way
+that they can be re-read.
+.TP
+.B \-P
+List current \fBreadline\fP function names and bindings.
+.TP
+.B \-s
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output in such a way that they can be re-read.
+.TP
+.B \-S
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output.
+.TP
+.B \-v
+Display \fBreadline\fP variable names and values in such a way that they
+can be re-read.
+.TP
+.B \-V
+List current \fBreadline\fP variable names and values.
+.TP
+.B \-f \fIfilename\fP
+Read key bindings from \fIfilename\fP.
+.TP
+.B \-q \fIfunction\fP
+Query about which keys invoke the named \fIfunction\fP.
+.TP
+.B \-u \fIfunction\fP
+Unbind all keys bound to the named \fIfunction\fP.
+.TP
+.B \-r \fIkeyseq\fP
+Remove any current binding for \fIkeyseq\fP.
+.TP
+.B \-x \fIkeyseq\fP:\fIshell\-command\fP
+Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is
+entered.
+When \fIshell\-command\fP is executed, the shell sets the
+.SM
+.B READLINE_LINE
+variable to the contents of the \fBreadline\fP line buffer and the
+.SM
+.B READLINE_POINT
+variable to the current location of the insertion point.
+If the executed command changes the value of
+.SM
+.B READLINE_LINE
+or
+.SM
+.BR READLINE_POINT ,
+those new values will be reflected in the editing state.
+.TP
+.B \-X
+List all key sequences bound to shell commands and the associated commands
+in a format that can be reused as input.
+.PD
+.PP
+The return value is 0 unless an unrecognized option is given or an
+error occurred.
+.RE
+.TP
+\fBbreak\fP [\fIn\fP]
+Exit from within a
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.  If \fIn\fP is specified, break \fIn\fP levels.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, all enclosing loops
+are exited.
+The return value is 0 unless \fIn\fP is not greater than or equal to 1.
+.TP
+\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+Execute the specified shell builtin, passing it
+.IR arguments ,
+and return its exit status.
+This is useful when defining a
+function whose name is the same as a shell builtin,
+retaining the functionality of the builtin within the function.
+The \fBcd\fP builtin is commonly redefined this way.
+The return status is false if
+.I shell\-builtin
+is not a shell builtin command.
+.TP
+\fBcaller\fP [\fIexpr\fP]
+Returns the context of any active subroutine call (a shell function or
+a script executed with the \fB.\fP or \fBsource\fP builtins).
+Without \fIexpr\fP, \fBcaller\fP displays the line number and source
+filename of the current subroutine call.
+If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP 
+displays the line number, subroutine name, and source file corresponding
+to that position in the current execution call stack.  This extra
+information may be used, for example, to print a stack trace.  The
+current frame is frame 0.
+The return value is 0 unless the shell is not executing a subroutine
+call or \fIexpr\fP does not correspond to a valid position in the
+call stack.
+.TP
+\fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]]] [\fIdir\fP]
+Change the current directory to \fIdir\fP.
+if \fIdir\fP is not supplied, the value of the
+.SM
+.B HOME
+shell variable is the default.
+Any additional arguments following \fIdir\fP are ignored.
+The variable
+.SM
+.B CDPATH
+defines the search path for the directory containing
+.IR dir :
+each directory name in
+.SM
+.B CDPATH
+is searched for \fIdir\fP.
+Alternative directory names in
+.SM
+.B CDPATH
+are separated by a colon (:).  A null directory name in
+.SM
+.B CDPATH
+is the same as the current directory, i.e., ``\fB.\fP''.  If
+.I dir
+begins with a slash (/),
+then
+.SM
+.B CDPATH
+is not used. The
+.B \-P
+option causes \fBcd\fP to use the physical directory structure
+by resolving symbolic links while traversing \fIdir\fP and
+before processing instances of \fI..\fP in \fIdir\fP (see also the
+.B \-P
+option to the
+.B set
+builtin command); the
+.B \-L
+option forces symbolic links to be followed by resolving the link
+after processing instances of \fI..\fP in \fIdir\fP.
+If \fI..\fP appears in \fIdir\fP, it is processed by removing the
+immediately previous pathname component from \fIdir\fP, back to a slash
+or the beginning of \fIdir\fP.
+If the
+.B \-e
+option is supplied with
+.BR \-P ,
+and the current working directory cannot be successfully determined
+after a successful directory change, \fBcd\fP will return an unsuccessful
+status.
+An argument of
+.B \-
+is converted to
+.SM
+.B $OLDPWD
+before the directory change is attempted.
+If a non-empty directory name from
+.SM
+.B CDPATH
+is used, or if
+\fB\-\fP is the first argument, and the directory change is
+successful, the absolute pathname of the new working directory is
+written to the standard output.
+The return value is true if the directory was successfully changed;
+false otherwise.
+.TP
+\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
+Run
+.I command
+with
+.I args
+suppressing the normal shell function lookup. Only builtin
+commands or commands found in the
+.SM
+.B PATH
+are executed.  If the
+.B \-p
+option is given, the search for
+.I command
+is performed using a default value for
+.SM
+.B PATH
+that is guaranteed to find all of the standard utilities.
+If either the
+.B \-V
+or
+.B \-v
+option is supplied, a description of
+.I command
+is printed.  The
+.B \-v
+option causes a single word indicating the command or filename
+used to invoke
+.I command
+to be displayed; the
+.B \-V
+option produces a more verbose description.
+If the
+.B \-V
+or
+.B \-v
+option is supplied, the exit status is 0 if
+.I command
+was found, and 1 if not.  If neither option is supplied and
+an error occurred or
+.I command
+cannot be found, the exit status is 127.  Otherwise, the exit status of the
+.B command
+builtin is the exit status of
+.IR command .
+.TP
+\fBcompgen\fP [\fIoption\fP] [\fIword\fP]
+Generate possible completion matches for \fIword\fP according to
+the \fIoption\fPs, which may be any option accepted by the
+.B complete
+builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write
+the matches to the standard output.
+When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables
+set by the programmable completion facilities, while available, will not
+have useful values.
+.sp 1
+The matches will be generated in the same way as if the programmable
+completion code had generated them directly from a completion specification
+with the same flags.
+If \fIword\fP is specified, only those completions matching \fIword\fP
+will be displayed.
+.sp 1
+The return value is true unless an invalid option is supplied, or no
+matches were generated.
+.TP
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DE\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP]
+.br
+[\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP]
+.PD 0
+.TP
+\fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fIname\fP ...]
+.PD
+Specify how arguments to each \fIname\fP should be completed.
+If the \fB\-p\fP option is supplied, or if no options are supplied,
+existing completion specifications are printed in a way that allows
+them to be reused as input.
+The \fB\-r\fP option removes a completion specification for
+each \fIname\fP, or, if no \fIname\fPs are supplied, all
+completion specifications.
+The \fB\-D\fP option indicates that the remaining options and actions should
+apply to the ``default'' command completion; that is, completion attempted
+on a command for which no completion has previously been defined.
+The \fB\-E\fP option indicates that the remaining options and actions should
+apply to ``empty'' command completion; that is, completion attempted on a
+blank line.
+.sp 1
+The process of applying these completion specifications when word completion
+is attempted is described above under \fBProgrammable Completion\fP.
+.sp 1
+Other options, if specified, have the following meanings.
+The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options
+(and, if necessary, the \fB\-P\fP and \fB\-S\fP options)
+should be quoted to protect them from expansion before the
+.B complete
+builtin is invoked.
+.RS
+.PD 0
+.TP 8
+\fB\-o\fP \fIcomp-option\fP
+The \fIcomp-option\fP controls several aspects of the compspec's behavior
+beyond the simple generation of completions.
+\fIcomp-option\fP may be one of:
+.RS
+.TP 8
+.B bashdefault
+Perform the rest of the default \fBbash\fP completions if the compspec
+generates no matches.
+.TP 8
+.B default
+Use readline's default filename completion if the compspec generates
+no matches.
+.TP 8
+.B dirnames
+Perform directory name completion if the compspec generates no matches.
+.TP 8
+.B filenames
+Tell readline that the compspec generates filenames, so it can perform any
+filename\-specific processing (like adding a slash to directory names,
+quoting special characters, or suppressing trailing spaces).
+Intended to be used with shell functions.
+.TP 8
+.B noquote
+Tell readline not to quote the completed words if they are filenames
+(quoting filenames is the default).
+.TP 8
+.B nospace
+Tell readline not to append a space (the default) to words completed at
+the end of the line.
+.TP 8
+.B plusdirs
+After any matches defined by the compspec are generated, 
+directory name completion is attempted and any
+matches are added to the results of the other actions.
+.RE
+.TP 8
+\fB\-A\fP \fIaction\fP
+The \fIaction\fP may be one of the following to generate a list of possible
+completions:
+.RS
+.TP 8
+.B alias
+Alias names.  May also be specified as \fB\-a\fP.
+.TP 8
+.B arrayvar
+Array variable names.
+.TP 8
+.B binding
+\fBReadline\fP key binding names.
+.TP 8
+.B builtin
+Names of shell builtin commands.  May also be specified as \fB\-b\fP.
+.TP 8
+.B command
+Command names.  May also be specified as \fB\-c\fP.
+.TP 8
+.B directory
+Directory names.  May also be specified as \fB\-d\fP.
+.TP 8
+.B disabled
+Names of disabled shell builtins.
+.TP 8
+.B enabled
+Names of enabled shell builtins.
+.TP 8
+.B export
+Names of exported shell variables.  May also be specified as \fB\-e\fP.
+.TP 8
+.B file
+File names.  May also be specified as \fB\-f\fP.
+.TP 8
+.B function
+Names of shell functions.
+.TP 8
+.B group
+Group names.  May also be specified as \fB\-g\fP.
+.TP 8
+.B helptopic
+Help topics as accepted by the \fBhelp\fP builtin.
+.TP 8
+.B hostname
+Hostnames, as taken from the file specified by the
+.SM
+.B HOSTFILE
+shell variable.
+.TP 8
+.B job
+Job names, if job control is active.  May also be specified as \fB\-j\fP.
+.TP 8
+.B keyword
+Shell reserved words.  May also be specified as \fB\-k\fP.
+.TP 8
+.B running
+Names of running jobs, if job control is active.
+.TP 8
+.B service
+Service names.  May also be specified as \fB\-s\fP.
+.TP 8
+.B setopt
+Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin.
+.TP 8
+.B shopt
+Shell option names as accepted by the \fBshopt\fP builtin.
+.TP 8
+.B signal
+Signal names.
+.TP 8
+.B stopped
+Names of stopped jobs, if job control is active.
+.TP 8
+.B user
+User names.  May also be specified as \fB\-u\fP.
+.TP 8
+.B variable
+Names of all shell variables.  May also be specified as \fB\-v\fP.
+.RE
+.TP 8
+\fB\-C\fP \fIcommand\fP
+\fIcommand\fP is executed in a subshell environment, and its output is
+used as the possible completions.
+.TP 8
+\fB\-F\fP \fIfunction\fP
+The shell function \fIfunction\fP is executed in the current shell
+environment.
+When the function is executed,
+the first argument (\fB$1\fP) is the name of the command whose arguments are
+being completed,
+the second argument (\fB$2\fP) is the word being completed,
+and the third argument (\fB$3\fP) is the word preceding the word being
+completed on the current command line.
+When it finishes, the possible completions are retrieved from the value
+of the
+.SM
+.B COMPREPLY
+array variable.
+.TP 8
+\fB\-G\fP \fIglobpat\fP
+The pathname expansion pattern \fIglobpat\fP is expanded to generate
+the possible completions.
+.TP 8
+\fB\-P\fP \fIprefix\fP
+\fIprefix\fP is added at the beginning of each possible completion
+after all other options have been applied.
+.TP 8
+\fB\-S\fP \fIsuffix\fP
+\fIsuffix\fP is appended to each possible completion
+after all other options have been applied.
+.TP 8
+\fB\-W\fP \fIwordlist\fP
+The \fIwordlist\fP is split using the characters in the
+.SM
+.B IFS
+special variable as delimiters, and each resultant word is expanded.
+The possible completions are the members of the resultant list which
+match the word being completed.
+.TP 8
+\fB\-X\fP \fIfilterpat\fP
+\fIfilterpat\fP is a pattern as used for pathname expansion.
+It is applied to the list of possible completions generated by the
+preceding options and arguments, and each completion matching
+\fIfilterpat\fP is removed from the list.
+A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this
+case, any completion not matching \fIfilterpat\fP is removed.
+.PD
+.PP
+The return value is true unless an invalid option is supplied, an option
+other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP
+argument, an attempt is made to remove a completion specification for
+a \fIname\fP for which no specification exists, or
+an error occurs adding a completion specification.
+.RE
+.TP
+\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DE\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP]
+Modify completion options for each \fIname\fP according to the
+\fIoption\fPs, or for the
+currently-executing completion if no \fIname\fPs are supplied.
+If no \fIoption\fPs are given, display the completion options for each
+\fIname\fP or the current completion.
+The possible values of \fIoption\fP are those valid for the \fBcomplete\fP
+builtin described above.
+The \fB\-D\fP option indicates that the remaining options should
+apply to the ``default'' command completion; that is, completion attempted
+on a command for which no completion has previously been defined.
+The \fB\-E\fP option indicates that the remaining options should
+apply to ``empty'' command completion; that is, completion attempted on a
+blank line.
+.sp 1
+The return value is true unless an invalid option is supplied, an attempt
+is made to modify the options for a \fIname\fP for which no completion
+specification exists, or an output error occurs.
+.TP
+\fBcontinue\fP [\fIn\fP]
+Resume the next iteration of the enclosing
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.
+If
+.I n
+is specified, resume at the \fIn\fPth enclosing loop.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, the last enclosing loop
+(the ``top-level'' loop) is resumed.
+The return value is 0 unless \fIn\fP is not greater than or equal to 1.
+.TP
+\fBdeclare\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+.PD 0
+.TP
+\fBtypeset\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+.PD
+Declare variables and/or give them attributes.
+If no \fIname\fPs are given then display the values of variables.
+The
+.B \-p
+option will display the attributes and values of each
+.IR name .
+When
+.B \-p
+is used with \fIname\fP arguments, additional options are ignored.
+When
+.B \-p
+is supplied without \fIname\fP arguments, it will display the attributes
+and values of all variables having the attributes specified by the
+additional options.
+If no other options are supplied with \fB\-p\fP, \fBdeclare\fP will display
+the attributes and values of all shell variables.  The \fB\-f\fP option
+will restrict the display to shell functions.
+The
+.B \-F
+option inhibits the display of function definitions; only the
+function name and attributes are printed.
+If the \fBextdebug\fP shell option is enabled using \fBshopt\fP,
+the source file name and line number where the function is defined
+are displayed as well.  The
+.B \-F
+option implies
+.BR \-f .
+The
+.B \-g
+option forces variables to be created or modified at the global scope,
+even when \fBdeclare\fP is executed in a shell function.
+It is ignored in all other cases.
+The following options can
+be used to restrict output to variables with the specified attribute or
+to give variables attributes:
+.RS
+.PD 0
+.TP
+.B \-a
+Each \fIname\fP is an indexed array variable (see
+.B Arrays
+above).
+.TP
+.B \-A
+Each \fIname\fP is an associative array variable (see
+.B Arrays
+above).
+.TP
+.B \-f
+Use function names only.
+.TP
+.B \-i
+The variable is treated as an integer; arithmetic evaluation (see
+.SM
+.B "ARITHMETIC EVALUATION"
+above) is performed when the variable is assigned a value.
+.TP
+.B \-l
+When the variable is assigned a value, all upper-case characters are
+converted to lower-case.
+The upper-case attribute is disabled.
+.TP
+.B \-n
+Give each \fIname\fP the \fInameref\fP attribute, making
+it a name reference to another variable.
+That other variable is defined by the value of \fIname\fP.
+All references and assignments to \fIname\fP, except for changing the
+\fB\-n\fP attribute itself, are performed on the variable referenced by
+\fIname\fP's value.
+The \fB\-n\fP attribute cannot be applied to array variables.
+.TP
+.B \-r
+Make \fIname\fPs readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+.TP
+.B \-t
+Give each \fIname\fP the \fItrace\fP attribute.
+Traced functions inherit the \fBDEBUG\fP and \fBRETURN\fP traps from
+the calling shell.
+The trace attribute has no special meaning for variables.
+.TP
+.B \-u
+When the variable is assigned a value, all lower-case characters are
+converted to upper-case.
+The lower-case attribute is disabled.
+.TP
+.B \-x
+Mark \fIname\fPs for export to subsequent commands via the environment.
+.PD
+.PP
+Using `+' instead of `\-'
+turns off the attribute instead,
+with the exceptions that \fB+a\fP
+may not be used to destroy an array variable and \fB+r\fP will not
+remove the readonly attribute.
+When used in a function,
+.B declare
+and
+.B typeset
+make each
+\fIname\fP local, as with the
+.B local
+command,
+unless the \fB\-g\fP option is supplied.
+If a variable name is followed by =\fIvalue\fP, the value of
+the variable is set to \fIvalue\fP.
+The return value is 0 unless an invalid option is encountered,
+an attempt is made to define a function using
+.if n ``\-f foo=bar'',
+.if t \f(CW\-f foo=bar\fP,
+an attempt is made to assign a value to a readonly variable,
+an attempt is made to assign a value to an array variable without
+using the compound assignment syntax (see
+.B Arrays
+above), one of the \fInames\fP is not a valid shell variable name,
+an attempt is made to turn off readonly status for a readonly variable,
+an attempt is made to turn off array status for an array variable,
+or an attempt is made to display a non-existent function with \fB\-f\fP.
+.RE
+.TP
+.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
+Without options, displays the list of currently remembered directories.
+The default display is on a single line with directory names separated
+by spaces.
+Directories are added to the list with the 
+.B pushd
+command; the
+.B popd
+command removes entries from the list.
+.RS
+.PD 0
+.TP
+.B \-c
+Clears the directory stack by deleting all of the entries.
+.TP
+.B \-l
+Produces a listing using full pathnames;
+the default listing format uses a tilde to denote the home directory.
+.TP
+.B \-p
+Print the directory stack with one entry per line.
+.TP
+.B \-v
+Print the directory stack with one entry per line,
+prefixing each entry with its index in the stack.
+.TP
+\fB+\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the left of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+\fB\-\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the right of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.PD
+.PP
+The return value is 0 unless an
+invalid option is supplied or \fIn\fP indexes beyond the end
+of the directory stack.
+.RE
+.TP
+\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
+Without options, remove each
+.I jobspec
+from the table of active jobs.
+If
+.I jobspec
+is not present, and neither \fB\-a\fP nor \fB\-r\fP is supplied,
+the shell's notion of the \fIcurrent job\fP is used.
+If the \fB\-h\fP option is given, each
+.I jobspec
+is not removed from the table, but is marked so that
+.SM
+.B SIGHUP
+is not sent to the job if the shell receives a
+.SM
+.BR SIGHUP .
+If no
+.I jobspec
+is present, and neither the
+.B \-a
+nor the
+.B \-r
+option is supplied, the \fIcurrent job\fP is used.
+If no
+.I jobspec
+is supplied, the
+.B \-a
+option means to remove or mark all jobs; the
+.B \-r
+option without a
+.I jobspec
+argument restricts operation to running jobs.
+The return value is 0 unless a
+.I jobspec
+does not specify a valid job.
+.TP
+\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
+Output the \fIarg\fPs, separated by spaces, followed by a newline.
+The return status is 0 unless a write error occurs.
+If \fB\-n\fP is specified, the trailing newline is
+suppressed.  If the \fB\-e\fP option is given, interpretation of
+the following backslash-escaped characters is enabled.  The
+.B \-E
+option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The \fBxpg_echo\fP shell option may be used to
+dynamically determine whether or not \fBecho\fP expands these
+escape characters by default.
+.B echo
+does not interpret \fB\-\-\fP to mean the end of options.
+.B echo
+interprets the following escape sequences:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ec
+suppress further output
+.TP
+.B \ee
+.TP
+.B \eE
+an escape character
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+new line
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e0\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(zero to three octal digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.TP
+.B \eu\fIHHHH\fP
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+\fIHHHH\fP (one to four hex digits)
+.TP
+.B \eU\fIHHHHHHHH\fP
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+\fIHHHHHHHH\fP (one to eight hex digits)
+.PD
+.RE
+.TP
+\fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
+Enable and disable builtin shell commands.
+Disabling a builtin allows a disk command which has the same name
+as a shell builtin to be executed without specifying a full pathname,
+even though the shell normally searches for builtins before disk commands.
+If \fB\-n\fP is used, each \fIname\fP
+is disabled; otherwise,
+\fInames\fP are enabled.  For example, to use the
+.B test
+binary found via the
+.SM
+.B PATH
+instead of the shell builtin version, run
+.if t \f(CWenable -n test\fP.
+.if n ``enable -n test''.
+The
+.B \-f
+option means to load the new builtin command
+.I name
+from shared object
+.IR filename ,
+on systems that support dynamic loading.  The
+.B \-d
+option will delete a builtin previously loaded with
+.BR \-f .
+If no \fIname\fP arguments are given, or if the
+.B \-p
+option is supplied, a list of shell builtins is printed.
+With no other option arguments, the list consists of all enabled
+shell builtins.
+If \fB\-n\fP is supplied, only disabled builtins are printed.
+If \fB\-a\fP is supplied, the list printed includes all builtins, with an
+indication of whether or not each is enabled.
+If \fB\-s\fP is supplied, the output is restricted to the POSIX
+\fIspecial\fP builtins.
+The return value is 0 unless a
+.I name
+is not a shell builtin or there is an error loading a new builtin
+from a shared object.
+.TP
+\fBeval\fP [\fIarg\fP ...]
+The \fIarg\fPs are read and concatenated together into a single
+command.  This command is then read and executed by the shell, and
+its exit status is returned as the value of
+.BR eval .
+If there are no
+.IR args ,
+or only null arguments,
+.B eval
+returns 0.
+.TP
+\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
+If
+.I command
+is specified, it replaces the shell.
+No new process is created.  The
+.I arguments
+become the arguments to \fIcommand\fP.
+If the
+.B \-l
+option is supplied,
+the shell places a dash at the beginning of the zeroth argument passed to 
+.IR command .
+This is what
+.IR login (1)
+does.  The
+.B \-c
+option causes
+.I command
+to be executed with an empty environment.  If
+.B \-a
+is supplied, the shell passes
+.I name
+as the zeroth argument to the executed command.
+If
+.I command
+cannot be executed for some reason, a non-interactive shell exits,
+unless the
+.B execfail
+shell option
+is enabled.  In that case, it returns failure.
+An interactive shell returns failure if the file cannot be executed.
+If
+.I command
+is not specified, any redirections take effect in the current shell,
+and the return status is 0.  If there is a redirection error, the
+return status is 1.
+.TP
+\fBexit\fP [\fIn\fP]
+Cause the shell to exit
+with a status of \fIn\fP.  If
+.I n
+is omitted, the exit status
+is that of the last command executed.
+A trap on
+.SM
+.B EXIT
+is executed before the shell terminates.
+.TP
+\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
+.PD 0
+.TP
+.B export \-p
+.PD
+The supplied
+.I names
+are marked for automatic export to the environment of
+subsequently executed commands.  If the 
+.B \-f
+option is given,
+the 
+.I names
+refer to functions.
+If no
+.I names
+are given, or if the
+.B \-p
+option is supplied, a list
+of names of all exported variables is printed.
+The
+.B \-n
+option causes the export property to be removed from each
+\fIname\fP.
+If a variable name is followed by =\fIword\fP, the value of
+the variable is set to \fIword\fP.
+.B export
+returns an exit status of 0 unless an invalid option is
+encountered,
+one of the \fInames\fP is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-lnr\fP] [\fIfirst\fP] [\fIlast\fP]
+.PD 0
+.TP
+\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
+.PD
+The first form selects a range of commands from
+.I first
+to
+.I last
+from the history list and displays or edits and re-executes them.
+.I First
+and
+.I last
+may be specified as a string (to locate the last command beginning
+with that string) or as a number (an index into the history list,
+where a negative number is used as an offset from the current
+command number).  If 
+.I last
+is not specified it is set to
+the current command for listing (so that
+.if n ``fc \-l \-10''
+.if t \f(CWfc \-l \-10\fP
+prints the last 10 commands) and to
+.I first
+otherwise.
+If
+.I first
+is not specified it is set to the previous
+command for editing and \-16 for listing.
+.sp 1
+The
+.B \-n
+option suppresses
+the command numbers when listing.  The
+.B \-r
+option reverses the order of
+the commands.  If the
+.B \-l
+option is given,
+the commands are listed on
+standard output.  Otherwise, the editor given by
+.I ename
+is invoked
+on a file containing those commands.  If
+.I ename
+is not given, the
+value of the
+.SM
+.B FCEDIT
+variable is used, and
+the value of
+.SM
+.B EDITOR
+if
+.SM
+.B FCEDIT
+is not set.  If neither variable is set,
+.FN vi
+is used.  When editing is complete, the edited commands are
+echoed and executed.
+.sp 1
+In the second form, \fIcommand\fP is re-executed after each instance
+of \fIpat\fP is replaced by \fIrep\fP.
+\fICommand\fP is intepreted the same as \fIfirst\fP above.
+A useful alias to use with this is
+.if n ``r="fc -s"'',
+.if t \f(CWr='fc \-s'\fP,
+so that typing
+.if n ``r cc''
+.if t \f(CWr cc\fP
+runs the last command beginning with
+.if n ``cc''
+.if t \f(CWcc\fP
+and typing
+.if n ``r''
+.if t \f(CWr\fP
+re-executes the last command.
+.sp 1
+If the first form is used, the return value is 0 unless an invalid
+option is encountered or
+.I first
+or
+.I last
+specify history lines out of range.
+If the
+.B \-e
+option is supplied, the return value is the value of the last
+command executed or failure if an error occurs with the temporary
+file of commands.  If the second form is used, the return status
+is that of the command re-executed, unless
+.I cmd
+does not specify a valid history line, in which case
+.B fc
+returns failure.
+.TP
+\fBfg\fP [\fIjobspec\fP]
+Resume
+.I jobspec
+in the foreground, and make it the current job.
+If
+.I jobspec
+is not present, the shell's notion of the \fIcurrent job\fP is used.
+The return value is that of the command placed into the foreground,
+or failure if run when job control is disabled or, when run with
+job control enabled, if
+.I jobspec
+does not specify a valid job or
+.I jobspec
+specifies a job that was started without job control.
+.TP
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+.B getopts
+is used by shell procedures to parse positional parameters.
+.I optstring
+contains the option characters to be recognized; if a character
+is followed by a colon, the option is expected to have an
+argument, which should be separated from it by white space.
+The colon and question mark characters may not be used as
+option characters.
+Each time it is invoked,
+.B getopts
+places the next option in the shell variable
+.IR name ,
+initializing
+.I name
+if it does not exist,
+and the index of the next argument to be processed into the
+variable
+.SM
+.BR OPTIND .
+.SM
+.B OPTIND
+is initialized to 1 each time the shell or a shell script
+is invoked.  When an option requires an argument,
+.B getopts
+places that argument into the variable
+.SM
+.BR OPTARG .
+The shell does not reset
+.SM
+.B OPTIND
+automatically; it must be manually reset between multiple
+calls to
+.B getopts
+within the same shell invocation if a new set of parameters
+is to be used.
+.sp 1
+When the end of options is encountered, \fBgetopts\fP exits with a
+return value greater than zero.
+.SM
+.B OPTIND
+is set to the index of the first non-option argument,
+and \fIname\fP is set to ?.
+.sp 1
+.B getopts
+normally parses the positional parameters, but if more arguments are
+given in
+.IR args ,
+.B getopts
+parses those instead.
+.sp 1
+.B getopts
+can report errors in two ways.  If the first character of
+.I optstring
+is a colon,
+.I silent
+error reporting is used.  In normal operation, diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable
+.SM
+.B OPTERR
+is set to 0, no error messages will be displayed, even if the first
+character of 
+.I optstring
+is not a colon.
+.sp 1
+If an invalid option is seen,
+.B getopts
+places ? into
+.I name
+and, if not silent,
+prints an error message and unsets
+.SM
+.BR OPTARG .
+If
+.B getopts
+is silent,
+the option character found is placed in
+.SM
+.B OPTARG
+and no diagnostic message is printed.
+.sp 1
+If a required argument is not found, and
+.B getopts
+is not silent,
+a question mark (\^\fB?\fP\^) is placed in
+.IR name ,
+.SM
+.B OPTARG
+is unset, and a diagnostic message is printed.
+If
+.B getopts
+is silent, then a colon (\^\fB:\fP\^) is placed in
+.I name
+and
+.SM
+.B OPTARG
+is set to the option character found.
+.sp 1
+.B getopts
+returns true if an option, specified or unspecified, is found.
+It returns false if the end of options is encountered or an
+error occurs.
+.TP
+\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
+Each time \fBhash\fP is invoked,
+the full pathname of the command 
+.I name
+is determined by searching
+the directories in
+.B $PATH
+and remembered.  Any previously-remembered pathname is discarded.
+If the
+.B \-p
+option is supplied, no path search is performed, and
+.I filename
+is used as the full filename of the command.
+The
+.B \-r
+option causes the shell to forget all
+remembered locations.
+The
+.B \-d
+option causes the shell to forget the remembered location of each \fIname\fP.
+If the
+.B \-t
+option is supplied, the full pathname to which each \fIname\fP corresponds
+is printed.  If multiple \fIname\fP arguments are supplied with \fB\-t\fP,
+the \fIname\fP is printed before the hashed full pathname.
+The
+.B \-l
+option causes output to be displayed in a format that may be reused as input.
+If no arguments are given, or if only \fB\-l\fP is supplied,
+information about remembered commands is printed.
+The return status is true unless a
+.I name
+is not found or an invalid option is supplied.
+.TP
+\fBhelp\fP [\fB\-dms\fP] [\fIpattern\fP]
+Display helpful information about builtin commands.  If
+.I pattern
+is specified,
+.B help
+gives detailed help on all commands matching
+.IR pattern ;
+otherwise help for all the builtins and shell control structures
+is printed.
+.RS
+.PD 0
+.TP
+.B \-d
+Display a short description of each \fIpattern\fP
+.TP
+.B \-m
+Display the description of each \fIpattern\fP in a manpage-like format
+.TP
+.B \-s
+Display only a short usage synopsis for each \fIpattern\fP
+.PD
+.PP
+The return status is 0 unless no command matches
+.IR pattern .
+.RE
+.TP
+\fBhistory [\fIn\fP]
+.PD 0
+.TP
+\fBhistory\fP \fB\-c\fP
+.TP
+\fBhistory \-d\fP \fIoffset\fP
+.TP
+\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
+.TP
+\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
+.TP
+\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
+.PD
+With no options, display the command
+history list with line numbers.  Lines listed
+with a 
+.B *
+have been modified.  An argument of
+.I n
+lists only the last
+.I n
+lines.
+If the shell variable
+.SM
+.B HISTTIMEFORMAT
+is set and not null,
+it is used as a format string for \fIstrftime\fP(3) to display
+the time stamp associated with each displayed history entry.
+No intervening blank is printed between the formatted time stamp
+and the history line.
+If \fIfilename\fP is supplied, it is used as the
+name of the history file; if not, the value of
+.SM
+.B HISTFILE
+is used.  Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-c
+Clear the history list by deleting all the entries.
+.TP
+\fB\-d\fP \fIoffset\fP
+Delete the history entry at position \fIoffset\fP.
+.TP
+.B \-a
+Append the ``new'' history lines (history lines entered since the
+beginning of the current \fBbash\fP session) to the history file.
+.TP
+.B \-n
+Read the history lines not already read from the history
+file into the current history list.  These are lines
+appended to the history file since the beginning of the
+current \fBbash\fP session.
+.TP
+.B \-r
+Read the contents of the history file
+and append them to the current history list.
+.TP
+.B \-w
+Write the current history list to the history file, overwriting the
+history file's contents.
+.TP
+.B \-p
+Perform history substitution on the following \fIargs\fP and display
+the result on the standard output.
+Does not store the results in the history list.
+Each \fIarg\fP must be quoted to disable normal history expansion.
+.TP
+.B \-s
+Store the
+.I args
+in the history list as a single entry.  The last command in the
+history list is removed before the
+.I args
+are added.
+.PD
+.PP
+If the
+.SM
+.B HISTTIMEFORMAT
+variable is set, the time stamp information
+associated with each history entry is written to the history file,
+marked with the history comment character.
+When the history file is read, lines beginning with the history
+comment character followed immediately by a digit are interpreted
+as timestamps for the previous history line.
+The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the
+history expansion supplied as an argument to \fB\-p\fP fails.
+.RE
+.TP
+\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
+.PD 0
+.TP
+\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
+.PD
+The first form lists the active jobs.  The options have the following
+meanings:
+.RS
+.PD 0
+.TP
+.B \-l
+List process IDs
+in addition to the normal information.
+.TP
+.B \-n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+.TP
+.B \-p
+List only the process ID of the job's process group
+leader.
+.TP
+.B \-r
+Display only running jobs.
+.TP
+.B \-s
+Display only stopped jobs.
+.PD
+.PP
+If
+.I jobspec
+is given, output is restricted to information about that job.
+The return status is 0 unless an invalid option is encountered
+or an invalid
+.I jobspec
+is supplied.
+.PP
+If the
+.B \-x
+option is supplied,
+.B jobs
+replaces any
+.I jobspec
+found in
+.I command
+or
+.I args
+with the corresponding process group ID, and executes
+.I command
+passing it
+.IR args ,
+returning its exit status.
+.RE
+.TP
+\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
+.PD 0
+.TP
+\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
+.PD
+Send the signal named by
+.I sigspec
+or
+.I signum
+to the processes named by
+.I pid
+or
+.IR jobspec .
+.I sigspec
+is either a case-insensitive signal name such as
+.SM
+.B SIGKILL
+(with or without the
+.SM
+.B SIG
+prefix) or a signal number;
+.I signum
+is a signal number.
+If
+.I sigspec
+is not present, then
+.SM
+.B SIGTERM
+is assumed.
+An argument of
+.B \-l
+lists the signal names.
+If any arguments are supplied when
+.B \-l
+is given, the names of the signals corresponding to the arguments are
+listed, and the return status is 0.
+The \fIexit_status\fP argument to
+.B \-l
+is a number specifying either a signal number or the exit status of
+a process terminated by a signal.
+.B kill
+returns true if at least one signal was successfully sent, or false
+if an error occurs or an invalid option is encountered.
+.TP
+\fBlet\fP \fIarg\fP [\fIarg\fP ...]
+Each
+.I arg
+is an arithmetic expression to be evaluated (see
+.SM
+.B "ARITHMETIC EVALUATION"
+above).
+If the last
+.I arg
+evaluates to 0,
+.B let
+returns 1; 0 is returned otherwise.
+.TP
+\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
+For each argument, a local variable named
+.I name 
+is created, and assigned
+.IR value .
+The \fIoption\fP can be any of the options accepted by \fBdeclare\fP.
+When
+.B local
+is used within a function, it causes the variable
+.I name
+to have a visible scope restricted to that function and its children.
+With no operands,
+.B local
+writes a list of local variables to the standard output.  It is
+an error to use
+.B local
+when not within a function.  The return status is 0 unless
+.B local
+is used outside a function, an invalid
+.I name
+is supplied, or
+\fIname\fP is a readonly variable.
+.TP
+.B logout
+Exit a login shell.
+.TP
+\fBmapfile\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP]
+.PD 0
+.TP
+\fBreadarray\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP]
+.PD
+Read lines from the standard input into the indexed array variable
+.IR array ,
+or from file descriptor 
+.IR fd
+if the 
+.B \-u
+option is supplied.
+The variable
+.SM
+.B MAPFILE
+is the default \fIarray\fP.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-n
+Copy at most
+.I count
+lines.  If \fIcount\fP is 0, all lines are copied.
+.TP
+.B \-O
+Begin assigning to
+.I array
+at index
+.IR origin .
+The default index is 0.
+.TP
+.B \-s
+Discard the first \fIcount\fP lines read.
+.TP
+.B \-t
+Remove a trailing newline from each line read.
+.TP
+.B \-u
+Read lines from file descriptor \fIfd\fP instead of the standard input.
+.TP
+.B \-C
+Evaluate
+.I callback
+each time \fIquantum\fP lines are read.  The \fB\-c\fP option specifies
+.IR quantum .
+.TP
+.B \-c
+Specify the number of lines read between each call to
+.IR callback .
+.PD
+.PP
+If
+.B \-C
+is specified without 
+.BR \-c ,
+the default quantum is 5000.
+When \fIcallback\fP is evaluated, it is supplied the index of the next
+array element to be assigned and the line to be assigned to that element
+as additional arguments.
+\fIcallback\fP is evaluated after the line is read but before the 
+array element is assigned.
+.PP
+If not supplied with an explicit origin, \fBmapfile\fP will clear \fIarray\fP
+before assigning to it.
+.PP
+\fBmapfile\fP returns successfully unless an invalid option or option
+argument is supplied, \fIarray\fP is invalid or unassignable, or if
+\fIarray\fP is not an indexed array.
+.RE
+.TP
+\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
+Removes entries from the directory stack.  With no arguments,
+removes the top directory from the stack, and performs a
+.B cd
+to the new top directory.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+.TP
+\fB+\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the left of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd +0''
+.if t \f(CWpopd +0\fP
+removes the first directory,
+.if n ``popd +1''
+.if t \f(CWpopd +1\fP
+the second.
+.TP
+\fB\-\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the right of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd -0''
+.if t \f(CWpopd -0\fP
+removes the last directory,
+.if n ``popd -1''
+.if t \f(CWpopd -1\fP
+the next to last.
+.PD
+.PP
+If the
+.B popd
+command is successful, a 
+.B dirs
+is performed as well, and the return status is 0.
+.B popd
+returns false if an invalid option is encountered, the directory stack
+is empty, a non-existent directory stack entry is specified, or the
+directory change fails.
+.RE
+.TP
+\fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformat\fP [\fIarguments\fP]
+Write the formatted \fIarguments\fP to the standard output under the
+control of the \fIformat\fP.
+The \fB\-v\fP option causes the output to be assigned to the variable
+\fIvar\fP rather than being printed to the standard output.
+.sp 1
+The \fIformat\fP is a character string which contains three types of objects:
+plain characters, which are simply copied to standard output, character
+escape sequences, which are converted and copied to the standard output, and
+format specifications, each of which causes printing of the next successive
+\fIargument\fP.
+In addition to the standard \fIprintf\fP(1) format specifications,
+\fBprintf\fP interprets the following extensions:
+.RS
+.PD 0
+.TP
+.B %b
+causes
+\fBprintf\fP to expand backslash escape sequences in the corresponding
+\fIargument\fP (except that \fB\ec\fP terminates output, backslashes in
+\fB\e\(aq\fP, \fB\e"\fP, and \fB\e?\fP are not removed, and octal escapes
+beginning with \fB\e0\fP may contain up to four digits).
+.TP
+.B %q
+causes \fBprintf\fP to output the corresponding
+\fIargument\fP in a format that can be reused as shell input.
+.TP
+.B %(\fIdatefmt\fP)T
+causes \fBprintf\fP to output the date-time string resulting from using
+\fIdatefmt\fP as a format string for \fIstrftime\fP(3).  The corresponding
+\fIargument\fP is an integer representing the number of seconds since the
+epoch.  Two special argument values may be used: -1 represents the current
+time, and -2 represents the time the shell was invoked.
+.PD
+.PP
+Arguments to non-string format specifiers are treated as C constants,
+except that a leading plus or minus sign is allowed, and if the leading
+character is a single or double quote, the value is the ASCII value of
+the following character.
+.PP
+The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP.
+If the \fIformat\fP requires more \fIarguments\fP than are supplied, the
+extra format specifications behave as if a zero value or null string, as
+appropriate, had been supplied.
+The return value is zero on success, non-zero on failure.
+.RE
+.TP
+\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
+.PD 0
+.TP
+\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
+.PD
+Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.  With no arguments, exchanges the top two directories
+and returns 0, unless the directory stack is empty.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+.TP
+\fB+\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the left of the list shown by
+.BR dirs ,
+starting with zero)
+is at the top.
+.TP
+\fB\-\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the right of the list shown by
+.BR dirs ,
+starting with zero) is at the top.
+.TP
+.I dir
+Adds
+.I dir
+to the directory stack at the top, making it the
+new current working directory as if it had been supplied as the argument
+to the \fBcd\fP builtin.
+.PD
+.PP
+If the
+.B pushd
+command is successful, a 
+.B dirs
+is performed as well.
+If the first form is used,
+.B pushd
+returns 0 unless the cd to
+.I dir
+fails.  With the second form,
+.B pushd
+returns 0 unless the directory stack is empty,
+a non-existent directory stack element is specified,
+or the directory change to the specified new current directory
+fails.
+.RE
+.TP
+\fBpwd\fP [\fB\-LP\fP]
+Print the absolute pathname of the current working directory.
+The pathname printed contains no symbolic links if the
+.B \-P
+option is supplied or the 
+.B \-o physical
+option to the
+.B set
+builtin command is enabled.
+If the
+.B \-L
+option is used, the pathname printed may contain symbolic links.
+The return status is 0 unless an error occurs while
+reading the name of the current directory or an
+invalid option is supplied.
+.TP
+\fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...]
+One line is read from the standard input, or from the file descriptor
+\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word
+is assigned to the first
+.IR name ,
+the second word to the second
+.IR name ,
+and so on, with leftover words and their intervening separators assigned
+to the last
+.IR name .
+If there are fewer words read from the input stream than names,
+the remaining names are assigned empty values.
+The characters in 
+.SM
+.B IFS
+are used to split the line into words.
+The backslash character (\fB\e\fP) may be used to remove any special
+meaning for the next character read and for line continuation.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-a \fIaname\fP
+The words are assigned to sequential indices
+of the array variable
+.IR aname ,
+starting at 0.
+.I aname
+is unset before any new values are assigned.
+Other \fIname\fP arguments are ignored.
+.TP
+.B \-d \fIdelim\fP
+The first character of \fIdelim\fP is used to terminate the input line,
+rather than newline.
+.TP
+.B \-e
+If the standard input
+is coming from a terminal,
+.B readline
+(see
+.SM
+.B READLINE
+above) is used to obtain the line.
+Readline uses the current (or default, if line editing was not previously
+active) editing settings.
+.TP
+.B \-i \fItext\fP
+If
+.B readline
+is being used to read the line, \fItext\fP is placed into the editing
+buffer before editing begins.
+.TP
+.B \-n \fInchars\fP
+\fBread\fP returns after reading \fInchars\fP characters rather than
+waiting for a complete line of input, but honor a delimiter if fewer
+than \fInchars\fP characters are read before the delimiter.
+.TP
+.B \-N \fInchars\fP
+\fBread\fP returns after reading exactly \fInchars\fP characters rather
+than waiting for a complete line of input, unless EOF is encountered or
+\fBread\fP times out.
+Delimiter characters encountered in the input are
+not treated specially and do not cause \fBread\fP to return until
+\fInchars\fP characters are read.
+.TP
+.B \-p \fIprompt\fP
+Display \fIprompt\fP on standard error, without a
+trailing newline, before attempting to read any input.  The prompt
+is displayed only if input is coming from a terminal.
+.TP
+.B \-r
+Backslash does not act as an escape character.
+The backslash is considered to be part of the line.
+In particular, a backslash-newline pair may not be used as a line
+continuation.
+.TP
+.B \-s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+.TP
+.B \-t \fItimeout\fP
+Cause \fBread\fP to time out and return failure if a complete line of
+input is not read within \fItimeout\fP seconds.
+\fItimeout\fP may be a decimal number with a fractional portion following
+the decimal point.
+This option is only effective if \fBread\fP is reading input from a
+terminal, pipe, or other special file; it has no effect when reading
+from regular files.
+If \fItimeout\fP is 0, \fBread\fP returns immediately, without trying to
+read any data.  The exit statis is 0 if input is available on
+the specified file descriptor, non-zero otherwise.
+The exit status is greater than 128 if the timeout is exceeded.
+.TP
+.B \-u \fIfd\fP
+Read input from file descriptor \fIfd\fP.
+.PD
+.PP
+If no
+.I names
+are supplied, the line read is assigned to the variable
+.SM
+.BR REPLY .
+The return code is zero, unless end-of-file is encountered, \fBread\fP
+times out (in which case the return code is greater than 128),
+a variable assignment error (such as assigning to a readonly variable) occurs,
+or an invalid file descriptor is supplied as the argument to \fB\-u\fP.
+.RE
+.TP
+\fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIname\fP[=\fIword\fP] ...]
+.PD
+The given
+\fInames\fP are marked readonly; the values of these
+.I names
+may not be changed by subsequent assignment.
+If the
+.B \-f
+option is supplied, the functions corresponding to the
+\fInames\fP are so
+marked.
+The
+.B \-a
+option restricts the variables to indexed arrays; the
+.B \-A
+option restricts the variables to associative arrays.
+If both options are supplied,
+.B \-A
+takes precedence.
+If no
+.I name
+arguments are given, or if the
+.B \-p
+option is supplied, a list of all readonly names is printed.
+The other options may be used to restrict the output to a subset of
+the set of readonly names.
+The
+.B \-p
+option causes output to be displayed in a format that
+may be reused as input.
+If a variable name is followed by =\fIword\fP, the value of
+the variable is set to \fIword\fP.
+The return status is 0 unless an invalid option is encountered,
+one of the
+.I names
+is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBreturn\fP [\fIn\fP]
+Causes a function to stop executing and return the value specified by
+.I n
+to its caller.
+If 
+.I n
+is omitted, the return status is that of the last command
+executed in the function body.  If
+.B return
+is used outside a function,
+but during execution of a script by the 
+.B .
+(\fBsource\fP) command, it causes the shell to stop executing
+that script and return either
+.I n
+or the exit status of the last command executed within the
+script as the exit status of the script.
+If \fIn\fP is supplied, the return value is its least significant
+8 bits.
+The return status is non-zero if
+.B return
+is supplied a non-numeric argument, or
+is used outside a
+function and not during execution of a script by \fB.\fP\^ or \fBsource\fP.
+Any command associated with the \fBRETURN\fP trap is executed
+before execution resumes after the function or script.
+.TP
+\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...]
+.PD 0
+.TP
+\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...]
+.PD
+Without options, the name and value of each shell variable are displayed
+in a format that can be reused as input
+for setting or resetting the currently-set variables.
+Read-only variables cannot be reset.
+In \fIposix mode\fP, only shell variables are listed.
+The output is sorted according to the current locale.
+When options are specified, they set or unset shell attributes.
+Any arguments remaining after option processing are treated
+as values for the positional parameters and are assigned, in order, to 
+.BR $1 ,
+.BR $2 ,
+.B ...
+.BR $\fIn\fP .
+Options, if specified, have the following meanings:
+.RS
+.PD 0
+.TP 8
+.B \-a
+Automatically mark variables and functions which are modified or
+created for export to the environment of subsequent commands.
+.TP 8
+.B \-b
+Report the status of terminated background jobs
+immediately, rather than before the next primary prompt.  This is
+effective only when job control is enabled.
+.TP 8
+.B \-e
+Exit immediately if a
+\fIpipeline\fP (which may consist of a single \fIsimple command\fP),
+a \fIlist\fP,
+or a \fIcompound command\fP
+(see
+.SM
+.B SHELL GRAMMAR
+above),  exits with a non-zero status.
+The shell does not exit if the
+command that fails is part of the command list immediately following a
+.B while
+or
+.B until
+keyword, 
+part of the test following the
+.B if
+or
+.B elif
+reserved words, part of any command executed in a
+.B &&
+or
+.B ||
+list except the command following the final \fB&&\fP or \fB||\fP,
+any command in a pipeline but the last,
+or if the command's return value is
+being inverted with
+.BR ! .
+If a compound command other than a subshell
+returns a non-zero status because a command failed
+while \fB\-e\fP was being ignored, the shell does not exit.
+A trap on \fBERR\fP, if set, is executed before the shell exits.
+This option applies to the shell environment and each subshell environment
+separately (see
+.SM
+.B "COMMAND EXECUTION ENVIRONMENT"
+above), and may cause
+subshells to exit before executing all the commands in the subshell.
+.TP 8
+.B \-f
+Disable pathname expansion.
+.TP 8 
+.B \-h
+Remember the location of commands as they are looked up for execution.
+This is enabled by default.
+.TP 8
+.B \-k
+All arguments in the form of assignment statements
+are placed in the environment for a command, not just
+those that precede the command name.
+.TP 8
+.B \-m
+Monitor mode.  Job control is enabled.  This option is on
+by default for interactive shells on systems that support
+it (see
+.SM
+.B JOB CONTROL
+above).
+All processes run in a separate process group.
+When a background job completes, the shell prints a line
+containing its exit status.
+.TP 8
+.B \-n
+Read commands but do not execute them.  This may be used to 
+check a shell script for syntax errors.  This is ignored by
+interactive shells.
+.TP 8
+.B \-o \fIoption\-name\fP
+The \fIoption\-name\fP can be one of the following:
+.RS
+.TP 8
+.B allexport
+Same as
+.BR \-a .
+.TP 8
+.B braceexpand
+Same as
+.BR \-B .
+.TP 8
+.B emacs
+Use an emacs-style command line editing interface.  This is enabled
+by default when the shell is interactive, unless the shell is started
+with the
+.B \-\-noediting
+option.
+This also affects the editing interface used for \fBread \-e\fP.
+.TP 8
+.B errexit
+Same as
+.BR \-e .
+.TP 8
+.B errtrace
+Same as
+.BR \-E .
+.TP 8
+.B functrace
+Same as
+.BR \-T .
+.TP 8
+.B hashall
+Same as
+.BR \-h .
+.TP 8
+.B histexpand
+Same as
+.BR \-H .
+.TP 8
+.B history
+Enable command history, as described above under
+.SM
+.BR HISTORY .
+This option is on by default in interactive shells.
+.TP 8
+.B ignoreeof
+The effect is as if the shell command
+.if t \f(CWIGNOREEOF=10\fP
+.if n ``IGNOREEOF=10''
+had been executed
+(see
+.B Shell Variables
+above).
+.TP 8
+.B keyword
+Same as
+.BR \-k .
+.TP 8
+.B monitor
+Same as
+.BR \-m .
+.TP 8
+.B noclobber
+Same as
+.BR \-C .
+.TP 8
+.B noexec
+Same as
+.BR \-n .
+.TP 8
+.B noglob
+Same as
+.BR \-f .
+.TP 8
+.B nolog
+Currently ignored.
+.TP 8
+.B notify
+Same as
+.BR \-b .
+.TP 8
+.B nounset
+Same as
+.BR \-u .
+.TP 8
+.B onecmd
+Same as
+.BR \-t .
+.TP 8
+.B physical
+Same as
+.BR \-P .
+.TP 8
+.B pipefail
+If set, the return value of a pipeline is the value of the last
+(rightmost) command to exit with a non-zero status, or zero if all
+commands in the pipeline exit successfully.
+This option is disabled by default.
+.TP 8
+.B posix
+Change the behavior of
+.B bash
+where the default operation differs
+from the POSIX standard to match the standard (\fIposix mode\fP).
+.TP 8
+.B privileged
+Same as
+.BR \-p .
+.TP 8
+.B verbose
+Same as
+.BR \-v .
+.TP 8
+.B vi
+Use a vi-style command line editing interface.
+This also affects the editing interface used for \fBread \-e\fP.
+.TP 8
+.B xtrace
+Same as
+.BR \-x .
+.sp .5
+.PP
+If
+.B \-o
+is supplied with no \fIoption\-name\fP, the values of the current options are
+printed.
+If
+.B +o
+is supplied with no \fIoption\-name\fP, a series of
+.B set
+commands to recreate the current option settings is displayed on
+the standard output.
+.RE
+.TP 8
+.B \-p
+Turn on
+.I privileged
+mode.  In this mode, the
+.SM
+.B $ENV
+and
+.SM
+.B $BASH_ENV
+files are not processed, shell functions are not inherited from the
+environment, and the
+.SM
+.BR SHELLOPTS ,
+.SM
+.BR BASHOPTS ,
+.SM
+.BR CDPATH ,
+and
+.SM
+.B GLOBIGNORE
+variables, if they appear in the environment, are ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at startup, the effective user id is
+not reset.
+Turning this option off causes the effective user
+and group ids to be set to the real user and group ids.
+.TP 8
+.B \-t
+Exit after reading and executing one command.
+.TP 8
+.B \-u
+Treat unset variables and parameters other than the special
+parameters "@" and "*" as an error when performing
+parameter expansion.  If expansion is attempted on an
+unset variable or parameter, the shell prints an error message, and,
+if not interactive, exits with a non-zero status.
+.TP 8
+.B \-v
+Print shell input lines as they are read.
+.TP 8
+.B \-x
+After expanding each \fIsimple command\fP,
+\fBfor\fP command, \fBcase\fP command, \fBselect\fP command, or
+arithmetic \fBfor\fP command, display the expanded value of
+.SM
+.BR PS4 ,
+followed by the command and its expanded arguments
+or associated word list.
+.TP 8
+.B \-B
+The shell performs brace expansion (see
+.B Brace Expansion
+above).  This is on by default.
+.TP 8
+.B \-C
+If set,
+.B bash
+does not overwrite an existing file with the
+.BR > ,
+.BR >& ,
+and
+.B <>
+redirection operators.  This may be overridden when 
+creating output files by using the redirection operator
+.B >|
+instead of
+.BR > .
+.TP 8
+.B \-E
+If set, any trap on \fBERR\fP is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The \fBERR\fP trap is normally not inherited in such cases.
+.TP 8
+.B \-H
+Enable
+.B !
+style history substitution.  This option is on by
+default when the shell is interactive.
+.TP 8
+.B \-P
+If set, the shell does not resolve symbolic links when executing
+commands such as
+.B cd
+that change the current working directory.  It uses the
+physical directory structure instead.  By default,
+.B bash
+follows the logical chain of directories when performing commands
+which change the current directory.
+.TP 8
+.B \-T
+If set, any traps on \fBDEBUG\fP and \fBRETURN\fP are inherited by shell
+functions, command substitutions, and commands executed in a
+subshell environment.
+The \fBDEBUG\fP and \fBRETURN\fP traps are normally not inherited
+in such cases.
+.TP 8
+.B \-\-
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+\fIarg\fPs, even if some of them begin with a
+.BR \- .
+.TP 8
+.B \-
+Signal the end of options, cause all remaining \fIarg\fPs to be
+assigned to the positional parameters.  The
+.B \-x
+and
+.B \-v
+options are turned off.
+If there are no \fIarg\fPs,
+the positional parameters remain unchanged.
+.PD
+.PP
+The options are off by default unless otherwise noted.
+Using + rather than \- causes these options to be turned off.
+The options can also be specified as arguments to an invocation of
+the shell.
+The current set of options may be found in
+.BR $\- .
+The return status is always true unless an invalid option is encountered.
+.RE
+.TP
+\fBshift\fP [\fIn\fP]
+The positional parameters from \fIn\fP+1 ... are renamed to
+.B $1
+.B ....
+Parameters represented by the numbers \fB$#\fP
+down to \fB$#\fP\-\fIn\fP+1 are unset.
+.I n
+must be a non-negative number less than or equal to \fB$#\fP.
+If
+.I n
+is 0, no parameters are changed.
+If
+.I n 
+is not given, it is assumed to be 1.
+If
+.I n
+is greater than \fB$#\fP, the positional parameters are not changed.
+The return status is greater than zero if
+.I n
+is greater than
+.B $#
+or less than zero; otherwise 0.
+.TP
+\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the
+.B \-p
+option, a list of all settable options is displayed, with
+an indication of whether or not each is set.
+The \fB\-p\fP option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-s
+Enable (set) each \fIoptname\fP.
+.TP
+.B \-u
+Disable (unset) each \fIoptname\fP.
+.TP
+.B \-q
+Suppresses normal output (quiet mode); the return status indicates
+whether the \fIoptname\fP is set or unset.
+If multiple \fIoptname\fP arguments are given with
+.BR \-q ,
+the return status is zero if all \fIoptnames\fP are enabled; non-zero
+otherwise.
+.TP
+.B \-o
+Restricts the values of \fIoptname\fP to be those defined for the
+.B \-o
+option to the
+.B set
+builtin.
+.PD
+.PP
+If either
+.B \-s
+or
+.B \-u
+is used with no \fIoptname\fP arguments,
+.B shopt
+shows only those options which are set or unset, respectively.
+Unless otherwise noted, the \fBshopt\fP options are disabled (unset)
+by default.
+.PP
+The return status when listing options is zero if all \fIoptnames\fP
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an \fIoptname\fP is not a valid shell
+option.
+.PP
+The list of \fBshopt\fP options is:
+.if t .sp .5v
+.if n .sp 1v
+.PD 0
+.TP 8
+.B autocd
+If set, a command name that is the name of a directory is executed as if
+it were the argument to the \fBcd\fP command.
+This option is only used by interactive shells.
+.TP 8
+.B cdable_vars
+If set, an argument to the
+.B cd
+builtin command that
+is not a directory is assumed to be the name of a variable whose
+value is the directory to change to.
+.TP 8
+.B cdspell
+If set, minor errors in the spelling of a directory component in a
+.B cd
+command will be corrected.
+The errors checked for are transposed characters,
+a missing character, and one character too many.
+If a correction is found, the corrected filename is printed,
+and the command proceeds.
+This option is only used by interactive shells.
+.TP 8
+.B checkhash
+If set, \fBbash\fP checks that a command found in the hash
+table exists before trying to execute it.  If a hashed command no
+longer exists, a normal path search is performed.
+.TP 8
+.B checkjobs
+If set, \fBbash\fP lists the status of any stopped and running jobs before
+exiting an interactive shell.  If any jobs are running, this causes
+the exit to be deferred until a second exit is attempted without an
+intervening command (see
+.SM
+.B "JOB CONTROL"
+above).  The shell always
+postpones exiting if any jobs are stopped.
+.TP 8
+.B checkwinsize
+If set, \fBbash\fP checks the window size after each command
+and, if necessary, updates the values of
+.SM
+.B LINES
+and
+.SM
+.BR COLUMNS .
+.TP 8
+.B cmdhist
+If set,
+.B bash
+attempts to save all lines of a multiple-line
+command in the same history entry.  This allows
+easy re-editing of multi-line commands.
+.TP 8
+.B compat31
+If set,
+.B bash
+changes its behavior to that of version 3.1 with respect to quoted
+arguments to the \fB[[\fP conditional command's \fB=~\fP operator
+and locale-specific string comparison when using the \fB[[\fP
+conditional command's \fB<\fP and \fB>\fP operators.
+Bash versions prior to bash-4.1 use ASCII collation and
+.IR strcmp (3);
+bash-4.1 and later use the current locale's collation sequence and
+.IR strcoll (3).
+.TP 8
+.B compat32
+If set,
+.B bash
+changes its behavior to that of version 3.2 with respect to
+locale-specific string comparison when using the \fB[[\fP
+conditional command's \fB<\fP and \fB>\fP operators (see previous item).
+.TP 8
+.B compat40
+If set,
+.B bash
+changes its behavior to that of version 4.0 with respect to locale-specific
+string comparison when using the \fB[[\fP
+conditional command's \fB<\fP and \fB>\fP operators (see description of
+\fBcompat31\fP)
+and the effect of interrupting a command list.
+Bash versions 4.0 and later interrupt the list as if the shell received the
+interrupt; previous versions continue with the next command in the list.
+.TP 8
+.B compat41
+If set,
+.BR bash ,
+when in posix mode, treats a single quote in a double-quoted
+parameter expansion as a special character.  The single quotes must match
+(an even number) and the characters between the single quotes are considered
+quoted.  This is the behavior of posix mode through version 4.1.
+The default bash behavior remains as in previous versions.
+.TP 8
+.B complete_fullquote
+If set,
+.B bash
+quotes all shell metacharacters in filenames and directory names when
+performing completion.
+If not set,
+.B bash
+removes metacharacters such as the dollar sign from the set of
+characters that will be quoted in completed filenames
+when these metacharacters appear in shell variable references in words to be
+completed.
+This means that dollar signs in variable names that expand to directories
+will not be quoted;
+however, any dollar signs appearing in filenames will not be quoted, either.
+This is active only when bash is using backslashes to quote completed
+filenames.
+This variable is set by default, which is the default bash behavior in
+versions through 4.2.
+.TP 8
+.B direxpand
+If set,
+.B bash
+replaces directory names with the results of word expansion when performing
+filename completion.  This changes the contents of the readline editing
+buffer.
+If not set,
+.B bash
+attempts to preserve what the user typed.
+.TP 8
+.B dirspell
+If set,
+.B bash
+attempts spelling correction on directory names during word completion
+if the directory name initially supplied does not exist.
+.TP 8
+.B dotglob
+If set, 
+.B bash
+includes filenames beginning with a `.' in the results of pathname
+expansion.
+.TP 8
+.B execfail
+If set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the
+.B exec
+builtin command.  An interactive shell does not exit if
+.B exec
+fails.
+.TP 8
+.B expand_aliases
+If set, aliases are expanded as described above under
+.SM
+.BR ALIASES .
+This option is enabled by default for interactive shells.
+.TP 8
+.B extdebug
+If set, behavior intended for use by debuggers is enabled:
+.RS
+.TP
+.B 1.
+The \fB\-F\fP option to the \fBdeclare\fP builtin displays the source
+file name and line number corresponding to each function name supplied
+as an argument.
+.TP
+.B 2.
+If the command run by the \fBDEBUG\fP trap returns a non-zero value, the
+next command is skipped and not executed.
+.TP
+.B 3.
+If the command run by the \fBDEBUG\fP trap returns a value of 2, and the
+shell is executing in a subroutine (a shell function or a shell script
+executed by the \fB.\fP or \fBsource\fP builtins), a call to
+\fBreturn\fP is simulated.
+.TP
+.B 4.
+.SM
+.B BASH_ARGC
+and
+.SM
+.B BASH_ARGV
+are updated as described in their descriptions above.
+.TP
+.B 5.
+Function tracing is enabled:  command substitution, shell functions, and
+subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the
+\fBDEBUG\fP and \fBRETURN\fP traps.
+.TP
+.B 6.
+Error tracing is enabled:  command substitution, shell functions, and
+subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the
+\fBERR\fP trap.
+.RE
+.TP 8
+.B extglob
+If set, the extended pattern matching features described above under
+\fBPathname Expansion\fP are enabled.
+.TP 8
+.B extquote
+If set, \fB$\fP\(aq\fIstring\fP\(aq and \fB$\fP"\fIstring\fP" quoting is
+performed within \fB${\fP\fIparameter\fP\fB}\fP expansions
+enclosed in double quotes.  This option is enabled by default.
+.TP 8
+.B failglob
+If set, patterns which fail to match filenames during pathname expansion
+result in an expansion error.
+.TP 8
+.B force_fignore
+If set, the suffixes specified by the
+.SM
+.B FIGNORE
+shell variable
+cause words to be ignored when performing word completion even if
+the ignored words are the only possible completions.
+See
+.SM
+\fBSHELL VARIABLES\fP
+above for a description of
+.SM
+.BR FIGNORE .
+This option is enabled by default.
+.TP 8
+.B globasciiranges
+If set, range expressions used in pattern matching (see
+.SM
+.B Pattern Matching
+above) behave as if in the traditional C locale when performing
+comparisons.  That is, the current locale's collating sequence
+is not taken into account, so
+.B b
+will not collate between
+.B A
+and
+.BR B ,
+and upper-case and lower-case ASCII characters will collate together.
+.TP 8
+.B globstar
+If set, the pattern \fB**\fP used in a pathname expansion context will
+match all files and zero or more directories and subdirectories.
+If the pattern is followed by a \fB/\fP, only directories and
+subdirectories match.
+.TP 8
+.B gnu_errfmt
+If set, shell error messages are written in the standard GNU error
+message format.
+.TP 8
+.B histappend
+If set, the history list is appended to the file named by the value
+of the
+.SM
+.B HISTFILE
+variable when the shell exits, rather than overwriting the file.
+.TP 8
+.B histreedit
+If set, and
+.B readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+.TP 8
+.B histverify
+If set, and 
+.B readline
+is being used, the results of history substitution are not immediately
+passed to the shell parser.  Instead, the resulting line is loaded into
+the \fBreadline\fP editing buffer, allowing further modification.
+.TP 8
+.B hostcomplete
+If set, and
+.B readline
+is being used, \fBbash\fP will attempt to perform hostname completion when a
+word containing a \fB@\fP is being completed (see
+.B Completing
+under
+.SM
+.B READLINE
+above).
+This is enabled by default.
+.TP 8
+.B huponexit
+If set, \fBbash\fP will send
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.TP 8
+.B interactive_comments
+If set, allow a word beginning with
+.B #
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell (see
+.SM
+.B COMMENTS
+above).  This option is enabled by default.
+.TP 8
+.B lastpipe
+If set, and job control is not active, the shell runs the last command of
+a pipeline not executed in the background in the current shell environment.
+.TP 8
+.B lithist
+If set, and the
+.B cmdhist
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+.TP 8
+.B login_shell
+The shell sets this option if it is started as a login shell (see
+.SM
+.B "INVOCATION"
+above).
+The value may not be changed.
+.TP 8
+.B mailwarn
+If set, and a file that \fBbash\fP is checking for mail has been  
+accessed since the last time it was checked, the message ``The mail in
+\fImailfile\fP has been read'' is displayed.
+.TP 8
+.B no_empty_cmd_completion
+If set, and
+.B readline
+is being used,
+.B bash
+will not attempt to search the
+.SM
+.B PATH
+for possible completions when
+completion is attempted on an empty line.
+.TP 8
+.B nocaseglob
+If set,
+.B bash
+matches filenames in a case\-insensitive fashion when performing pathname
+expansion (see
+.B Pathname Expansion
+above).
+.TP 8
+.B nocasematch
+If set,
+.B bash
+matches patterns in a case\-insensitive fashion when performing matching
+while executing \fBcase\fP or \fB[[\fP conditional commands.
+.TP 8
+.B nullglob
+If set,
+.B bash
+allows patterns which match no
+files (see
+.B Pathname Expansion
+above)
+to expand to a null string, rather than themselves.
+.TP 8
+.B progcomp
+If set, the programmable completion facilities (see
+\fBProgrammable Completion\fP above) are enabled.
+This option is enabled by default.
+.TP 8
+.B promptvars
+If set, prompt strings undergo
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal after being expanded as described in
+.SM
+.B PROMPTING
+above.  This option is enabled by default.
+.TP 8
+.B restricted_shell
+The shell sets this option if it is started in restricted mode (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+The value may not be changed.
+This is not reset when the startup files are executed, allowing
+the startup files to discover whether or not a shell is restricted.
+.TP 8
+.B shift_verbose
+If set, the
+.B shift
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+.TP 8
+.B sourcepath
+If set, the
+\fBsource\fP (\fB.\fP) builtin uses the value of
+.SM
+.B PATH
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+.TP 8
+.B xpg_echo
+If set, the \fBecho\fP builtin expands backslash-escape sequences
+by default.
+.RE
+.PD
+.TP
+\fBsuspend\fP [\fB\-f\fP]
+Suspend the execution of this shell until it receives a
+.SM
+.B SIGCONT
+signal.  A login shell cannot be suspended; the
+.B \-f
+option can be used to override this and force the suspension.
+The return status is 0 unless the shell is a login shell and
+.B \-f
+is not supplied, or if job control is not enabled.
+.TP
+\fBtest\fP \fIexpr\fP
+.PD 0
+.TP
+\fB[\fP \fIexpr\fP \fB]\fP
+Return a status of 0 (true) or 1 (false) depending on
+the evaluation of the conditional expression
+.IR expr .
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described above under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+\fBtest\fP does not accept any options, nor does it accept and ignore
+an argument of \fB\-\-\fP as signifying the end of options.
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence.
+The evaluation depends on the number of arguments; see below.
+Operator precedence is used when there are five or more arguments.
+.RS
+.PD 0
+.TP
+.B ! \fIexpr\fP
+True if
+.I expr
+is false.
+.TP
+.B ( \fIexpr\fP )
+Returns the value of \fIexpr\fP.
+This may be used to override the normal precedence of operators.
+.TP
+\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
+True if both
+.I expr1
+and
+.I expr2
+are true.
+.TP
+\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
+True if either
+.I expr1
+or
+.I expr2
+is true.
+.PD
+.PP
+\fBtest\fP and \fB[\fP evaluate conditional
+expressions using a set of rules based on the number of arguments.
+.if t .sp 0.5
+.if n .sp 1
+.PD 0
+.TP
+0 arguments
+The expression is false.
+.TP
+1 argument
+The expression is true if and only if the argument is not null.
+.TP
+2 arguments
+If the first argument is \fB!\fP, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the expression is true if the unary test is true.
+If the first argument is not a valid unary conditional operator, the expression
+is false.
+.TP
+3 arguments
+The following conditions are applied in the order listed.
+If the second argument is one of the binary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the result of the expression is the result of the binary test using
+the first and third arguments as operands.
+The \fB\-a\fP and \fB\-o\fP operators are considered binary operators
+when there are three arguments.  
+If the first argument is \fB!\fP, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly \fB(\fP and the third argument is
+exactly \fB)\fP, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+.TP
+4 arguments
+If the first argument is \fB!\fP, the result is the negation of
+the three-argument expression composed of the remaining arguments.
+Otherwise, the expression is parsed and evaluated according to 
+precedence using the rules listed above.
+.TP
+5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+.if t .sp 0.5
+.if n .sp 1
+.LP
+When used with \fBtest\fP or \fB[\fP, the \fB<\fP and \fB>\fP operators
+sort lexicographically using ASCII ordering.
+.RE
+.PD
+.TP
+.B times
+Print the accumulated user and system times for the shell and
+for processes run from the shell.  The return status is 0.
+.TP
+\fBtrap\fP [\fB\-lp\fP] [[\fIarg\fP] \fIsigspec\fP ...]
+The command
+.I arg
+is to be read and executed when the shell receives
+signal(s)
+.IR sigspec .
+If
+.I arg
+is absent (and there is a single \fIsigspec\fP) or
+.BR \- ,
+each specified signal is
+reset to its original disposition (the value it had
+upon entrance to the shell).
+If 
+.I arg
+is the null string the signal specified by each
+.I sigspec
+is ignored by the shell and by the commands it invokes.
+If
+.I arg
+is not present and
+.B \-p
+has been supplied, then the trap commands associated with each
+.I sigspec
+are displayed.
+If no arguments are supplied or if only
+.B \-p
+is given,
+.B trap
+prints the list of commands associated with each signal.
+The
+.B \-l
+option causes the shell to print a list of signal names and
+their corresponding numbers.
+Each
+.I sigspec
+is either
+a signal name defined in <\fIsignal.h\fP>, or a signal number.
+Signal names are case insensitive and the
+.SM
+.B SIG
+prefix is optional.
+.if t .sp 0.5
+.if n .sp 1
+If a
+.I sigspec
+is
+.SM
+.B EXIT
+(0) the command
+.I arg
+is executed on exit from the shell.
+If a
+.I sigspec
+is
+.SM
+.BR DEBUG ,
+the command
+.I arg
+is executed before every \fIsimple command\fP, \fIfor\fP command,
+\fIcase\fP command, \fIselect\fP command, every arithmetic \fIfor\fP
+command, and before the first command executes in a shell function (see
+.SM
+.B SHELL GRAMMAR
+above).
+Refer to the description of the \fBextdebug\fP option to the
+\fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap.
+If a
+.I sigspec
+is
+.SM
+.BR RETURN ,
+the command
+.I arg
+is executed each time a shell function or a script executed with
+the \fB.\fP or \fBsource\fP builtins finishes executing.
+.if t .sp 0.5
+.if n .sp 1
+If a
+.I sigspec
+is
+.SM
+.BR ERR ,
+the command
+.I arg
+is executed whenever a simple command has a non\-zero exit status,
+subject to the following conditions.
+The
+.SM
+.B ERR
+trap is not executed if the failed
+command is part of the command list immediately following a
+.B while
+or
+.B until
+keyword, 
+part of the test in an
+.I if
+statement, part of a command executed in a
+.B &&
+or
+.B ||
+list, or if the command's return value is
+being inverted via
+.BR ! .
+These are the same conditions obeyed by the \fBerrexit\fP option.
+.if t .sp 0.5
+.if n .sp 1
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals that are not being ignored are reset to their original
+values in a subshell or subshell environment when one is created.
+The return status is false if any
+.I sigspec
+is invalid; otherwise
+.B trap
+returns true.
+.TP
+\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
+With no options, 
+indicate how each
+.I name
+would be interpreted if used as a command name.
+If the
+.B \-t
+option is used,
+.B type
+prints a string which is one of
+.IR alias ,
+.IR keyword ,
+.IR function ,
+.IR builtin ,
+or
+.I file 
+if
+.I name
+is an alias, shell reserved word, function, builtin, or disk file,
+respectively.
+If the
+.I name
+is not found, then nothing is printed, and an exit status of false
+is returned.
+If the
+.B \-p
+option is used,
+.B type
+either returns the name of the disk file
+that would be executed if
+.I name
+were specified as a command name,
+or nothing if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+The
+.B \-P
+option forces a
+.SM
+.B PATH
+search for each \fIname\fP, even if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+If a command is hashed,
+.B \-p
+and
+.B \-P
+print the hashed value, which is not necessarily the file that appears
+first in 
+.SM
+.BR PATH .
+If the
+.B \-a
+option is used, 
+.B type
+prints all of the places that contain
+an executable named 
+.IR name .
+This includes aliases and functions,
+if and only if the 
+.B \-p
+option is not also used.
+The table of hashed commands is not consulted
+when using
+.BR \-a .
+The
+.B \-f
+option suppresses shell function lookup, as with the \fBcommand\fP builtin.
+.B type
+returns true if all of the arguments are found, false if
+any are not found.
+.TP
+\fBulimit\fP [\fB\-HSTabcdefilmnpqrstuvx\fP [\fIlimit\fP]]
+Provides control over the resources available to the shell and to
+processes started by it, on systems that allow such control.
+The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
+set for the given resource.
+A hard limit cannot be increased by a non-root user once it is set;
+a soft limit may be increased up to the value of the hard limit.
+If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard
+limits are set.
+The value of
+.I limit
+can be a number in the unit specified for the resource
+or one of the special values
+.BR hard ,
+.BR soft ,
+or
+.BR unlimited ,
+which stand for the current hard limit, the current soft limit, and
+no limit, respectively.
+If
+.I limit
+is omitted, the current value of the soft limit of the resource is
+printed, unless the \fB\-H\fP option is given.  When more than one
+resource is specified, the limit name and unit are printed before the value.
+Other options are interpreted as follows:
+.RS
+.PD 0
+.TP
+.B \-a
+All current limits are reported
+.TP
+.B \-b
+The maximum socket buffer size
+.TP
+.B \-c
+The maximum size of core files created
+.TP
+.B \-d
+The maximum size of a process's data segment
+.TP
+.B \-e
+The maximum scheduling priority ("nice")
+.TP
+.B \-f
+The maximum size of files written by the shell and its children
+.TP
+.B \-i
+The maximum number of pending signals
+.TP
+.B \-l
+The maximum size that may be locked into memory
+.TP
+.B \-m
+The maximum resident set size (many systems do not honor this limit)
+.TP
+.B \-n
+The maximum number of open file descriptors (most systems do not
+allow this value to be set)
+.TP
+.B \-p
+The pipe size in 512-byte blocks (this may not be set)
+.TP
+.B \-q
+The maximum number of bytes in POSIX message queues
+.TP
+.B \-r
+The maximum real-time scheduling priority
+.TP
+.B \-s
+The maximum stack size
+.TP
+.B \-t
+The maximum amount of cpu time in seconds
+.TP
+.B \-u
+The maximum number of processes available to a single user
+.TP
+.B \-v
+The maximum amount of virtual memory available to the shell and, on
+some systems, to its children
+.TP
+.B \-x
+The maximum number of file locks
+.TP
+.B \-T
+The maximum number of threads
+.PD
+.PP
+If
+.I limit
+is given, and the
+.B \-a
+option is not used,
+\fIlimit\fP is the new value of the specified resource.
+If no option is given, then
+.B \-f
+is assumed.  Values are in 1024-byte increments, except for
+.BR \-t ,
+which is in seconds;
+.BR \-p ,
+which is in units of 512-byte blocks;
+and
+.BR \-T ,
+.BR \-b ,
+.BR \-n ,
+and
+.BR \-u ,
+which are unscaled values.
+The return status is 0 unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+.RE
+.TP
+\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+The user file-creation mask is set to 
+.IR mode .
+If
+.I mode
+begins with a digit, it
+is interpreted as an octal number; otherwise
+it is interpreted as a symbolic mode mask similar
+to that accepted by
+.IR chmod (1).
+If
+.I mode
+is omitted, the current value of the mask is printed.
+The
+.B \-S
+option causes the mask to be printed in symbolic form; the
+default output is an octal number.
+If the
+.B \-p
+option is supplied, and
+.I mode
+is omitted, the output is in a form that may be reused as input.
+The return status is 0 if the mode was successfully changed or if
+no \fImode\fP argument was supplied, and false otherwise.
+.TP
+\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
+Remove each \fIname\fP from the list of defined aliases.  If
+.B \-a
+is supplied, all alias definitions are removed.  The return
+value is true unless a supplied
+.I name
+is not a defined alias.
+.TP
+\fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fIname\fP ...]
+For each
+.IR name ,
+remove the corresponding variable or function.
+If the
+.B \-v
+option is given, each
+.I name
+refers to a shell variable, and that variable is removed.
+Read-only variables may not be unset.
+If
+.B \-f
+is specified, each
+.I name
+refers to a shell function, and the function definition
+is removed.
+If the
+.B \-n
+option is supplied, and \fIname\fP is a variable with the \fInameref\fP
+attribute, \fIname\fP will be unset rather than the variable it
+references.
+\fB\-n\fP has no effect if the \fB\-f\fP option is supplied.
+If no options are supplied, each \fIname\fP refers to a variable; if
+there is no variable by that name, any function with that name is
+unset.
+Each unset variable or function is removed from the environment
+passed to subsequent commands.
+If any of
+.SM
+.BR COMP_WORDBREAKS ,
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
+.SM
+.BR LINENO ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR FUNCNAME ,
+.SM
+.BR GROUPS ,
+or
+.SM
+.B DIRSTACK
+are unset, they lose their special properties, even if they are
+subsequently reset.  The exit status is true unless a
+.I name
+is readonly.
+.TP
+\fBwait\fP [\fIn ...\fP]
+Wait for each specified process and return its termination status.
+Each
+.I n
+may be a process
+ID or a job specification; if a job spec is given, all processes
+in that job's pipeline are waited for.  If
+.I n
+is not given, all currently active child processes
+are waited for, and the return status is zero.  If
+.I n
+specifies a non-existent process or job, the return status is
+127.  Otherwise, the return status is the exit status of the last
+process or job waited for.
+.\" bash_builtins
+.if \n(zZ=1 .ig zZ
+.SH "RESTRICTED SHELL"
+.\" rbash.1
+.zY
+.PP
+If
+.B bash
+is started with the name
+.BR rbash ,
+or the
+.B \-r
+option is supplied at invocation,
+the shell becomes restricted.
+A restricted shell is used to
+set up an environment more controlled than the standard shell.
+It behaves identically to
+.B bash
+with the exception that the following are disallowed or not performed:
+.IP \(bu
+changing directories with \fBcd\fP
+.IP \(bu
+setting or unsetting the values of
+.SM
+.BR SHELL ,
+.SM
+.BR PATH ,
+.SM
+.BR ENV ,
+or
+.SM
+.B BASH_ENV
+.IP \(bu
+specifying command names containing
+.B /
+.IP \(bu
+specifying a filename containing a
+.B /
+as an argument to the
+.B .
+builtin command
+.IP \(bu
+specifying a filename containing a slash as an argument to the
+.B \-p
+option to the
+.B hash
+builtin command
+.IP \(bu
+importing function definitions from the shell environment at startup
+.IP \(bu
+parsing the value of
+.SM
+.B SHELLOPTS
+from the shell environment at startup
+.IP \(bu
+redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
+.IP \(bu
+using the
+.B exec
+builtin command to replace the shell with another command
+.IP \(bu
+adding or deleting builtin commands with the
+.B \-f
+and
+.B \-d
+options to the
+.B enable
+builtin command
+.IP \(bu
+using the \fBenable\fP builtin command to enable disabled shell builtins
+.IP \(bu
+specifying the
+.B \-p
+option to the
+.B command
+builtin command
+.IP \(bu
+turning off restricted mode with
+\fBset +r\fP or \fBset +o restricted\fP.
+.PP
+These restrictions are enforced after any startup files are read.
+.PP
+.ie \n(zY=1 When a command that is found to be a shell script is executed,
+.el \{ When a command that is found to be a shell script is executed
+(see
+.SM
+.B "COMMAND EXECUTION"
+above),
+\}
+.B rbash
+turns off any restrictions in the shell spawned to execute the
+script.
+.\" end of rbash.1
+.if \n(zY=1 .ig zY
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIBash Reference Manual\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
+.TP
+\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
+.TP
+\fIemacs\fP(1), \fIvi\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN /bin/bash
+The \fBbash\fP executable
+.TP
+.FN /etc/profile
+The systemwide initialization file, executed for login shells
+.TP
+.FN ~/.bash_profile
+The personal initialization file, executed for login shells
+.TP
+.FN ~/.bashrc
+The individual per-interactive-shell startup file
+.TP
+.FN ~/.bash_logout
+The individual login shell cleanup file, executed when a login shell exits
+.TP
+.FN ~/.inputrc
+Individual \fIreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet.ramey@case.edu
+.SH BUG REPORTS
+If you find a bug in
+.B bash,
+you should report it.  But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of
+.BR bash .
+The latest version is always available from
+\fIftp://ftp.gnu.org/pub/gnu/bash/\fP.
+.PP
+Once you have determined that a bug actually exists, use the
+.I bashbug
+command to submit a bug report.
+If you have a fix, you are encouraged to mail that as well!
+Suggestions and `philosophical' bug reports may be mailed
+to \fIbug-bash@gnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+ALL bug reports should include:
+.PP
+.PD 0
+.TP 20
+The version number of \fBbash\fR
+.TP
+The hardware and operating system
+.TP
+The compiler used to compile
+.TP
+A description of the bug behaviour
+.TP
+A short script or `recipe' which exercises the bug
+.PD
+.PP
+.I bashbug
+inserts the first three items automatically into the template
+it provides for filing a bug report.
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet.ramey@case.edu .
+.SH BUGS
+.PP
+It's too big and too slow.
+.PP
+There are some subtle differences between 
+.B bash
+and traditional versions of
+.BR sh ,
+mostly because of the
+.SM
+.B POSIX
+specification.
+.PP
+Aliases are confusing in some uses.
+.PP
+Shell builtin commands and functions are not stoppable/restartable.
+.PP
+Compound commands and command sequences of the form `a ; b ; c'
+are not handled gracefully when process suspension is attempted.
+When a process is stopped, the shell immediately executes the next
+command in the sequence.
+It suffices to place the sequence of commands between
+parentheses to force it into a subshell, which may be stopped as
+a unit.
+.PP
+Array variables may not (yet) be exported.
+.PP
+There may be only one active coprocess at a time.
+.zZ
+.zY
index 5eee0936e407c01def3d4fd00743d636ee4cb027..e38431af869791b3584e6eee33856e37ff252cd5 100644 (file)
@@ -4529,6 +4529,13 @@ This option applies to the shell environment and each subshell environment
 separately (@pxref{Command Execution Environment}), and may cause
 subshells to exit before executing all the commands in the subshell.
 
+If a shell function executes in a context where @option{-e} is being ignored,
+even if @option{-e} is set, none of the commands executed within the function
+body will be affected by the @option{-e} setting.
+If a shell function sets @option{-e} while executing in a context where
+@option{-e} is ignored, that setting will not have any effect until the
+command containing the function call completes.
+
 @item -f
 Disable filename expansion (globbing).
 
diff --git a/doc/bashref.texi~ b/doc/bashref.texi~
new file mode 100644 (file)
index 0000000..5eee093
--- /dev/null
@@ -0,0 +1,8585 @@
+\input texinfo.tex @c -*- texinfo -*-
+@c %**start of header
+@setfilename bashref.info
+@settitle Bash Reference Manual
+@c %**end of header
+
+@setchapternewpage odd
+
+@include version.texi
+
+@copying
+This text is a brief description of the features that are present in
+the Bash shell (version @value{VERSION}, @value{UPDATED}).
+
+This is Edition @value{EDITION}, last updated @value{UPDATED},
+of @cite{The GNU Bash Reference Manual},
+for @code{Bash}, Version @value{VERSION}.
+
+Copyright @copyright{} 1988--2012 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+@end quotation
+@end copying
+
+@defcodeindex bt
+@defcodeindex rw
+@set BashFeatures
+
+@dircategory Basics
+@direntry
+* Bash: (bash).                     The GNU Bourne-Again SHell.
+@end direntry
+
+@finalout
+
+@titlepage
+@title Bash Reference Manual
+@subtitle Reference Documentation for Bash
+@subtitle Edition @value{EDITION}, for @code{Bash} Version @value{VERSION}.
+@subtitle @value{UPDATED-MONTH}
+@author Chet Ramey, Case Western Reserve University
+@author Brian Fox, Free Software Foundation
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+
+@sp 1
+Published by the Free Software Foundation @*
+59 Temple Place, Suite 330, @*
+Boston, MA 02111-1307 @*
+USA @*
+
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Introduction, (dir), (dir)
+@top Bash Features
+
+This text is a brief description of the features that are present in
+the Bash shell (version @value{VERSION}, @value{UPDATED}).
+
+This is Edition @value{EDITION}, last updated @value{UPDATED},
+of @cite{The GNU Bash Reference Manual},
+for @code{Bash}, Version @value{VERSION}.
+
+Bash contains features that appear in other popular shells, and some
+features that only appear in Bash.  Some of the shells that Bash has
+borrowed concepts from are the Bourne Shell (@file{sh}), the Korn Shell
+(@file{ksh}), and the C-shell (@file{csh} and its successor,
+@file{tcsh}).  The following menu breaks the features up into
+categories, noting which features were inspired by other shells and
+which are specific to Bash.
+
+This manual is meant as a brief introduction to features found in
+Bash.  The Bash manual page should be used as the definitive
+reference on shell behavior.
+
+@menu
+* Introduction::               An introduction to the shell.
+* Definitions::                        Some definitions used in the rest of this
+                               manual.
+* Basic Shell Features::       The shell "building blocks".
+* Shell Builtin Commands::     Commands that are a part of the shell.
+* Shell Variables::            Variables used or set by Bash.
+* Bash Features::              Features found only in Bash.
+* Job Control::                        What job control is and how Bash allows you
+                               to use it.
+* Command Line Editing::       Chapter describing the command line
+                               editing features.
+* Using History Interactively::        Command History Expansion
+* Installing Bash::            How to build and install Bash on your system.
+* Reporting Bugs::             How to report bugs in Bash.
+* Major Differences From The Bourne Shell::    A terse list of the differences
+                                               between Bash and historical
+                                               versions of /bin/sh.
+* GNU Free Documentation License::     Copying and sharing this documentation.
+* Indexes::                    Various indexes for this manual.
+@end menu
+@end ifnottex
+
+@node Introduction
+@chapter Introduction
+@menu
+* What is Bash?::              A short description of Bash.
+* What is a shell?::           A brief introduction to shells.
+@end menu
+
+@node What is Bash?
+@section What is Bash?
+
+Bash is the shell, or command language interpreter,
+for the @sc{gnu} operating system.
+The name is an acronym for the @samp{Bourne-Again SHell},
+a pun on Stephen Bourne, the author of the direct ancestor of
+the current Unix shell @code{sh}, 
+which appeared in the Seventh Edition Bell Labs Research version
+of Unix.
+
+Bash is largely compatible with @code{sh} and incorporates useful
+features from the Korn shell @code{ksh} and the C shell @code{csh}.
+It is intended to be a conformant implementation of the @sc{ieee}
+@sc{posix} Shell and Tools portion of the @sc{ieee} @sc{posix}
+specification (@sc{ieee} Standard 1003.1).
+It offers functional improvements over @code{sh} for both interactive and
+programming use.
+
+While the @sc{gnu} operating system provides other shells, including
+a version of @code{csh}, Bash is the default shell.
+Like other @sc{gnu} software, Bash is quite portable.  It currently runs
+on nearly every version of Unix and a few other operating systems @minus{}
+independently-supported ports exist for @sc{ms-dos}, @sc{os/2},
+and Windows platforms.
+
+@node What is a shell?
+@section What is a shell?
+
+At its base, a shell is simply a macro processor that executes
+commands.  The term macro processor means functionality where text
+and symbols are expanded to create larger expressions.
+
+A Unix shell is both a command interpreter and a programming
+language.  As a command interpreter, the shell provides the user
+interface to the rich set of @sc{gnu} utilities.  The programming
+language features allow these utilities to be combined.
+Files containing commands can be created, and become
+commands themselves.  These new commands have the same status as
+system commands in directories such as @file{/bin}, allowing users
+or groups to establish custom environments to automate their common
+tasks.
+
+Shells may be used interactively or non-interactively.  In
+interactive mode, they accept input typed from the keyboard.
+When executing non-interactively, shells execute commands read
+from a file.
+
+A shell allows execution of @sc{gnu} commands, both synchronously and
+asynchronously.
+The shell waits for synchronous commands to complete before accepting
+more input; asynchronous commands continue to execute in parallel
+with the shell while it reads and executes additional commands.
+The @dfn{redirection} constructs permit
+fine-grained control of the input and output of those commands.
+Moreover, the shell allows control over the contents of commands'
+environments.
+
+Shells also provide a small set of built-in
+commands (@dfn{builtins}) implementing functionality impossible
+or inconvenient to obtain via separate utilities.
+For example, @code{cd}, @code{break}, @code{continue}, and
+@code{exec} cannot be implemented outside of the shell because
+they directly manipulate the shell itself.
+The @code{history}, @code{getopts}, @code{kill}, or @code{pwd}
+builtins, among others, could be implemented in separate utilities,
+but they are more convenient to use as builtin commands.
+All of the shell builtins are described in
+subsequent sections.
+
+While executing commands is essential, most of the power (and
+complexity) of shells is due to their embedded programming
+languages.  Like any high-level language, the shell provides
+variables, flow control constructs, quoting, and functions. 
+
+Shells offer features geared specifically for
+interactive use rather than to augment the programming language. 
+These interactive features include job control, command line
+editing, command history and aliases.  Each of these features is
+described in this manual.
+
+@node Definitions
+@chapter Definitions
+These definitions are used throughout the remainder of this manual.
+
+@table @code
+
+@item POSIX
+@cindex POSIX
+A family of open system standards based on Unix.  Bash
+is primarily concerned with the Shell and Utilities portion of the
+@sc{posix} 1003.1 standard. 
+
+@item blank
+A space or tab character.
+
+@item builtin
+@cindex builtin
+A command that is implemented internally by the shell itself, rather
+than by an executable program somewhere in the file system.
+
+@item control operator
+@cindex control operator
+A @code{token} that performs a control function.  It is a @code{newline}
+or one of the following:
+@samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;},
+@samp{|}, @samp{|&}, @samp{(}, or @samp{)}.
+
+@item exit status
+@cindex exit status
+The value returned by a command to its caller.  The value is restricted
+to eight bits, so the maximum value is 255.
+
+@item field
+@cindex field
+A unit of text that is the result of one of the shell expansions.  After
+expansion, when executing a command, the resulting fields are used as
+the command name and arguments.
+
+@item filename
+@cindex filename
+A string of characters used to identify a file.
+
+@item job
+@cindex job
+A set of processes comprising a pipeline, and any processes descended
+from it, that are all in the same process group.
+
+@item job control
+@cindex job control
+A mechanism by which users can selectively stop (suspend) and restart
+(resume) execution of processes.
+
+@item metacharacter
+@cindex metacharacter
+A character that, when unquoted, separates words.  A metacharacter is
+a @code{blank} or one of the following characters:
+@samp{|}, @samp{&}, @samp{;}, @samp{(}, @samp{)}, @samp{<}, or
+@samp{>}.
+
+@item name
+@cindex name
+@cindex identifier
+A @code{word} consisting solely of letters, numbers, and underscores,
+and beginning with a letter or underscore.  @code{Name}s are used as
+shell variable and function names.
+Also referred to as an @code{identifier}.
+
+@item operator
+@cindex operator, shell
+A @code{control operator} or a @code{redirection operator}.
+@xref{Redirections}, for a list of redirection operators.
+Operators contain at least one unquoted @code{metacharacter}.
+
+@item process group
+@cindex process group
+A collection of related processes each having the same process
+group @sc{id}.
+
+@item process group ID
+@cindex process group ID
+A unique identifier that represents a @code{process group}
+during its lifetime.
+
+@item reserved word
+@cindex reserved word
+A @code{word} that has a special meaning to the shell.  Most reserved
+words introduce shell flow control constructs, such as @code{for} and
+@code{while}.
+
+@item return status
+@cindex return status
+A synonym for @code{exit status}.
+
+@item signal
+@cindex signal
+A mechanism by which a process may be notified by the kernel
+of an event occurring in the system.
+
+@item special builtin
+@cindex special builtin
+A shell builtin command that has been classified as special by the
+@sc{posix} standard.
+
+@item token
+@cindex token
+A sequence of characters considered a single unit by the shell.
+It is either a @code{word} or an @code{operator}.
+
+@item word
+@cindex word
+A sequence of characters treated as a unit by the shell.
+Words may not include unquoted @code{metacharacters}.
+@end table
+
+@node Basic Shell Features
+@chapter Basic Shell Features
+@cindex Bourne shell
+
+Bash is an acronym for @samp{Bourne-Again SHell}.
+The Bourne shell is
+the traditional Unix shell originally written by Stephen Bourne.
+All of the Bourne shell builtin commands are available in Bash,
+The rules for evaluation and quoting are taken from the @sc{posix}
+specification for the `standard' Unix shell.
+
+This chapter briefly summarizes the shell's `building blocks':
+commands, control structures, shell functions, shell @i{parameters},
+shell expansions,
+@i{redirections}, which are a way to direct input and output from
+and to named files, and how the shell executes commands.
+
+@menu
+* Shell Syntax::               What your input means to the shell.
+* Shell Commands::             The types of commands you can use.
+* Shell Functions::            Grouping commands by name.
+* Shell Parameters::           How the shell stores values.
+* Shell Expansions::           How Bash expands parameters and the various
+                               expansions available.
+* Redirections::               A way to control where input and output go.
+* Executing Commands::         What happens when you run a command.
+* Shell Scripts::              Executing files of shell commands.
+@end menu
+
+@node Shell Syntax
+@section Shell Syntax
+@menu
+* Shell Operation::    The basic operation of the shell.
+* Quoting::            How to remove the special meaning from characters.
+* Comments::           How to specify comments.
+@end menu
+
+When the shell reads input, it proceeds through a
+sequence of operations.  If the input indicates the beginning of a
+comment, the shell ignores the comment symbol (@samp{#}), and the rest
+of that line.
+                                
+Otherwise, roughly speaking,  the shell reads its input and
+divides the input into words and operators, employing the quoting rules
+to select which meanings to assign various words and characters.
+
+The shell then parses these tokens into commands and other constructs,
+removes the special meaning of certain words or characters, expands
+others, redirects input and output as needed, executes the specified
+command, waits for the command's exit status, and makes that exit status
+available for further inspection or processing.
+
+@node Shell Operation
+@subsection Shell Operation
+
+The following is a brief description of the shell's operation when it
+reads and executes a command.  Basically, the shell does the
+following:
+
+@enumerate
+@item
+Reads its input from a file (@pxref{Shell Scripts}), from a string
+supplied as an argument to the @option{-c} invocation option
+(@pxref{Invoking Bash}), or from the user's terminal.
+
+@item
+Breaks the input into words and operators, obeying the quoting rules
+described in @ref{Quoting}.  These tokens are separated by
+@code{metacharacters}.  Alias expansion is performed by this step
+(@pxref{Aliases}).
+
+@item
+Parses the tokens into simple and compound commands
+(@pxref{Shell Commands}).
+
+@item
+Performs the various shell expansions (@pxref{Shell Expansions}), breaking
+the expanded tokens into lists of filenames (@pxref{Filename Expansion})
+and commands and arguments.
+
+@item
+Performs any necessary redirections (@pxref{Redirections}) and removes
+the redirection operators and their operands from the argument list.
+
+@item
+Executes the command (@pxref{Executing Commands}).
+
+@item
+Optionally waits for the command to complete and collects its exit
+status (@pxref{Exit Status}).
+
+@end enumerate
+
+@node Quoting
+@subsection Quoting
+@cindex quoting
+@menu
+* Escape Character::   How to remove the special meaning from a single
+                       character.
+* Single Quotes::      How to inhibit all interpretation of a sequence
+                       of characters.
+* Double Quotes::      How to suppress most of the interpretation of a
+                       sequence of characters.
+* ANSI-C Quoting::     How to expand ANSI-C sequences in quoted strings.
+* Locale Translation:: How to translate strings into different languages.
+@end menu
+
+Quoting is used to remove the special meaning of certain
+characters or words to the shell.  Quoting can be used to
+disable special treatment for special characters, to prevent
+reserved words from being recognized as such, and to prevent
+parameter expansion.
+
+Each of the shell metacharacters (@pxref{Definitions})
+has special meaning to the shell and must be quoted if it is to
+represent itself.
+When the command history expansion facilities are being used
+(@pxref{History Interaction}), the
+@var{history expansion} character, usually @samp{!}, must be quoted
+to prevent history expansion.  @xref{Bash History Facilities}, for
+more details concerning history expansion.
+
+There are three quoting mechanisms: the
+@var{escape character}, single quotes, and double quotes.
+
+@node Escape Character
+@subsubsection Escape Character
+A non-quoted backslash @samp{\} is the Bash escape character.
+It preserves the literal value of the next character that follows,
+with the exception of @code{newline}.  If a @code{\newline} pair
+appears, and the backslash itself is not quoted, the @code{\newline}
+is treated as a line continuation (that is, it is removed from
+the input stream and effectively ignored).
+
+@node Single Quotes
+@subsubsection Single Quotes
+
+Enclosing characters in single quotes (@samp{'}) preserves the literal value
+of each character within the quotes.  A single quote may not occur
+between single quotes, even when preceded by a backslash.
+
+@node Double Quotes
+@subsubsection Double Quotes
+
+Enclosing characters in double quotes (@samp{"}) preserves the literal value
+of all characters within the quotes, with the exception of
+@samp{$}, @samp{`}, @samp{\},
+and, when history expansion is enabled, @samp{!}.
+The characters @samp{$} and @samp{`}
+retain their special meaning within double quotes (@pxref{Shell Expansions}).
+The backslash retains its special meaning only when followed by one of
+the following characters:
+@samp{$}, @samp{`}, @samp{"}, @samp{\}, or @code{newline}.
+Within double quotes, backslashes that are followed by one of these
+characters are removed.  Backslashes preceding characters without a
+special meaning are left unmodified.
+A double quote may be quoted within double quotes by preceding it with
+a backslash.
+If enabled, history expansion will be performed unless an @samp{!}
+appearing in double quotes is escaped using a backslash.
+The backslash preceding the @samp{!} is not removed.
+
+The special parameters @samp{*} and @samp{@@} have special meaning
+when in double quotes (@pxref{Shell Parameter Expansion}).
+
+@node ANSI-C Quoting
+@subsubsection ANSI-C Quoting
+@cindex quoting, ANSI
+
+Words of the form @code{$'@var{string}'} are treated specially.  The
+word expands to @var{string}, with backslash-escaped characters replaced
+as specified by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+
+@table @code
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \e
+@itemx \E
+an escape character (not ANSI C)
+@item \f
+form feed
+@item \n
+newline
+@item \r
+carriage return
+@item \t
+horizontal tab
+@item \v
+vertical tab
+@item \\
+backslash
+@item \'
+single quote
+@item \"
+double quote
+@item \@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(one to three digits)
+@item \x@var{HH}
+the eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits)
+@item \u@var{HHHH}
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+@var{HHHH} (one to four hex digits)
+@item \U@var{HHHHHHHH}
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+@var{HHHHHHHH} (one to eight hex digits)
+@item \c@var{x}
+a control-@var{x} character
+@end table
+
+@noindent
+The expanded result is single-quoted, as if the dollar sign had not
+been present.
+
+@node Locale Translation
+@subsubsection Locale-Specific Translation
+@cindex localization
+@cindex internationalization
+@cindex native languages
+@cindex translation, native languages
+
+A double-quoted string preceded by a dollar sign (@samp{$}) will cause
+the string to be translated according to the current locale.
+If the current locale is @code{C} or @code{POSIX}, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+
+@vindex LC_MESSAGES
+@vindex TEXTDOMAIN
+@vindex TEXTDOMAINDIR
+Some systems use the message catalog selected by the @env{LC_MESSAGES}
+shell variable.  Others create the name of the message catalog from the
+value of the @env{TEXTDOMAIN} shell variable, possibly adding a
+suffix of @samp{.mo}.  If you use the @env{TEXTDOMAIN} variable, you
+may need to set the @env{TEXTDOMAINDIR} variable to the location of
+the message catalog files.  Still others use both variables in this
+fashion:
+@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo.
+
+@node Comments
+@subsection Comments
+@cindex comments, shell
+
+In a non-interactive shell, or an interactive shell in which the
+@code{interactive_comments} option to the @code{shopt}
+builtin is enabled (@pxref{The Shopt Builtin}),
+a word beginning with @samp{#}
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the @code{interactive_comments}
+option enabled does not allow comments.  The @code{interactive_comments}
+option is on by default in interactive shells.
+@xref{Interactive Shells}, for a description of what makes
+a shell interactive.
+
+@node Shell Commands
+@section Shell Commands
+@cindex commands, shell
+
+A simple shell command such as @code{echo a b c} consists of the command
+itself followed by arguments, separated by spaces.
+
+More complex shell commands are composed of simple commands arranged together
+in a variety of ways: in a pipeline in which the output of one command
+becomes the input of a second, in a loop or conditional construct, or in
+some other grouping.
+
+@menu
+* Simple Commands::            The most common type of command.
+* Pipelines::                  Connecting the input and output of several
+                               commands.
+* Lists::                      How to execute commands sequentially.
+* Compound Commands::          Shell commands for control flow.
+* Coprocesses::                        Two-way communication between commands.
+* GNU Parallel::               Running commands in parallel.
+@end menu
+
+@node Simple Commands
+@subsection Simple Commands
+@cindex commands, simple
+
+A simple command is the kind of command encountered most often.
+It's just a sequence of words separated by @code{blank}s, terminated
+by one of the shell's control operators (@pxref{Definitions}).  The
+first word generally specifies a command to be executed, with the
+rest of the words being that command's arguments.
+
+The return status (@pxref{Exit Status}) of a simple command is
+its exit status as provided
+by the @sc{posix} 1003.1 @code{waitpid} function, or 128+@var{n} if
+the command was terminated by signal @var{n}.
+
+@node Pipelines
+@subsection Pipelines
+@cindex pipeline
+@cindex commands, pipelines
+
+A @code{pipeline} is a sequence of simple commands separated by one of
+the control operators @samp{|} or @samp{|&}.
+
+@rwindex time
+@rwindex !
+@cindex command timing
+The format for a pipeline is
+@example
+[time [-p]] [!] @var{command1} [ | or |& @var{command2} ] @dots{}
+@end example
+
+@noindent
+The output of each command in the pipeline is connected via a pipe
+to the input of the next command.
+That is, each command reads the previous command's output.  This
+connection is performed before any redirections specified by the
+command.
+
+If @samp{|&} is used, @var{command1}'s standard output and standard error
+are connected to
+@var{command2}'s standard input through the pipe;
+it is shorthand for @code{2>&1 |}.
+This implicit redirection of the standard error is
+performed after any redirections specified by the command.
+
+The reserved word @code{time} causes timing statistics
+to be printed for the pipeline once it finishes.
+The statistics currently consist of elapsed (wall-clock) time and
+user and system time consumed by the command's execution.
+The @option{-p} option changes the output format to that specified
+by @sc{posix}.
+When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
+it does not recognize @code{time} as a reserved word if the next
+token begins with a @samp{-}.
+The @env{TIMEFORMAT} variable may be set to a format string that
+specifies how the timing information should be displayed.
+@xref{Bash Variables}, for a description of the available formats.
+The use of @code{time} as a reserved word permits the timing of
+shell builtins, shell functions, and pipelines.  An external
+@code{time} command cannot time these easily.
+
+When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), @code{time}
+may be followed by a newline.  In this case, the shell displays the
+total user and system time consumed by the shell and its children.
+The @env{TIMEFORMAT} variable may be used to specify the format of
+the time information.
+
+If the pipeline is not executed asynchronously (@pxref{Lists}), the
+shell waits for all commands in the pipeline to complete.
+
+Each command in a pipeline is executed in its own subshell
+(@pxref{Command Execution Environment}).  The exit
+status of a pipeline is the exit status of the last command in the
+pipeline, unless the @code{pipefail} option is enabled
+(@pxref{The Set Builtin}).
+If @code{pipefail} is enabled, the pipeline's return status is the
+value of the last (rightmost) command to exit with a non-zero status,
+or zero if all commands exit successfully.
+If the reserved word @samp{!} precedes the pipeline, the
+exit status is the logical negation of the exit status as described
+above.
+The shell waits for all commands in the pipeline to terminate before
+returning a value.
+
+@node Lists
+@subsection Lists of Commands
+@cindex commands, lists
+
+A @code{list} is a sequence of one or more pipelines separated by one
+of the operators @samp{;}, @samp{&}, @samp{&&}, or @samp{||},
+and optionally terminated by one of @samp{;}, @samp{&}, or a
+@code{newline}.
+
+Of these list operators, @samp{&&} and @samp{||}
+have equal precedence, followed by @samp{;} and @samp{&},
+which have equal precedence.
+
+A sequence of one or more newlines may appear in a @code{list}
+to delimit commands, equivalent to a semicolon.
+
+If a command is terminated by the control operator @samp{&},
+the shell executes the command asynchronously in a subshell.
+This is known as executing the command in the @var{background}.
+The shell does not wait for the command to finish, and the return
+status is 0 (true).
+When job control is not active (@pxref{Job Control}),
+the standard input for asynchronous commands, in the absence of any
+explicit redirections, is redirected from @code{/dev/null}.
+
+Commands separated by a @samp{;} are executed sequentially; the shell
+waits for each command to terminate in turn.  The return status is the
+exit status of the last command executed.
+
+@sc{and} and @sc{or} lists are sequences of one or more pipelines
+separated by the control operators @samp{&&} and @samp{||},
+respectively.  @sc{and} and @sc{or} lists are executed with left
+associativity.
+
+An @sc{and} list has the form
+@example
+@var{command1} && @var{command2}
+@end example
+
+@noindent
+@var{command2} is executed if, and only if, @var{command1}
+returns an exit status of zero.
+
+An @sc{or} list has the form
+@example
+@var{command1} || @var{command2}
+@end example
+
+@noindent
+@var{command2} is executed if, and only if, @var{command1}
+returns a non-zero exit status.
+
+The return status of
+@sc{and} and @sc{or} lists is the exit status of the last command
+executed in the list.
+
+@node Compound Commands
+@subsection Compound Commands
+@cindex commands, compound
+
+@menu
+* Looping Constructs::         Shell commands for iterative action.
+* Conditional Constructs::     Shell commands for conditional execution.
+* Command Grouping::           Ways to group commands.
+@end menu
+
+Compound commands are the shell programming constructs.
+Each construct begins with a reserved word or control operator and is
+terminated by a corresponding reserved word or operator.
+Any redirections (@pxref{Redirections}) associated with a compound command
+apply to all commands within that compound command unless explicitly overridden.
+
+In most cases a list of commands in a compound command's description may be
+separated from the rest of the command by one or more newlines, and may be
+followed by a newline in place of a semicolon.
+
+Bash provides looping constructs, conditional commands, and mechanisms
+to group commands and execute them as a unit.
+
+@node Looping Constructs
+@subsubsection Looping Constructs
+@cindex commands, looping
+
+Bash supports the following looping constructs.
+
+Note that wherever a @samp{;} appears in the description of a
+command's syntax, it may be replaced with one or more newlines.
+
+@table @code
+@item until
+@rwindex until
+@rwindex do
+@rwindex done
+The syntax of the @code{until} command is:
+
+@example
+until @var{test-commands}; do @var{consequent-commands}; done
+@end example
+
+Execute @var{consequent-commands} as long as
+@var{test-commands} has an exit status which is not zero.
+The return status is the exit status of the last command executed
+in @var{consequent-commands}, or zero if none was executed.
+
+@item while
+@rwindex while
+The syntax of the @code{while} command is:
+
+@example
+while @var{test-commands}; do @var{consequent-commands}; done
+@end example
+
+Execute @var{consequent-commands} as long as
+@var{test-commands} has an exit status of zero.
+The return status is the exit status of the last command executed
+in @var{consequent-commands}, or zero if none was executed.
+
+@item for
+@rwindex for
+The syntax of the @code{for} command is:
+
+@example
+for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done
+@end example
+
+Expand @var{words}, and execute @var{commands} once for each member
+in the resultant list, with @var{name} bound to the current member.
+If @samp{in @var{words}} is not present, the @code{for} command
+executes the @var{commands} once for each positional parameter that is
+set, as if @samp{in "$@@"} had been specified
+(@pxref{Special Parameters}).
+The return status is the exit status of the last command that executes.
+If there are no items in the expansion of @var{words}, no commands are
+executed, and the return status is zero.
+
+An alternate form of the @code{for} command is also supported:
+
+@example
+for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) ; do @var{commands} ; done
+@end example
+
+First, the arithmetic expression @var{expr1} is evaluated according
+to the rules described below (@pxref{Shell Arithmetic}).
+The arithmetic expression @var{expr2} is then evaluated repeatedly
+until it evaluates to zero.   
+Each time @var{expr2} evaluates to a non-zero value, @var{commands} are
+executed and the arithmetic expression @var{expr3} is evaluated.       
+If any expression is omitted, it behaves as if it evaluates to 1.
+The return value is the exit status of the last command in @var{commands}
+that is executed, or false if any of the expressions is invalid.
+@end table
+
+The @code{break} and @code{continue} builtins (@pxref{Bourne Shell Builtins})
+may be used to control loop execution.
+
+@node Conditional Constructs
+@subsubsection Conditional Constructs
+@cindex commands, conditional
+
+@table @code
+@item if
+@rwindex if
+@rwindex then
+@rwindex else
+@rwindex elif
+@rwindex fi
+The syntax of the @code{if} command is:
+
+@example
+if @var{test-commands}; then
+  @var{consequent-commands};
+[elif @var{more-test-commands}; then
+  @var{more-consequents};]
+[else @var{alternate-consequents};]
+fi
+@end example
+
+The @var{test-commands} list is executed, and if its return status is zero,
+the @var{consequent-commands} list is executed.
+If @var{test-commands} returns a non-zero status, each @code{elif} list
+is executed in turn, and if its exit status is zero,
+the corresponding @var{more-consequents} is executed and the   
+command completes.
+If @samp{else @var{alternate-consequents}} is present, and
+the final command in the final @code{if} or @code{elif} clause
+has a non-zero exit status, then @var{alternate-consequents} is executed.
+The return status is the exit status of the last command executed, or
+zero if no condition tested true.
+
+@item case
+@rwindex case
+@rwindex in
+@rwindex esac
+The syntax of the @code{case} command is:
+
+@example
+case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} esac
+@end example
+
+@code{case} will selectively execute the @var{command-list} corresponding to
+the first @var{pattern} that matches @var{word}.
+If the shell option @code{nocasematch}
+(see the description of @code{shopt} in @ref{The Shopt Builtin})
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+The @samp{|} is used to separate multiple patterns, and the @samp{)}
+operator terminates a pattern list.
+A list of patterns and an associated command-list is known
+as a @var{clause}.
+
+Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}.
+The @var{word} undergoes tilde expansion, parameter expansion, command
+substitution, arithmetic expansion, and quote removal before matching is
+attempted.  Each @var{pattern} undergoes tilde expansion, parameter
+expansion, command substitution, and arithmetic expansion.
+
+There may be an arbitrary number of @code{case} clauses, each terminated
+by a @samp{;;}, @samp{;&}, or @samp{;;&}.
+The first pattern that matches determines the
+command-list that is executed.
+It's a common idiom to use @samp{*} as the final pattern to define the
+default case, since that pattern will always match.
+
+Here is an example using @code{case} in a script that could be used to
+describe one interesting feature of an animal:
+
+@example
+echo -n "Enter the name of an animal: "
+read ANIMAL
+echo -n "The $ANIMAL has "
+case $ANIMAL in
+  horse | dog | cat) echo -n "four";;
+  man | kangaroo ) echo -n "two";;
+  *) echo -n "an unknown number of";;
+esac
+echo " legs."
+@end example
+
+@noindent
+
+If the @samp{;;} operator is used, no subsequent matches are attempted after
+the first pattern match.
+Using @samp{;&}  in place of @samp{;;} causes execution to continue with
+the @var{command-list} associated with the next clause, if any.
+Using @samp{;;&} in place of @samp{;;} causes the shell to test the patterns
+in the next clause, if any, and execute any associated @var{command-list}
+on a successful match.
+
+The return status is zero if no @var{pattern} is matched.  Otherwise, the
+return status is the exit status of the @var{command-list} executed.
+
+@item select
+@rwindex select
+
+The @code{select} construct allows the easy generation of menus.
+It has almost the same syntax as the @code{for} command:
+
+@example
+select @var{name} [in @var{words} @dots{}]; do @var{commands}; done
+@end example
+
+The list of words following @code{in} is expanded, generating a list
+of items.  The set of expanded words is printed on the standard
+error output stream, each preceded by a number.  If the
+@samp{in @var{words}} is omitted, the positional parameters are printed,
+as if @samp{in "$@@"} had been specified.
+The @env{PS3} prompt is then displayed and a line is read from the
+standard input.
+If the line consists of a number corresponding to one of the displayed
+words, then the value of @var{name} is set to that word.
+If the line is empty, the words and prompt are displayed again.
+If @code{EOF} is read, the @code{select} command completes.
+Any other value read causes @var{name} to be set to null.
+The line read is saved in the variable @env{REPLY}.
+
+The @var{commands} are executed after each selection until a
+@code{break} command is executed, at which
+point the @code{select} command completes.
+
+Here is an example that allows the user to pick a filename from the
+current directory, and displays the name and index of the file
+selected.
+
+@example
+select fname in *;
+do
+       echo you picked $fname \($REPLY\)
+       break;
+done
+@end example
+
+@item ((@dots{}))
+@example
+(( @var{expression} ))
+@end example
+
+The arithmetic @var{expression} is evaluated according to the rules
+described below (@pxref{Shell Arithmetic}).
+If the value of the expression is non-zero, the return status is 0;
+otherwise the return status is 1.  This is exactly equivalent to
+@example
+let "@var{expression}"
+@end example
+@noindent
+@xref{Bash Builtins}, for a full description of the @code{let} builtin.
+
+@item [[@dots{}]]
+@rwindex [[
+@rwindex ]]
+@example
+[[ @var{expression} ]]
+@end example
+
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression @var{expression}.
+Expressions are composed of the primaries described below in
+@ref{Bash Conditional Expressions}.
+Word splitting and filename expansion are not performed on the words
+between the @samp{[[} and @samp{]]}; tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+Conditional operators such as @samp{-f} must be unquoted to be recognized
+as primaries.
+
+When used with @samp{[[}, the @samp{<} and @samp{>} operators sort
+lexicographically using the current locale.
+
+When the @samp{==} and @samp{!=} operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below in @ref{Pattern Matching}.
+If the shell option @code{nocasematch}
+(see the description of @code{shopt} in @ref{The Shopt Builtin})
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+The return value is 0 if the string matches (@samp{==}) or does not
+match (@samp{!=})the pattern, and 1 otherwise.
+Any part of the pattern may be quoted to force the quoted portion
+to be matched as a string.
+
+An additional binary operator, @samp{=~}, is available, with the same
+precedence as @samp{==} and @samp{!=}.
+When it is used, the string to the right of the operator is considered
+an extended regular expression and matched accordingly (as in @i{regex}3)).  
+The return value is 0 if the string matches
+the pattern, and 1 otherwise.
+If the regular expression is syntactically incorrect, the conditional
+expression's return value is 2.
+If the shell option @code{nocasematch}
+(see the description of @code{shopt} in @ref{The Shopt Builtin})
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+Any part of the pattern may be quoted to force the quoted portion
+to be matched as a string.
+Bracket expressions in regular expressions must be treated carefully,
+since normal quoting characters lose their meanings between brackets.
+If the pattern is stored in a shell variable, quoting the variable
+expansion forces the entire pattern to be matched as a string.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the array variable @code{BASH_REMATCH}.
+The element of @code{BASH_REMATCH} with index 0 is the portion of the string
+matching the entire regular expression.
+The element of @code{BASH_REMATCH} with index @var{n} is the portion of the
+string matching the @var{n}th parenthesized subexpression.
+
+For example, the following will match a line
+(stored in the shell variable @var{line})
+if there is a sequence of characters in the value consisting of
+any number, including zero, of 
+space characters, zero or one instances of @samp{a}, then a @samp{b}:
+@example
+[[ $line =~ [[:space:]]*(a)?b ]]
+@end example
+
+@noindent
+That means values like @samp{aab} and @samp{  aaaaaab} will match, as
+will a line containing a @samp{b} anywhere in its value.
+
+Storing the regular expression in a shell variable is often a useful
+way to avoid problems with quoting characters that are special to the
+shell.
+It is sometimes difficult to specify a regular expression literally
+without using quotes, or to keep track of the quoting used by regular
+expressions while paying attention to the shell's quote removal.
+Using a shell variable to store the pattern decreases these problems.
+For example, the following is equivalent to the above:
+@example
+pattern='[[:space:]]*(a)?b'
+[[ $line =~ $pattern ]]
+@end example
+
+@noindent
+If you want to match a character that's special to the regular expression
+grammar, it has to be quoted to remove its special meaning.
+This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any
+character in the string (its usual regular expression meaning), but in the
+pattern @samp{"xxx.txt"} it can only match a literal @samp{.}.
+Shell programmers should take special care with backslashes, since backslashes
+are used both by the shell and regular expressions to remove the special
+meaning from the following character.
+The following two sets of commands are @emph{not} equivalent:
+@example
+pattern='\.'
+
+[[ . =~ $pattern ]]
+[[ . =~ \. ]]
+
+[[ . =~ "$pattern" ]]
+[[ . =~ '\.' ]]
+@end example
+
+@noindent
+The first two matches will succeed, but the second two will not, because
+in the second two the backslash will be part of the pattern to be matched.
+In the first two examples, the backslash removes the special meaning from
+@samp{.}, so the literal @samp{.} matches.
+If the string in the first examples were anything other than @samp{.}, say
+@samp{a}, the pattern would not match, because the quoted @samp{.} in the
+pattern loses its special meaning of matching any single character.
+
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+
+@table @code
+@item ( @var{expression} )
+Returns the value of @var{expression}.
+This may be used to override the normal precedence of operators.
+
+@item ! @var{expression}
+True if @var{expression} is false.
+
+@item @var{expression1} && @var{expression2}
+True if both @var{expression1} and @var{expression2} are true.
+
+@item @var{expression1} || @var{expression2}
+True if either @var{expression1} or @var{expression2} is true.
+@end table
+
+@noindent
+The @code{&&} and @code{||} operators do not evaluate @var{expression2} if the
+value of @var{expression1} is sufficient to determine the return
+value of the entire conditional expression.
+@end table
+
+@node Command Grouping
+@subsubsection Grouping Commands
+@cindex commands, grouping
+
+Bash provides two ways to group a list of commands to be executed
+as a unit.  When commands are grouped, redirections may be applied
+to the entire command list.  For example, the output of all the
+commands in the list may be redirected to a single stream.
+
+@table @code
+@item ()
+@example
+( @var{list} )
+@end example
+
+Placing a list of commands between parentheses causes a subshell
+environment to be created (@pxref{Command Execution Environment}), and each
+of the commands in @var{list} to be executed in that subshell.  Since the
+@var{list} is executed in a subshell, variable assignments do not remain in
+effect after the subshell completes. 
+
+@item @{@}
+@rwindex @{
+@rwindex @}
+@example
+@{ @var{list}; @}
+@end example
+
+Placing a list of commands between curly braces causes the list to
+be executed in the current shell context.  No subshell is created.
+The semicolon (or newline) following @var{list} is required.
+@end table
+
+In addition to the creation of a subshell, there is a subtle difference
+between these two constructs due to historical reasons.  The braces
+are @code{reserved words}, so they must be separated from the @var{list}
+by @code{blank}s or other shell metacharacters.
+The parentheses are @code{operators}, and are
+recognized as separate tokens by the shell even if they are not separated
+from the @var{list} by whitespace.
+
+The exit status of both of these constructs is the exit status of
+@var{list}.
+
+@node Coprocesses
+@subsection Coprocesses
+@cindex coprocess
+
+A @code{coprocess} is a shell command preceded by the @code{coproc}
+reserved word.
+A coprocess is executed asynchronously in a subshell, as if the command
+had been terminated with the @samp{&} control operator, with a two-way pipe
+established between the executing shell and the coprocess.
+
+The format for a coprocess is:
+@example
+coproc [@var{NAME}] @var{command} [@var{redirections}]
+@end example
+
+@noindent
+This creates a coprocess named @var{NAME}.
+If @var{NAME} is not supplied, the default name is @var{COPROC}.
+@var{NAME} must not be supplied if @var{command} is a simple
+command (@pxref{Simple Commands}); otherwise, it is interpreted as
+the first word of the simple command.
+
+When the coprocess is executed, the shell creates an array variable
+(@pxref{Arrays})
+named @env{NAME} in the context of the executing shell.
+The standard output of @var{command}
+is connected via a pipe to a file descriptor in the executing shell,
+and that file descriptor is assigned to @env{NAME}[0].
+The standard input of @var{command}
+is connected via a pipe to a file descriptor in the executing shell,
+and that file descriptor is assigned to @env{NAME}[1].
+This pipe is established before any redirections specified by the
+command (@pxref{Redirections}).
+The file descriptors can be utilized as arguments to shell commands
+and redirections using standard word expansions.
+The file descriptors are not available in subshells.
+
+The process ID of the shell spawned to execute the coprocess is
+available as the value of the variable @env{NAME}_PID.
+The @code{wait}
+builtin command may be used to wait for the coprocess to terminate.
+
+The return status of a coprocess is the exit status of @var{command}.
+
+@node GNU Parallel
+@subsection GNU Parallel
+
+GNU Parallel, as its name suggests, can be used to build and run commands
+in parallel.  You may run the same command with different arguments, whether
+they are filenames, usernames, hostnames, or lines read from files.
+
+For a complete description, refer to the GNU Parallel documentation.  A few
+examples should provide a brief introduction to its use.
+
+For example, it is easy to prefix each line in a text file with a specified
+string:
+@example
+cat file | parallel -k echo prefix_string
+@end example
+@noindent
+The @option{-k} option is required to preserve the lines' order.
+
+Similarly, you can append a specified string to each line in a text file:
+@example
+cat file | parallel -k echo @{@} append_string
+@end example
+
+You can use Parallel to move files from the current directory when the
+number of files is too large to process with one @code{mv} invocation:
+@example
+ls | parallel mv @{@} destdir
+@end example
+
+As you can see, the @{@} is replaced with each line read from standard input.
+This will run as many @code{mv} commands as there are files in the current
+directory.  You can emulate a parallel @code{xargs} by adding the @option{-X}
+option:
+@example
+ls | parallel -X mv @{@} destdir
+@end example
+
+GNU Parallel can replace certain common idioms that operate on lines read
+from a file (in this case, filenames):
+@example
+       for x in $(cat list); do
+               do-something1 $x config-$x
+               do-something2 < $x
+       done | process-output
+@end example
+
+@noindent
+with a more compact syntax reminiscent of lambdas:
+@example
+cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | process-output
+@end example
+
+Parallel provides a built-in mechanism to remove filename extensions, which
+lends itself to batch file transformations or renaming:
+@example
+ls *.gz | parallel -j+0 "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}"
+@end example
+@noindent
+This will recompress all files in the current directory with names ending
+in .gz using bzip2, running one job per CPU (-j+0)  in parallel.
+
+If a command generates output, you may want to preserve the input order in
+the output.  For instance, the following command
+@example
+@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel traceroute
+@end example
+@noindent
+will display as output the traceroute invocation that finishes first.  Using
+the @option{-k} option, as we saw above
+@example
+@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel -k traceroute
+@end example
+@noindent
+will ensure that the output of @code{traceroute foss.org.my} is displayed first.
+
+@node Shell Functions
+@section Shell Functions
+@cindex shell function
+@cindex functions, shell
+
+Shell functions are a way to group commands for later execution
+using a single name for the group.  They are executed just like
+a "regular" command.
+When the name of a shell function is used as a simple command name,
+the list of commands associated with that function name is executed.
+Shell functions are executed in the current
+shell context; no new process is created to interpret them.
+
+Functions are declared using this syntax:
+@rwindex function
+@example
+@var{name} () @var{compound-command} [ @var{redirections} ]
+@end example
+
+or
+
+@example
+function @var{name} [()] @var{compound-command} [ @var{redirections} ]
+@end example
+
+This defines a shell function named @var{name}.  The reserved
+word @code{function} is optional.
+If the @code{function} reserved
+word is supplied, the parentheses are optional.
+The @var{body} of the function is the compound command
+@var{compound-command} (@pxref{Compound Commands}).
+That command is usually a @var{list} enclosed between @{ and @}, but
+may be any compound command listed above.
+@var{compound-command} is executed whenever @var{name} is specified as the
+name of a command.
+When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
+@var{name} may not be the same as one of the special builtins
+(@pxref{Special Builtins}).
+Any redirections (@pxref{Redirections}) associated with the shell function
+are performed when the function is executed.
+
+A function definition may be deleted using the @option{-f} option to the
+@code{unset} builtin (@pxref{Bourne Shell Builtins}).
+
+The exit status of a function definition is zero unless a syntax error
+occurs or a readonly function with the same name already exists.
+When executed, the exit status of a function is the exit status of the
+last command executed in the body.
+
+Note that for historical reasons, in the most common usage the curly braces
+that surround the body of the function must be separated from the body by
+@code{blank}s or newlines.
+This is because the braces are reserved words and are only recognized
+as such when they are separated from the command list
+by whitespace or another shell metacharacter.
+Also, when using the braces, the @var{list} must be terminated by a semicolon,
+a @samp{&}, or a newline.
+
+When a function is executed, the arguments to the
+function become the positional parameters
+during its execution (@pxref{Positional Parameters}).
+The special parameter @samp{#} that expands to the number of
+positional parameters is updated to reflect the change.
+Special parameter @code{0} is unchanged.
+The first element of the @env{FUNCNAME} variable is set to the
+name of the function while the function is executing.
+
+All other aspects of the shell execution
+environment are identical between a function and its caller
+with these exceptions:
+the @env{DEBUG} and @env{RETURN} traps
+are not inherited unless the function has been given the
+@code{trace} attribute using the @code{declare} builtin or
+the @code{-o functrace} option has been enabled with
+the @code{set} builtin,
+(in which case all functions inherit the @env{DEBUG} and @env{RETURN} traps),
+and the @env{ERR} trap is not inherited unless the @code{-o errtrace}
+shell option has been enabled.
+@xref{Bourne Shell Builtins}, for the description of the
+@code{trap} builtin.
+
+The @env{FUNCNEST} variable, if set to a numeric value greater
+than 0, defines a maximum function nesting level.  Function
+invocations that exceed the limit cause the entire command to
+abort.
+
+If the builtin command @code{return}
+is executed in a function, the function completes and
+execution resumes with the next command after the function
+call.
+Any command associated with the @code{RETURN} trap is executed
+before execution resumes.
+When a function completes, the values of the
+positional parameters and the special parameter @samp{#}
+are restored to the values they had prior to the function's
+execution.  If a numeric argument is given to @code{return},
+that is the function's return status; otherwise the function's
+return status is the exit status of the last command executed
+before the @code{return}.
+
+Variables local to the function may be declared with the
+@code{local} builtin.  These variables are visible only to
+the function and the commands it invokes.
+
+Function names and definitions may be listed with the
+@option{-f} option to the @code{declare} (@code{typeset})
+builtin command (@pxref{Bash Builtins}).
+The @option{-F} option to @code{declare} or @code{typeset}
+will list the function names only
+(and optionally the source file and line number, if the @code{extdebug}
+shell option is enabled).
+Functions may be exported so that subshells
+automatically have them defined with the
+@option{-f} option to the @code{export} builtin
+(@pxref{Bourne Shell Builtins}).
+Note that shell functions and variables with the same name may result
+in multiple identically-named entries in the environment passed to the
+shell's children.
+Care should be taken in cases where this may cause a problem.
+
+Functions may be recursive.
+The @code{FUNCNEST} variable may be used to limit the depth of the
+function call stack and restrict the number of function invocations.
+By default, no limit is placed on the number of recursive  calls.
+
+@node Shell Parameters
+@section Shell Parameters
+@cindex parameters
+@cindex variable, shell
+@cindex shell variable
+
+@menu
+* Positional Parameters::      The shell's command-line arguments.
+* Special Parameters::         Parameters denoted by special characters.
+@end menu
+
+A @var{parameter} is an entity that stores values.
+It can be a @code{name}, a number, or one of the special characters
+listed below.
+A @var{variable} is a parameter denoted by a @code{name}.
+A variable has a @var{value} and zero or more @var{attributes}.
+Attributes are assigned using the @code{declare} builtin command
+(see the description of the @code{declare} builtin in @ref{Bash Builtins}).
+
+A parameter is set if it has been assigned a value.  The null string is
+a valid value.  Once a variable is set, it may be unset only by using
+the @code{unset} builtin command.
+
+A variable may be assigned to by a statement of the form
+@example
+@var{name}=[@var{value}]
+@end example
+@noindent
+If @var{value}
+is not given, the variable is assigned the null string.  All
+@var{value}s undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (detailed below).  If the variable has its @code{integer}
+attribute set, then @var{value} 
+is evaluated as an arithmetic expression even if the @code{$((@dots{}))}
+expansion is not used (@pxref{Arithmetic Expansion}).
+Word splitting is not performed, with the exception
+of @code{"$@@"} as explained below.
+Filename expansion is not performed.
+Assignment statements may also appear as arguments to the
+@code{alias}, 
+@code{declare}, @code{typeset}, @code{export}, @code{readonly},
+and @code{local} builtin commands.
+When in @sc{posix} mode (@pxref{Bash POSIX Mode}), these builtins may appear
+in a command after one or more instances of the @code{command} builtin
+and retain these assignment statement properties.
+
+In the context where an assignment statement is assigning a value  
+to a shell variable or array index (@pxref{Arrays}), the @samp{+=}
+operator can be used to   
+append to or add to the variable's previous value.
+When @samp{+=} is applied to a variable for which the @var{integer} attribute
+has been set, @var{value} is evaluated as an arithmetic expression and
+added to the variable's current value, which is also evaluated.
+When @samp{+=} is applied to an array variable using compound assignment
+(@pxref{Arrays}), the
+variable's value is not unset (as it is when using @samp{=}), and new
+values are appended to the array beginning at one greater than the array's
+maximum index (for indexed arrays),  or added as additional key-value pairs
+in an associative array.
+When applied to a string-valued variable, @var{value} is expanded and
+appended to the variable's value.
+
+A variable can be assigned the @var{nameref} attribute using the
+@option{-n} option to the \fBdeclare\fP or \fBlocal\fP builtin commands
+(@pxref{Bash Builtins})
+to create a @var{nameref}, or a reference to another variable.
+This allows variables to be manipulated indirectly.
+Whenever the nameref variable is referenced or assigned to, the operation
+is actually performed on the variable specified by the nameref variable's
+value.
+A nameref is commonly used within shell functions to refer to a variable
+whose name is passed as an argument to the function.
+For instance, if a variable name is passed to a shell function as its first
+argument, running
+@example
+declare -n ref=$1
+@end example
+@noindent
+inside the function creates a nameref variable @var{ref} whose value is
+the variable name passed as the first argument.
+References and assignments to @var{ref} are treated as references and
+assignments to the variable whose name was passed as @code{$1}.
+
+If the control variable in a @code{for} loop has the nameref attribute,
+the list of words can be a list of shell variables, and a name reference
+will be established for each word in the list, in turn, when the loop is
+executed.
+Array variables cannot be given the @option{-n} attribute.
+However, nameref variables can reference array variables and subscripted
+array variables.
+Namerefs can be unset using the @option{-n} option to the @code{unset} builtin
+(@pxref{Bourne Shell Builtins}).
+Otherwise, if @code{unset} is executed with the name of a nameref variable
+as an argument, the variable referenced by the nameref variable will be unset.
+
+@node Positional Parameters
+@subsection Positional Parameters
+@cindex parameters, positional
+
+A @var{positional parameter} is a parameter denoted by one or more
+digits, other than the single digit @code{0}.  Positional parameters are
+assigned from the shell's arguments when it is invoked,
+and may be reassigned using the @code{set} builtin command.
+Positional parameter @code{N} may be referenced as @code{$@{N@}}, or
+as @code{$N} when @code{N} consists of a single digit.
+Positional parameters may not be assigned to with assignment statements.
+The @code{set} and @code{shift} builtins are used to set and
+unset them (@pxref{Shell Builtin Commands}).
+The positional parameters are
+temporarily replaced when a shell function is executed
+(@pxref{Shell Functions}).
+
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces.
+
+@node Special Parameters
+@subsection Special Parameters
+@cindex parameters, special
+
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+
+@vtable @code
+
+@item *
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, it expands to a single word
+with the value of each parameter separated by the first character
+of the @env{IFS}
+special variable.  That is, @code{"$*"} is equivalent
+to @code{"$1@var{c}$2@var{c}@dots{}"}, where @var{c}
+is the first character of the value of the @code{IFS}
+variable.
+If @env{IFS} is unset, the parameters are separated by spaces.
+If @env{IFS} is null, the parameters are joined without intervening
+separators.
+
+
+@item @@
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, @code{"$@@"} is equivalent to
+@code{"$1" "$2" @dots{}}.
+If the double-quoted expansion occurs within a word, the expansion of
+the first parameter is joined with the beginning part of the original
+word, and the expansion of the last parameter is joined with the last
+part of the original word.
+When there are no positional parameters, @code{"$@@"} and
+@code{$@@}
+expand to nothing (i.e., they are removed).
+
+@item #
+Expands to the number of positional parameters in decimal.
+
+@item ?
+Expands to the exit status of the most recently executed foreground
+pipeline.
+
+@item -
+(A hyphen.)  Expands to the current option flags as specified upon
+invocation, by the @code{set}
+builtin command, or those set by the shell itself
+(such as the @option{-i} option).
+
+@item $
+Expands to the process @sc{id} of the shell.  In a @code{()} subshell, it
+expands to the process @sc{id} of the invoking shell, not the subshell.
+
+@item !
+Expands to the process @sc{id} of the most recently executed background
+(asynchronous) command.
+
+@item 0
+Expands to the name of the shell or shell script.  This is set at
+shell initialization.  If Bash is invoked with a file of commands
+(@pxref{Shell Scripts}), @code{$0} is set to the name of that file.
+If Bash is started with the @option{-c} option (@pxref{Invoking Bash}),
+then @code{$0} is set to the first argument after the string to be
+executed, if one is present.  Otherwise, it is set
+to the filename used to invoke Bash, as given by argument zero.
+
+@item _
+(An underscore.)
+At shell startup, set to the absolute pathname used to invoke the
+shell or shell script being executed as passed in the environment
+or argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.   
+Also set to the full pathname used to invoke each command executed
+and placed in the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file.
+@end vtable
+
+@node Shell Expansions
+@section Shell Expansions
+@cindex expansion
+
+Expansion is performed on the command line after it has been split into
+@code{token}s.  There are seven kinds of expansion performed:
+
+@itemize @bullet
+@item brace expansion
+@item tilde expansion
+@item parameter and variable expansion
+@item command substitution
+@item arithmetic expansion
+@item word splitting
+@item filename expansion
+@end itemize
+
+@menu
+* Brace Expansion::            Expansion of expressions within braces.
+* Tilde Expansion::            Expansion of the ~ character.
+* Shell Parameter Expansion::  How Bash expands variables to their values.
+* Command Substitution::       Using the output of a command as an argument.
+* Arithmetic Expansion::       How to use arithmetic in shell expansions.
+* Process Substitution::       A way to write and read to and from a
+                               command.
+* Word Splitting::     How the results of expansion are split into separate
+                       arguments.
+* Filename Expansion:: A shorthand for specifying filenames matching patterns.
+* Quote Removal::      How and when quote characters are removed from
+                       words.
+@end menu
+
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable, and arithmetic expansion and
+command substitution
+(done in a left-to-right fashion), word splitting, and filename
+expansion.
+
+On systems that can support it, there is an additional expansion
+available: @var{process substitution}.  This is performed at the
+same time as parameter, variable, and arithmetic expansion and
+command substitution.
+
+Only brace expansion, word splitting, and filename expansion
+can change the number of words of the expansion; other expansions
+expand a single word to a single word.
+The only exceptions to this are the expansions of
+@code{"$@@"} (@pxref{Special Parameters}) and @code{"$@{@var{name}[@@]@}"}
+(@pxref{Arrays}).
+
+After all expansions, @code{quote removal} (@pxref{Quote Removal})
+is performed.
+
+@node Brace Expansion
+@subsection Brace Expansion
+@cindex brace expansion
+@cindex expansion, brace
+
+Brace expansion is a mechanism by which arbitrary strings may be generated.
+This mechanism is similar to
+@var{filename expansion} (@pxref{Filename Expansion}),
+but the filenames generated need not exist.
+Patterns to be brace expanded take the form of an optional @var{preamble},
+followed by either a series of comma-separated strings or a sequence expression
+between a pair of braces,
+followed by an optional @var{postscript}.
+The preamble is prefixed to each string contained within the braces, and
+the postscript is then appended to each resulting string, expanding left
+to right.
+
+Brace expansions may be nested.
+The results of each expanded string are not sorted; left to right order
+is preserved.
+For example,
+@example
+bash$ echo a@{d,c,b@}e
+ade ace abe
+@end example
+
+A sequence expression takes the form @code{@{@var{x}..@var{y}[..@var{incr}]@}},
+where @var{x} and @var{y} are either integers or single characters,
+and @var{incr}, an optional increment, is an integer.
+When integers are supplied, the expression expands to each number between
+@var{x} and @var{y}, inclusive.
+Supplied integers may be prefixed with @samp{0} to force each term to have the
+same width.  When either @var{x} or @var{y} begins with a zero, the shell
+attempts to force all generated terms to contain the same number of digits,
+zero-padding where necessary.
+When characters are supplied, the expression expands to each character
+lexicographically between @var{x} and @var{y}, inclusive.  Note that
+both @var{x} and @var{y} must be of the same type.
+When the increment is supplied, it is used as the difference between
+each term.  The default increment is 1 or -1 as appropriate.
+
+Brace expansion is performed before any other expansions,
+and any characters special to other expansions are preserved
+in the result.  It is strictly textual.  Bash
+does not apply any syntactic interpretation to the context of the
+expansion or the text between the braces.
+To avoid conflicts with parameter expansion, the string @samp{$@{}
+is not considered eligible for brace expansion.
+
+A correctly-formed brace expansion must contain unquoted opening
+and closing braces, and at least one unquoted comma or a valid
+sequence expression.
+Any incorrectly formed brace expansion is left unchanged.
+
+A @{ or @samp{,} may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string @samp{$@{}
+is not considered eligible for brace expansion.
+
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+@example
+mkdir /usr/local/src/bash/@{old,new,dist,bugs@}
+@end example
+or
+@example
+chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@}
+@end example
+
+@node Tilde Expansion
+@subsection Tilde Expansion
+@cindex tilde expansion
+@cindex expansion, tilde
+
+If a word begins with an unquoted tilde character (@samp{~}), all of the
+characters up to the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a @var{tilde-prefix}.
+If none of the characters in the tilde-prefix are quoted, the
+characters in the tilde-prefix following the tilde are treated as a
+possible @var{login name}.
+If this login name is the null string, the tilde is replaced with the
+value of the @env{HOME} shell variable.
+If @env{HOME} is unset, the home directory of the user executing the
+shell is substituted instead.
+Otherwise, the tilde-prefix is replaced with the home directory
+associated with the specified login name.
+
+If the tilde-prefix is @samp{~+}, the value of
+the shell variable @env{PWD} replaces the tilde-prefix.
+If the tilde-prefix is @samp{~-}, the value of the shell variable
+@env{OLDPWD}, if it is set, is substituted.
+
+If the characters following the tilde in the tilde-prefix consist of a
+number @var{N}, optionally prefixed by a @samp{+} or a @samp{-},
+the tilde-prefix is replaced with the
+corresponding element from the directory stack, as it would be displayed
+by the @code{dirs} builtin invoked with the characters following tilde
+in the tilde-prefix as an argument (@pxref{The Directory Stack}).
+If the tilde-prefix, sans the tilde, consists of a number without a
+leading @samp{+} or @samp{-}, @samp{+} is assumed.
+
+If the login name is invalid, or the tilde expansion fails, the word is
+left unchanged.
+
+Each variable assignment is checked for unquoted tilde-prefixes immediately
+following a @samp{:} or the first @samp{=}.
+In these cases, tilde expansion is also performed.
+Consequently, one may use filenames with tildes in assignments to
+@env{PATH}, @env{MAILPATH}, and @env{CDPATH},
+and the shell assigns the expanded value.
+
+The following table shows how Bash treats unquoted tilde-prefixes:
+
+@table @code
+@item ~
+The value of @code{$HOME}
+@item ~/foo
+@file{$HOME/foo}
+
+@item ~fred/foo
+The subdirectory @code{foo} of the home directory of the user
+@code{fred}
+
+@item ~+/foo
+@file{$PWD/foo}
+
+@item ~-/foo
+@file{$@{OLDPWD-'~-'@}/foo}
+
+@item ~@var{N}
+The string that would be displayed by @samp{dirs +@var{N}}
+
+@item ~+@var{N}
+The string that would be displayed by @samp{dirs +@var{N}}
+
+@item ~-@var{N}
+The string that would be displayed by @samp{dirs -@var{N}}
+@end table
+
+@node Shell Parameter Expansion
+@subsection Shell Parameter Expansion
+@cindex parameter expansion
+@cindex expansion, parameter
+
+The @samp{$} character introduces parameter expansion,
+command substitution, or arithmetic expansion.  The parameter name
+or symbol to be expanded may be enclosed in braces, which
+are optional but serve to protect the variable to be expanded from
+characters immediately following it which could be
+interpreted as part of the name.
+
+When braces are used, the matching ending brace is the first @samp{@}}
+not escaped by a backslash or within a quoted string, and not within an
+embedded arithmetic expansion, command substitution, or parameter
+expansion.
+
+The basic form of parameter expansion is $@{@var{parameter}@}.
+The value of @var{parameter} is substituted.
+The @var{parameter} is a shell parameter as described above
+(@pxref{Shell Parameters}) or an array reference (@pxref{Arrays}).
+The braces are required when @var{parameter}
+is a positional parameter with more than one digit,
+or when @var{parameter} is followed by a character that is not to be
+interpreted as part of its name.
+
+If the first character of @var{parameter} is an exclamation point (!),
+it introduces a level of variable indirection.
+Bash uses the value of the variable formed from the rest of
+@var{parameter} as the name of the variable; this variable is then
+expanded and that value is used in the rest of the substitution, rather
+than the value of @var{parameter} itself.
+This is known as @code{indirect expansion}.
+The exceptions to this are the expansions of $@{!@var{prefix}*@}
+and $@{!@var{name}[@@]@}
+described below.
+The exclamation point must immediately follow the left brace in order to
+introduce indirection.
+
+In each of the cases below, @var{word} is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+
+When not performing substring expansion, using the form described
+below (e.g., @samp{:-}), Bash tests for a parameter that is unset or null.
+Omitting the colon results in a test only for a parameter that is unset.
+Put another way, if the colon is included,
+the operator tests for both @var{parameter}'s existence and that its value
+is not null; if the colon is omitted, the operator tests only for existence.
+
+@table @code
+
+@item $@{@var{parameter}:@minus{}@var{word}@}
+If @var{parameter} is unset or null, the expansion of
+@var{word} is substituted.  Otherwise, the value of
+@var{parameter} is substituted.
+
+@item $@{@var{parameter}:=@var{word}@}
+If @var{parameter}
+is unset or null, the expansion of @var{word}
+is assigned to @var{parameter}.
+The value of @var{parameter} is then substituted. 
+Positional parameters and special parameters may not be assigned to
+in this way.
+
+@item $@{@var{parameter}:?@var{word}@}
+If @var{parameter}
+is null or unset, the expansion of @var{word} (or a message
+to that effect if @var{word}
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of @var{parameter} is
+substituted.
+
+@item $@{@var{parameter}:+@var{word}@}
+If @var{parameter}
+is null or unset, nothing is substituted, otherwise the expansion of
+@var{word} is substituted.
+
+@item $@{@var{parameter}:@var{offset}@}
+@itemx $@{@var{parameter}:@var{offset}:@var{length}@}
+This is referred to as Substring Expansion.
+It expands to up to @var{length} characters of the value of @var{parameter}
+starting at the character specified by @var{offset}.
+If @var{parameter} is @samp{@@}, an indexed array subscripted by
+@samp{@@} or @samp{*}, or an associative array name, the results differ as
+described below.
+If @var{length} is omitted, it expands to the substring of the value of
+@var{parameter} starting at the character specified by @var{offset}
+and extending to the end of the value.
+@var{length} and @var{offset} are arithmetic expressions
+(@pxref{Shell Arithmetic}).
+
+If @var{offset} evaluates to a number less than zero, the value
+is used as an offset in characters
+from the end of the value of @var{parameter}.
+If @var{length} evaluates to a number less than zero,
+it is interpreted as an offset in characters
+from the end of the value of @var{parameter} rather than
+a number of characters, and the expansion is the characters between
+@var{offset} and that result.
+Note that a negative offset must be separated from the colon by at least
+one space to avoid being confused with the @samp{:-} expansion.
+
+Here are some examples illustrating substring expansion on parameters and
+subscripted arrays:
+
+@verbatim
+$ string=01234567890abcdefgh
+$ echo ${string:7}
+7890abcdefgh
+$ echo ${string:7:0}
+
+$ echo ${string:7:2}
+78
+$ echo ${string:7:-2}
+7890abcdef
+$ echo ${string: -7}
+bcdefgh
+$ echo ${string: -7:0}
+
+$ echo ${string: -7:2}
+bc
+$ echo ${string: -7:-2}
+bcdef
+$ set -- 01234567890abcdefgh
+$ echo ${1:7}
+7890abcdefgh
+$ echo ${1:7:0}
+
+$ echo ${1:7:2}
+78
+$ echo ${1:7:-2}
+7890abcdef
+$ echo ${1: -7}
+bcdefgh
+$ echo ${1: -7:0}
+
+$ echo ${1: -7:2}
+bc
+$ echo ${1: -7:-2}
+bcdef
+$ array[0]=01234567890abcdefgh
+$ echo ${array[0]:7}
+7890abcdefgh
+$ echo ${array[0]:7:0}
+
+$ echo ${array[0]:7:2}
+78
+$ echo ${array[0]:7:-2}
+7890abcdef
+$ echo ${array[0]: -7}
+bcdefgh
+$ echo ${array[0]: -7:0}
+
+$ echo ${array[0]: -7:2}
+bc
+$ echo ${array[0]: -7:-2}
+bcdef
+@end verbatim
+
+If @var{parameter} is @samp{@@}, the result is @var{length} positional
+parameters beginning at @var{offset}.
+A negative @var{offset} is taken relative to one greater than the greatest
+positional parameter, so an offset of -1 evaluates to the last positional
+parameter.
+It is an expansion error if @var{length} evaluates to a number less than zero.
+
+The following examples illustrate substring expansion using positional
+parameters:
+
+@verbatim
+$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${@:7}
+7 8 9 0 a b c d e f g h
+$ echo ${@:7:0}
+
+$ echo ${@:7:2}
+7 8
+$ echo ${@:7:-2}
+bash: -2: substring expression < 0
+$ echo ${@: -7:2}
+b c
+$ echo ${@:0}
+./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${@:0:2}
+./bash 1
+$ echo ${@: -7:0}
+
+@end verbatim
+
+If @var{parameter} is an indexed array name subscripted
+by @samp{@@} or @samp{*}, the result is the @var{length}
+members of the array beginning with @code{$@{@var{parameter}[@var{offset}]@}}.
+A negative @var{offset} is taken relative to one greater than the maximum
+index of the specified array.
+It is an expansion error if @var{length} evaluates to a number less than zero.
+
+These examples show how you can use substring expansion with indexed
+arrays:
+
+@verbatim
+$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h)
+$ echo ${array[@]:7}
+7 8 9 0 a b c d e f g h
+$ echo ${array[@]:7:2}
+7 8
+$ echo ${array[@]: -7:2}
+b c
+$ echo ${array[@]: -7:-2}
+bash: -2: substring expression < 0
+$ echo ${array[@]:0}
+0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${array[@]:0:2}
+0 1
+$ echo ${array[@]: -7:0}
+
+@end verbatim
+
+Substring expansion applied to an associative array produces undefined
+results.
+
+Substring indexing is zero-based unless the positional parameters
+are used, in which case the indexing starts at 1 by default.
+If @var{offset} is 0, and the positional parameters are used, @code{$@@} is
+prefixed to the list.
+
+@item $@{!@var{prefix}*@}
+@itemx $@{!@var{prefix}@@@}
+Expands to the names of variables whose names begin with @var{prefix},
+separated by the first character of the @env{IFS} special variable.
+When @samp{@@} is used and the expansion appears within double quotes, each
+variable name expands to a separate word.
+
+@item $@{!@var{name}[@@]@}
+@itemx $@{!@var{name}[*]@}
+If @var{name} is an array variable, expands to the list of array indices
+(keys) assigned in @var{name}.
+If @var{name} is not an array, expands to 0 if @var{name} is set and null
+otherwise.
+When @samp{@@} is used and the expansion appears within double quotes, each
+key expands to a separate word.
+
+@item $@{#@var{parameter}@}
+The length in characters of the expanded value of @var{parameter} is
+substituted.
+If @var{parameter} is @samp{*} or @samp{@@}, the value substituted
+is the number of positional parameters.
+If @var{parameter} is an array name subscripted by @samp{*} or @samp{@@}, 
+the value substituted is the number of elements in the array.
+
+@item $@{@var{parameter}#@var{word}@}
+@itemx $@{@var{parameter}##@var{word}@}
+The @var{word}
+is expanded to produce a pattern just as in filename
+expansion (@pxref{Filename Expansion}).  If the pattern matches
+the beginning of the expanded value of @var{parameter},
+then the result of the expansion is the expanded value of @var{parameter}
+with the shortest matching pattern (the @samp{#} case) or the
+longest matching pattern (the @samp{##} case) deleted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter} is an array variable subscripted with
+@samp{@@} or @samp{*},
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@item $@{@var{parameter}%@var{word}@}
+@itemx $@{@var{parameter}%%@var{word}@}
+The @var{word} is expanded to produce a pattern just as in
+filename expansion.
+If the pattern matches a trailing portion of the expanded value of
+@var{parameter}, then the result of the expansion is the value of
+@var{parameter} with the shortest matching pattern (the @samp{%} case)
+or the longest matching pattern (the @samp{%%} case) deleted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter}
+is an array variable subscripted with @samp{@@} or @samp{*},
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@item $@{@var{parameter}/@var{pattern}/@var{string}@} 
+
+The @var{pattern} is expanded to produce a pattern just as in
+filename expansion.
+@var{Parameter} is expanded and the longest match of @var{pattern}
+against its value is replaced with @var{string}.
+If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are
+replaced with @var{string}.  Normally only the first match is replaced.
+If @var{pattern} begins with @samp{#}, it must match at the beginning
+of the expanded value of @var{parameter}.
+If @var{pattern} begins with @samp{%}, it must match at the end
+of the expanded value of @var{parameter}.
+If @var{string} is null, matches of @var{pattern} are deleted
+and the @code{/} following @var{pattern} may be omitted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter}
+is an array variable subscripted with @samp{@@} or @samp{*},
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@item $@{@var{parameter}^@var{pattern}@}
+@itemx $@{@var{parameter}^^@var{pattern}@}
+@itemx $@{@var{parameter},@var{pattern}@}
+@itemx $@{@var{parameter},,@var{pattern}@}
+This expansion modifies the case of alphabetic characters in @var{parameter}.
+The @var{pattern} is expanded to produce a pattern just as in
+filename expansion.
+Each character in the expanded value of @var{parameter} is tested against
+@var{pattern}, and, if it matches the pattern, its case is converted.
+The pattern should not attempt to match more than one character.
+The @samp{^} operator converts lowercase letters matching @var{pattern}
+to uppercase; the @samp{,} operator converts matching uppercase letters
+to lowercase.
+The @samp{^^} and @samp{,,} expansions convert each matched character in the
+expanded value; the @samp{^} and @samp{,} expansions match and convert only
+the first character in the expanded value.
+If @var{pattern} is omitted, it is treated like a @samp{?}, which matches
+every character.
+If @var{parameter} is @samp{@@} or @samp{*},
+the case modification operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter}
+is an array variable subscripted with @samp{@@} or @samp{*},
+the case modification operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+@end table
+
+@node Command Substitution
+@subsection Command Substitution
+@cindex command substitution
+
+Command substitution allows the output of a command to replace
+the command itself.
+Command substitution occurs when a command is enclosed as follows:
+@example
+$(@var{command})
+@end example
+@noindent
+or
+@example
+`@var{command}`
+@end example
+
+@noindent
+Bash performs the expansion by executing @var{command} and
+replacing the command substitution with the standard output of the
+command, with any trailing newlines deleted.
+Embedded newlines are not deleted, but they may be removed during
+word splitting.
+The command substitution @code{$(cat @var{file})} can be
+replaced by the equivalent but faster @code{$(< @var{file})}.
+
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+@samp{$}, @samp{`}, or @samp{\}. 
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the @code{$(@var{command})} form, all characters between
+the parentheses make up the command; none are treated specially.
+
+Command substitutions may be nested.  To nest when using the backquoted
+form, escape the inner backquotes with backslashes.
+
+If the substitution appears within double quotes, word splitting and
+filename expansion are not performed on the results.
+
+@node Arithmetic Expansion
+@subsection Arithmetic Expansion
+@cindex expansion, arithmetic
+@cindex arithmetic expansion
+
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+
+@example
+$(( @var{expression} ))
+@end example
+
+The expression is treated as if it were within double quotes, but
+a double quote inside the parentheses is not treated specially.
+All tokens in the expression undergo parameter expansion, command
+substitution, and quote removal.
+Arithmetic expansions may be nested. 
+
+The evaluation is performed according to the rules listed below
+(@pxref{Shell Arithmetic}).
+If the expression is invalid, Bash prints a message indicating
+failure to the standard error and no substitution occurs.
+
+@node Process Substitution
+@subsection Process Substitution
+@cindex process substitution
+
+Process substitution is supported on systems that support named
+pipes (@sc{fifo}s) or the @file{/dev/fd} method of naming open files.
+It takes the form of 
+@example
+<(@var{list})
+@end example
+@noindent
+or
+@example
+>(@var{list})
+@end example
+@noindent
+The process @var{list} is run with its input or output connected to a
+@sc{fifo} or some file in @file{/dev/fd}.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the @code{>(@var{list})} form is used, writing to
+the file will provide input for @var{list}.  If the
+@code{<(@var{list})} form is used, the file passed as an
+argument should be read to obtain the output of @var{list}.
+Note that no space may appear between the @code{<} or @code{>}
+and the left parenthesis, otherwise the construct would be interpreted
+as a redirection.
+
+When available, process substitution is performed simultaneously with
+parameter and variable expansion, command substitution, and arithmetic
+expansion.
+
+@node Word Splitting
+@subsection Word Splitting
+@cindex word splitting
+
+The shell scans the results of parameter expansion, command substitution,
+and arithmetic expansion that did not occur within double quotes for
+word splitting.
+
+The shell treats each character of @env{$IFS} as a delimiter, and splits
+the results of the other expansions into words on these characters.
+If @env{IFS} is unset, or its value is exactly @code{<space><tab><newline>},
+the default, then sequences of
+@code{ <space>}, @code{<tab>}, and @code{<newline>}
+at the beginning and end of the results of the previous
+expansions are ignored, and any sequence of @env{IFS}
+characters not at the beginning or end serves to delimit words.
+If @env{IFS} has a value other than the default, then sequences of
+the whitespace characters @code{space} and @code{tab}
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of @env{IFS} (an @env{IFS} whitespace character).
+Any character in @env{IFS} that is not @env{IFS}
+whitespace, along with any adjacent @env{IFS}
+whitespace characters, delimits a field.  A sequence of @env{IFS}
+whitespace characters is also treated as a delimiter.
+If the value of @env{IFS} is null, no word splitting occurs.
+
+Explicit null arguments (@code{""} or @code{''}) are retained.
+Unquoted implicit null arguments, resulting from the expansion of
+parameters that have no values, are removed.
+If a parameter with no value is expanded within double quotes, a
+null argument results and is retained.
+
+Note that if no expansion occurs, no splitting
+is performed.
+
+@node Filename Expansion
+@subsection Filename Expansion
+@menu
+* Pattern Matching::   How the shell matches patterns.
+@end menu
+@cindex expansion, filename
+@cindex expansion, pathname
+@cindex filename expansion
+@cindex pathname expansion
+
+After word splitting, unless the @option{-f} option has been set
+(@pxref{The Set Builtin}), Bash scans each word for the characters
+@samp{*}, @samp{?}, and @samp{[}.
+If one of these characters appears, then the word is
+regarded as a @var{pattern},
+and replaced with an alphabetically sorted list of
+filenames matching the pattern (@pxref{Pattern Matching}).
+If no matching filenames are found,
+and the shell option @code{nullglob} is disabled, the word is left
+unchanged.
+If the @code{nullglob} option is set, and no matches are found, the word
+is removed.
+If the @code{failglob} shell option is set, and no matches are found,
+an error message is printed and the command is not executed.
+If the shell option @code{nocaseglob} is enabled, the match is performed
+without regard to the case of alphabetic characters.
+
+When a pattern is used for filename expansion, the character @samp{.}
+at the start of a filename or immediately following a slash
+must be matched explicitly, unless the shell option @code{dotglob} is set.
+When matching a filename, the slash character must always be
+matched explicitly.
+In other cases, the @samp{.} character is not treated specially.
+
+See the description of @code{shopt} in @ref{The Shopt Builtin},
+for a description of the @code{nocaseglob}, @code{nullglob},
+@code{failglob}, and @code{dotglob} options.
+
+The @env{GLOBIGNORE}
+shell variable may be used to restrict the set of filenames matching a
+pattern.  If @env{GLOBIGNORE}
+is set, each matching filename that also matches one of the patterns in
+@env{GLOBIGNORE} is removed from the list of matches.  The filenames
+@file{.} and @file{..}
+are always ignored when @env{GLOBIGNORE}
+is set and not null.
+However, setting @env{GLOBIGNORE} to a non-null value has the effect of
+enabling the @code{dotglob}
+shell option, so all other filenames beginning with a
+@samp{.} will match.
+To get the old behavior of ignoring filenames beginning with a
+@samp{.}, make @samp{.*} one of the patterns in @env{GLOBIGNORE}.
+The @code{dotglob} option is disabled when @env{GLOBIGNORE}
+is unset.
+
+@node Pattern Matching
+@subsubsection Pattern Matching
+@cindex pattern matching
+@cindex matching, pattern
+
+Any character that appears in a pattern, other than the special pattern
+characters described below, matches itself.
+The @sc{nul} character may not occur in a pattern.
+A backslash escapes the following character; the
+escaping backslash is discarded when matching.
+The special pattern characters must be quoted if they are to be matched
+literally.
+
+The special pattern characters have the following meanings:
+@table @code
+@item *
+Matches any string, including the null string.
+When the @code{globstar} shell option is enabled, and @samp{*} is used in
+a filename expansion context, two adjacent @samp{*}s used as a single
+pattern will match all files and zero or more directories and
+subdirectories.
+If followed by a @samp{/}, two adjacent @samp{*}s will match only
+directories and subdirectories.
+@item ?
+Matches any single character.
+@item [@dots{}]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a @var{range expression};
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+@samp{[} is a @samp{!}  or a @samp{^}
+then any character not enclosed is matched.  A @samp{@minus{}}
+may be matched by including it as the first or last character
+in the set.  A @samp{]} may be matched by including it as the first
+character in the set.
+The sorting order of characters in range expressions is determined by
+the current locale and the values of the
+@env{LC_COLLATE} and @env{LC_ALL} shell variables, if set.
+
+For example, in the default C locale, @samp{[a-dx-z]} is equivalent to
+@samp{[abcdxyz]}.  Many locales sort characters in dictionary order, and in
+these locales @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]};
+it might be equivalent to @samp{[aBbCcDdxXyYz]}, for example.  To obtain
+the traditional interpretation of ranges in bracket expressions, you can
+force the use of the C locale by setting the @env{LC_COLLATE} or
+@env{LC_ALL} environment variable to the value @samp{C}, or enable the
+@code{globasciiranges} shell option.
+
+Within @samp{[} and @samp{]}, @var{character classes} can be specified
+using the syntax
+@code{[:}@var{class}@code{:]}, where @var{class} is one of the
+following classes defined in the @sc{posix} standard:
+@example
+alnum   alpha   ascii   blank   cntrl   digit   graph   lower
+print   punct   space   upper   word    xdigit
+@end example
+@noindent
+A character class matches any character belonging to that class.
+The @code{word} character class matches letters, digits, and the character
+@samp{_}.
+
+Within @samp{[} and @samp{]}, an @var{equivalence class} can be
+specified using the syntax @code{[=}@var{c}@code{=]}, which
+matches all characters with the same collation weight (as defined
+by the current locale) as the character @var{c}.
+
+Within @samp{[} and @samp{]}, the syntax @code{[.}@var{symbol}@code{.]}
+matches the collating symbol @var{symbol}.
+@end table
+
+If the @code{extglob} shell option is enabled using the @code{shopt}
+builtin, several extended pattern matching operators are recognized.
+In the following description, a @var{pattern-list} is a list of one
+or more patterns separated by a @samp{|}.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+
+@table @code
+@item ?(@var{pattern-list})
+Matches zero or one occurrence of the given patterns.
+
+@item *(@var{pattern-list})
+Matches zero or more occurrences of the given patterns.
+
+@item +(@var{pattern-list})
+Matches one or more occurrences of the given patterns.
+
+@item @@(@var{pattern-list})
+Matches one of the given patterns.
+
+@item !(@var{pattern-list})
+Matches anything except one of the given patterns.
+@end table
+
+@node Quote Removal
+@subsection Quote Removal
+
+After the preceding expansions, all unquoted occurrences of the
+characters @samp{\}, @samp{'}, and @samp{"} that did not
+result from one of the above expansions are removed.
+
+@node Redirections
+@section Redirections
+@cindex redirection
+
+Before a command is executed, its input and output
+may be @var{redirected}
+using a special notation interpreted by the shell.
+Redirection allows commands' file handles to be
+duplicated, opened, closed,
+made to refer to different files,
+and can change the files the command reads from and writes to.
+Redirection may also be used to modify file handles in the
+current shell execution environment.  The following redirection
+operators may precede or appear anywhere within a
+simple command or may follow a command.
+Redirections are processed in the order they appear, from
+left to right.
+
+Each redirection that may be preceded by a file descriptor number
+may instead be preceded by a word of the form @{@var{varname}@}.
+In this case, for each redirection operator except
+>&- and <&-, the shell will allocate a file descriptor greater
+than 10 and assign it to @{@var{varname}@}.  If >&- or <&- is preceded
+by @{@var{varname}@}, the value of @var{varname} defines the file
+descriptor to close.
+
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+@samp{<}, the redirection refers to the standard input (file
+descriptor 0).  If the first character of the redirection operator
+is @samp{>}, the redirection refers to the standard output (file
+descriptor 1).
+
+The word following the redirection operator in the following
+descriptions, unless otherwise noted, is subjected to brace expansion,
+tilde expansion, parameter expansion, command substitution, arithmetic
+expansion, quote removal, filename expansion, and word splitting.
+If it expands to more than one word, Bash reports an error.
+
+Note that the order of redirections is significant.  For example,
+the command
+@example
+ls > @var{dirlist} 2>&1
+@end example
+@noindent
+directs both standard output (file descriptor 1) and standard error
+(file descriptor 2) to the file @var{dirlist}, while the command
+@example
+ls 2>&1 > @var{dirlist}
+@end example
+@noindent
+directs only the standard output to file @var{dirlist},
+because the standard error was made a copy of the standard output
+before the standard output was redirected to @var{dirlist}.
+
+Bash handles several filenames specially when they are used in
+redirections, as described in the following table:
+
+@table @code
+@item /dev/fd/@var{fd}
+If @var{fd} is a valid integer, file descriptor @var{fd} is duplicated.
+
+@item /dev/stdin
+File descriptor 0 is duplicated.
+
+@item /dev/stdout
+File descriptor 1 is duplicated.
+
+@item /dev/stderr
+File descriptor 2 is duplicated.
+
+@item /dev/tcp/@var{host}/@var{port}
+If @var{host} is a valid hostname or Internet address, and @var{port}
+is an integer port number or service name, Bash attempts to open
+the corresponding TCP socket.
+
+@item /dev/udp/@var{host}/@var{port}
+If @var{host} is a valid hostname or Internet address, and @var{port}
+is an integer port number or service name, Bash attempts to open 
+the corresponding UDP socket.
+@end table
+
+A failure to open or create a file causes the redirection to fail.
+
+Redirections using file descriptors greater than 9 should be used with
+care, as they may conflict with file descriptors the shell uses
+internally.
+
+@subsection Redirecting Input
+Redirection of input causes the file whose name results from
+the expansion of @var{word}
+to be opened for reading on file descriptor @code{n},
+or the standard input (file descriptor 0) if @code{n}
+is not specified.
+
+The general format for redirecting input is:
+@example
+[@var{n}]<@var{word}
+@end example
+
+@subsection Redirecting Output
+Redirection of output causes the file whose name results from
+the expansion of @var{word}
+to be opened for writing on file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{n}
+is not specified.  If the file does not exist it is created;
+if it does exist it is truncated to zero size.
+
+The general format for redirecting output is:
+@example
+[@var{n}]>[|]@var{word}
+@end example
+
+If the redirection operator is @samp{>}, and the @code{noclobber}
+option to the @code{set} builtin has been enabled, the redirection
+will fail if the file whose name results from the expansion of
+@var{word} exists and is a regular file.
+If the redirection operator is @samp{>|}, or the redirection operator is
+@samp{>} and the @code{noclobber} option is not enabled, the redirection
+is attempted even if the file named by @var{word} exists.
+
+@subsection Appending Redirected Output
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of @var{word}
+to be opened for appending on file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{n}
+is not specified.  If the file does not exist it is created.
+
+The general format for appending output is:
+@example
+[@var{n}]>>@var{word}
+@end example
+
+@subsection Redirecting Standard Output and Standard Error
+This construct allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be redirected to the file whose name is the
+expansion of @var{word}.
+
+There are two formats for redirecting standard output and
+standard error:
+@example
+&>@var{word}
+@end example
+@noindent
+and
+@example
+>&@var{word}
+@end example
+@noindent
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+@example
+>@var{word} 2>&1
+@end example
+When using the second form, @var{word} may not expand to a number or
+@samp{-}.  If it does, other redirection operators apply
+(see Duplicating File Descriptors below) for compatibility reasons.
+
+@subsection Appending Standard Output and Standard Error
+This construct allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be appended to the file whose name is the
+expansion of @var{word}.
+
+The format for appending standard output and standard error is:
+@example
+&>>@var{word}
+@end example
+@noindent
+This is semantically equivalent to
+@example
+>>@var{word} 2>&1
+@end example
+(see Duplicating File Descriptors below).
+
+@subsection Here Documents
+This type of redirection instructs the shell to read input from the
+current source until a line containing only @var{word}
+(with no trailing blanks) is seen.  All of
+the lines read up to that point are then used as the standard
+input for a command.
+
+The format of here-documents is:
+@example
+<<[@minus{}]@var{word}
+        @var{here-document}
+@var{delimiter}
+@end example
+
+No parameter and variable expansion, command substitution,
+arithmetic expansion, or filename expansion is performed on
+@var{word}.  If any characters in @var{word} are quoted, the
+@var{delimiter} is the result of quote removal on @var{word},
+and the lines in the here-document are not expanded.
+If @var{word} is unquoted,
+all lines of the here-document are subjected to
+parameter expansion, command substitution, and arithmetic expansion,
+the character sequence @code{\newline} is ignored, and @samp{\}
+must be used to quote the characters
+@samp{\}, @samp{$}, and @samp{`}.
+
+If the redirection operator is @samp{<<-},
+then all leading tab characters are stripped from input lines and the
+line containing @var{delimiter}.
+This allows here-documents within shell scripts to be indented in a
+natural fashion.
+
+@subsection Here Strings
+A variant of here documents, the format is:
+@example
+<<< @var{word}
+@end example
+
+The @var{word} undergoes
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote removal.
+Pathname expansion and word splitting are not performed.
+The result is supplied as a single string to the command on its
+standard input.
+
+@subsection Duplicating File Descriptors
+The redirection operator
+@example
+[@var{n}]<&@var{word}
+@end example
+@noindent
+is used to duplicate input file descriptors.
+If @var{word}
+expands to one or more digits, the file descriptor denoted by @var{n}
+is made to be a copy of that file descriptor.
+If the digits in @var{word} do not specify a file descriptor open for
+input, a redirection error occurs.
+If @var{word}
+evaluates to @samp{-}, file descriptor @var{n} is closed.
+If @var{n} is not specified, the standard input (file descriptor 0) is used.
+
+The operator
+@example
+[@var{n}]>&@var{word}
+@end example
+@noindent
+is used similarly to duplicate output file descriptors.  If
+@var{n} is not specified, the standard output (file descriptor 1) is used.
+If the digits in @var{word} do not specify a file descriptor open for
+output, a redirection error occurs.
+If @var{word}
+evaluates to @samp{-}, file descriptor @var{n} is closed.
+As a special case, if @var{n} is omitted, and @var{word} does not
+expand to one or more digits or @samp{-}, the standard output and standard
+error are redirected as described previously.
+
+@subsection Moving File Descriptors
+The redirection operator
+@example
+[@var{n}]<&@var{digit}-
+@end example
+@noindent
+moves the file descriptor @var{digit} to file descriptor @var{n},
+or the standard input (file descriptor 0) if @var{n} is not specified.
+@var{digit} is closed after being duplicated to @var{n}.
+
+Similarly, the redirection operator
+@example
+[@var{n}]>&@var{digit}-
+@end example
+@noindent
+moves the file descriptor @var{digit} to file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{n} is not specified.
+
+@subsection Opening File Descriptors for Reading and Writing
+The redirection operator
+@example
+[@var{n}]<>@var{word}
+@end example
+@noindent
+causes the file whose name is the expansion of @var{word}
+to be opened for both reading and writing on file descriptor
+@var{n}, or on file descriptor 0 if @var{n}
+is not specified.  If the file does not exist, it is created.
+
+@node Executing Commands
+@section Executing Commands
+
+@menu
+* Simple Command Expansion::   How Bash expands simple commands before
+                               executing them.
+* Command Search and Execution::       How Bash finds commands and runs them.
+* Command Execution Environment::      The environment in which Bash
+                                       executes commands that are not
+                                       shell builtins.
+* Environment::                The environment given to a command.
+* Exit Status::                The status returned by commands and how Bash
+                       interprets it.
+* Signals::            What happens when Bash or a command it runs
+                       receives a signal.
+@end menu
+
+@node Simple Command Expansion
+@subsection Simple Command Expansion
+@cindex command expansion
+
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+
+@enumerate
+@item
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+
+@item
+The words that are not variable assignments or redirections are
+expanded (@pxref{Shell Expansions}).
+If any words remain after expansion, the first word
+is taken to be the name of the command and the remaining words are
+the arguments.
+
+@item
+Redirections are performed as described above (@pxref{Redirections}).
+
+@item
+The text after the @samp{=} in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+@end enumerate
+
+If no command name results, the variable assignments affect the current
+shell environment.  Otherwise, the variables are added to the environment
+of the executed command and do not affect the current shell environment.
+If any of the assignments attempts to assign a value to a readonly variable,
+an error occurs, and the command exits with a non-zero status.
+
+If no command name results, redirections are performed, but do not
+affect the current shell environment.  A redirection error causes the
+command to exit with a non-zero status.
+
+If there is a command name left after expansion, execution proceeds as
+described below.  Otherwise, the command exits.  If one of the expansions
+contained a command substitution, the exit status of the command is
+the exit status of the last command substitution performed.  If there
+were no command substitutions, the command exits with a status of zero.
+
+@node Command Search and Execution
+@subsection Command Search and Execution
+@cindex command execution
+@cindex command search
+
+After a command has been split into words, if it results in a
+simple command and an optional list of arguments, the following
+actions are taken.
+
+@enumerate
+@item
+If the command name contains no slashes, the shell attempts to
+locate it.  If there exists a shell function by that name, that
+function is invoked as described in @ref{Shell Functions}.
+
+@item
+If the name does not match a function, the shell searches for
+it in the list of shell builtins.  If a match is found, that
+builtin is invoked.
+
+@item
+If the name is neither a shell function nor a builtin,
+and contains no slashes, Bash searches each element of
+@env{$PATH} for a directory containing an executable file
+by that name.  Bash uses a hash table to remember the full
+pathnames of executable files to avoid multiple @env{PATH} searches
+(see the description of @code{hash} in @ref{Bourne Shell Builtins}).
+A full search of the directories in @env{$PATH}
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell searches for a defined shell
+function named @code{command_not_found_handle}.
+If that function exists, it is invoked with the original command and
+the original command's arguments as its arguments, and the function's
+exit status becomes the exit status of the shell.
+If that function is not defined, the shell prints an error
+message and returns an exit status of 127.
+
+@item
+If the search is successful, or if the command name contains
+one or more slashes, the shell executes the named program in
+a separate execution environment.
+Argument 0 is set to the name given, and the remaining arguments
+to the command are set to the arguments supplied, if any.
+
+@item
+If this execution fails because the file is not in executable
+format, and the file is not a directory, it is assumed to be a
+@var{shell script} and the shell executes it as described in
+@ref{Shell Scripts}.
+
+@item
+If the command was not begun asynchronously, the shell waits for
+the command to complete and collects its exit status.
+
+@end enumerate
+
+@node Command Execution Environment
+@subsection Command Execution Environment
+@cindex execution environment
+
+The shell has an @var{execution environment}, which consists of the
+following:
+
+@itemize @bullet
+@item
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the @code{exec} builtin
+
+@item
+the current working directory as set by @code{cd}, @code{pushd}, or
+@code{popd}, or inherited by the shell at invocation
+
+@item
+the file creation mode mask as set by @code{umask} or inherited from
+the shell's parent
+
+@item
+current traps set by @code{trap}
+
+@item
+shell parameters that are set by variable assignment or with @code{set}
+or inherited from the shell's parent in the environment
+
+@item
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+
+@item
+options enabled at invocation (either by default or with command-line
+arguments) or by @code{set}
+
+@item
+options enabled by @code{shopt} (@pxref{The Shopt Builtin})
+
+@item
+shell aliases defined with @code{alias} (@pxref{Aliases})
+
+@item
+various process @sc{id}s, including those of background jobs
+(@pxref{Lists}), the value of @code{$$}, and the value of
+@env{$PPID}
+
+@end itemize
+
+When a simple command other than a builtin or shell function
+is to be executed, it
+is invoked in a separate execution environment that consists of
+the following.  Unless otherwise noted, the values are inherited
+from the shell.
+
+@itemize @bullet
+@item
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+
+@item
+the current working directory
+
+@item
+the file creation mode mask
+
+@item
+shell variables and functions marked for export, along with variables
+exported for the command, passed in the environment (@pxref{Environment})
+
+@item
+traps caught by the shell are reset to the values inherited from the
+shell's parent, and traps ignored by the shell are ignored
+
+@end itemize
+
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+
+Command substitution, commands grouped with parentheses,
+and asynchronous commands are invoked in a
+subshell environment that is a duplicate of the shell environment,
+except that traps caught by the shell are reset to the values
+that the shell inherited from its parent at invocation.  Builtin
+commands that are invoked as part of a pipeline are also executed
+in a subshell environment.  Changes made to the subshell environment
+cannot affect the shell's execution environment.
+
+Subshells spawned to execute command substitutions inherit the value of
+the @option{-e} option from the parent shell.  When not in @sc{posix} mode,
+Bash clears the @option{-e} option in such subshells.
+
+If a command is followed by a @samp{&} and job control is not active, the
+default standard input for the command is the empty file @file{/dev/null}.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+
+@node Environment
+@subsection Environment
+@cindex environment
+
+When a program is invoked it is given an array of strings
+called the @var{environment}.
+This is a list of name-value pairs, of the form @code{name=value}.
+
+Bash provides several ways to manipulate the environment.
+On invocation, the shell scans its own environment and
+creates a parameter for each name found, automatically marking
+it for @var{export}
+to child processes.  Executed commands inherit the environment.
+The @code{export} and @samp{declare -x}
+commands allow parameters and functions to be added to and
+deleted from the environment.  If the value of a parameter
+in the environment is modified, the new value becomes part
+of the environment, replacing the old.  The environment
+inherited by any executed command consists of the shell's
+initial environment, whose values may be modified in the shell,
+less any pairs removed by the @code{unset} and @samp{export -n}
+commands, plus any additions via the @code{export} and
+@samp{declare -x} commands.
+
+The environment for any simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described in @ref{Shell Parameters}.
+These assignment statements affect only the environment seen
+by that command.
+
+If the @option{-k} option is set (@pxref{The Set Builtin}), then all
+parameter assignments are placed in the environment for a command,
+not just those that precede the command name.
+
+When Bash invokes an external command, the variable @samp{$_}
+is set to the full pathname of the command and passed to that
+command in its environment.
+
+@node Exit Status
+@subsection Exit Status
+@cindex exit status
+
+The exit status of an executed command is the value returned by the
+@var{waitpid} system call or equivalent function.  Exit statuses    
+fall between 0 and 255, though, as explained below, the shell may
+use values above 125 specially.  Exit statuses from shell builtins and
+compound commands are also limited to this range.  Under certain
+circumstances, the shell will use special values to indicate specific
+failure modes.
+
+For the shell's purposes, a command which exits with a
+zero exit status has succeeded.
+A non-zero exit status indicates failure.
+This seemingly counter-intuitive scheme is used so there
+is one well-defined way to indicate success and a variety of
+ways to indicate various failure modes.
+When a command terminates on a fatal signal whose number is @var{N},
+Bash uses the value 128+@var{N} as the exit status.
+
+If a command is not found, the child process created to
+execute it returns a status of 127.  If a command is found  
+but is not executable, the return status is 126.
+
+If a command fails because of an error during expansion or redirection,
+the exit status is greater than zero.
+
+The exit status is used by the Bash conditional commands
+(@pxref{Conditional Constructs}) and some of the list
+constructs (@pxref{Lists}).
+
+All of the Bash builtins return an exit status of zero if they succeed
+and a non-zero status on failure, so they may be used by the
+conditional and list constructs.
+All builtins return an exit status of 2 to indicate incorrect usage.
+
+@node Signals
+@subsection Signals
+@cindex signal handling
+
+When Bash is interactive, in the absence of any traps, it ignores
+@code{SIGTERM} (so that @samp{kill 0} does not kill an interactive shell),
+and @code{SIGINT}
+is caught and handled (so that the @code{wait} builtin is interruptible).
+When Bash receives a @code{SIGINT}, it breaks out of any executing loops.
+In all cases, Bash ignores @code{SIGQUIT}.
+If job control is in effect (@pxref{Job Control}), Bash
+ignores @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+Non-builtin commands started by Bash have signal handlers set to the
+values inherited by the shell from its parent.
+When job control is not in effect, asynchronous commands
+ignore @code{SIGINT} and @code{SIGQUIT} in addition to these inherited
+handlers.
+Commands run as a result of
+command substitution ignore the keyboard-generated job control signals
+@code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+The shell exits by default upon receipt of a @code{SIGHUP}.
+Before exiting, an interactive shell resends the @code{SIGHUP} to
+all jobs, running or stopped.
+Stopped jobs are sent @code{SIGCONT} to ensure that they receive
+the @code{SIGHUP}.
+To prevent the shell from sending the @code{SIGHUP} signal to a
+particular job, it should be removed
+from the jobs table with the @code{disown}
+builtin (@pxref{Job Control Builtins}) or marked
+to not receive @code{SIGHUP} using @code{disown -h}.
+
+If the  @code{huponexit} shell option has been set with @code{shopt}
+(@pxref{The Shopt Builtin}), Bash sends a @code{SIGHUP} to all jobs when
+an interactive login shell exits.
+
+If Bash is waiting for a command to complete and receives a signal
+for which a trap has been set, the trap will not be executed until
+the command completes. 
+When Bash is waiting for an asynchronous
+command via the @code{wait} builtin, the reception of a signal for
+which a trap has been set will cause the @code{wait} builtin to return
+immediately with an exit status greater than 128, immediately after
+which the trap is executed.
+
+@node Shell Scripts
+@section Shell Scripts
+@cindex shell script
+
+A shell script is a text file containing shell commands.  When such
+a file is used as the first non-option argument when invoking Bash,
+and neither the @option{-c} nor @option{-s} option is supplied
+(@pxref{Invoking Bash}), 
+Bash reads and executes commands from the file, then exits.  This
+mode of operation creates a non-interactive shell.  The shell first
+searches for the file in the current directory, and looks in the
+directories in @env{$PATH} if not found there.
+
+When Bash runs
+a shell script, it sets the special parameter @code{0} to the name
+of the file, rather than the name of the shell, and the positional
+parameters are set to the remaining arguments, if any are given.
+If no additional arguments are supplied, the positional parameters
+are unset.
+
+A shell script may be made executable by using the @code{chmod} command
+to turn on the execute bit.  When Bash finds such a file while
+searching the @env{$PATH} for a command, it spawns a subshell to
+execute it.  In other words, executing
+@example
+filename @var{arguments}
+@end example
+@noindent
+is equivalent to executing
+@example
+bash filename @var{arguments}
+@end example
+
+@noindent
+if @code{filename} is an executable shell script.
+This subshell reinitializes itself, so that the effect is as if a
+new shell had been invoked to interpret the script, with the
+exception that the locations of commands remembered by the parent
+(see the description of @code{hash} in @ref{Bourne Shell Builtins})
+are retained by the child.
+
+Most versions of Unix make this a part of the operating system's command
+execution mechanism.  If the first line of a script begins with
+the two characters @samp{#!}, the remainder of the line specifies
+an interpreter for the program.
+Thus, you can specify Bash, @code{awk}, Perl, or some other
+interpreter and write the rest of the script file in that language.
+
+The arguments to the interpreter
+consist of a single optional argument following the interpreter
+name on the first line of the script file, followed by the name of
+the script file, followed by the rest of the arguments.  Bash
+will perform this action on operating systems that do not handle it
+themselves.  Note that some older versions of Unix limit the interpreter
+name and argument to a maximum of 32 characters.
+
+Bash scripts often begin with @code{#! /bin/bash} (assuming that
+Bash has been installed in @file{/bin}), since this ensures that
+Bash will be used to interpret the script, even if it is executed
+under another shell.
+
+@node Shell Builtin Commands
+@chapter Shell Builtin Commands
+
+@menu
+* Bourne Shell Builtins::      Builtin commands inherited from the Bourne
+                               Shell.
+* Bash Builtins::              Table of builtins specific to Bash.
+* Modifying Shell Behavior::   Builtins to modify shell attributes and
+                               optional behavior.
+* Special Builtins::           Builtin commands classified specially by
+                               POSIX.
+@end menu
+
+Builtin commands are contained within the shell itself.
+When the name of a builtin command is used as the first word of
+a simple command (@pxref{Simple Commands}), the shell executes
+the command directly, without invoking another program.
+Builtin commands are necessary to implement functionality impossible
+or inconvenient to obtain with separate utilities.
+
+This section briefly describes the builtins which Bash inherits from
+the Bourne Shell, as well as the builtin commands which are unique
+to or have been extended in Bash.
+
+Several builtin commands are described in other chapters:  builtin
+commands which provide the Bash interface to the job control
+facilities (@pxref{Job Control Builtins}), the directory stack
+(@pxref{Directory Stack Builtins}), the command history
+(@pxref{Bash History Builtins}), and the programmable completion
+facilities (@pxref{Programmable Completion Builtins}).
+
+Many of the builtins have been extended by @sc{posix} or Bash.
+
+Unless otherwise noted, each builtin command documented as accepting
+options preceded by @samp{-} accepts @samp{--}
+to signify the end of the options.
+The @code{:}, @code{true}, @code{false}, and @code{test}
+builtins do not accept options and do not treat @samp{--} specially.
+The @code{exit}, @code{logout}, @code{break}, @code{continue}, @code{let},
+and @code{shift} builtins accept and process arguments beginning
+with @samp{-} without requiring @samp{--}.
+Other builtins that accept arguments but are not specified as accepting
+options interpret arguments beginning with @samp{-} as invalid options and
+require @samp{--} to prevent this interpretation.
+
+@node Bourne Shell Builtins
+@section Bourne Shell Builtins
+
+The following shell builtin commands are inherited from the Bourne Shell.
+These commands are implemented as specified by the @sc{posix} standard.
+
+@table @code
+@item :    @r{(a colon)}
+@btindex :
+@example
+: [@var{arguments}]
+@end example
+
+Do nothing beyond expanding @var{arguments} and performing redirections.
+The return status is zero.
+
+@item .    @r{(a period)}
+@btindex .
+@example
+. @var{filename} [@var{arguments}]
+@end example
+
+Read and execute commands from the @var{filename} argument in the
+current shell context.  If @var{filename} does not contain a slash,
+the @env{PATH} variable is used to find @var{filename}.
+When Bash is not in @sc{posix} mode, the current directory is searched
+if @var{filename} is not found in @env{$PATH}.
+If any @var{arguments} are supplied, they become the positional
+parameters when @var{filename} is executed.  Otherwise the positional
+parameters are unchanged.
+The return status is the exit status of the last command executed, or
+zero if no commands are executed.  If @var{filename} is not found, or
+cannot be read, the return status is non-zero.
+This builtin is equivalent to @code{source}.
+
+@item break
+@btindex break
+@example
+break [@var{n}]
+@end example
+
+Exit from a @code{for}, @code{while}, @code{until}, or @code{select} loop.
+If @var{n} is supplied, the @var{n}th enclosing loop is exited.
+@var{n} must be greater than or equal to 1.
+The return status is zero unless @var{n} is not greater than or equal to 1.
+
+@item cd
+@btindex cd
+@example
+cd [-L|[-P [-e]]] [@var{directory}]
+@end example
+
+Change the current working directory to @var{directory}.
+If @var{directory} is not supplied, the value of the @env{HOME}
+shell variable is used.
+Any additional arguments following @var{directory} are ignored.
+If the shell variable
+@env{CDPATH} exists, it is used as a search path:
+each directory name in @env{CDPATH} is searched for
+@var{directory}, with alternative directory names in @env{CDPATH}
+separated by a colon (@samp{:}).
+If @var{directory} begins with a slash, @env{CDPATH} is not used.
+
+The @option{-P} option means to not follow symbolic links: symbolic links
+are resolved while @code{cd} is traversing @var{directory} and before
+processing an instance of @samp{..} in @var{directory}.
+
+By default, or when the @option{-L} option is supplied, symbolic links
+in @var{directory} are resolved after @code{cd} processes an instance
+of @samp{..} in @var{directory}.
+
+If @samp{..} appears in @var{directory}, it is processed by removing the
+immediately preceding pathname component, back to a slash or the beginning
+of @var{directory}.
+
+If the @option{-e} option is supplied with @option{-P}
+and the current working directory cannot be successfully determined
+after a successful directory change, @code{cd} will return an unsuccessful
+status.
+If @var{directory} is @samp{-}, it is converted to @env{$OLDPWD}
+before the directory change is attempted.
+
+If a non-empty directory name from @env{CDPATH} is used, or if
+@samp{-} is the first argument, and the directory change is
+successful, the absolute pathname of the new working directory is
+written to the standard output.
+
+The return status is zero if the directory is successfully changed,
+non-zero otherwise.
+
+@item continue
+@btindex continue
+@example
+continue [@var{n}]
+@end example
+
+Resume the next iteration of an enclosing @code{for}, @code{while},
+@code{until}, or @code{select} loop.
+If @var{n} is supplied, the execution of the @var{n}th enclosing loop
+is resumed.
+@var{n} must be greater than or equal to 1.
+The return status is zero unless @var{n} is not greater than or equal to 1.
+
+@item eval
+@btindex eval
+@example
+eval [@var{arguments}]
+@end example
+
+The arguments are concatenated together into a single command, which is
+then read and executed, and its exit status returned as the exit status
+of @code{eval}.
+If there are no arguments or only empty arguments, the return status is
+zero.
+
+@item exec
+@btindex exec
+@example
+exec [-cl] [-a @var{name}] [@var{command} [@var{arguments}]]
+@end example
+
+If @var{command}
+is supplied, it replaces the shell without creating a new process.
+If the @option{-l} option is supplied, the shell places a dash at the
+beginning of the zeroth argument passed to @var{command}.
+This is what the @code{login} program does.
+The @option{-c} option causes @var{command} to be executed with an empty
+environment.
+If @option{-a} is supplied, the shell passes @var{name} as the zeroth
+argument to @var{command}.
+If @var{command}
+cannot be executed for some reason, a non-interactive shell exits,
+unless the @code{execfail} shell option
+is enabled.  In that case, it returns failure.
+An interactive shell returns failure if the file cannot be executed.
+If no @var{command} is specified, redirections may be used to affect
+the current shell environment.  If there are no redirection errors, the
+return status is zero; otherwise the return status is non-zero.
+
+@item exit
+@btindex exit
+@example
+exit [@var{n}]
+@end example
+
+Exit the shell, returning a status of @var{n} to the shell's parent.
+If @var{n} is omitted, the exit status is that of the last command executed.
+Any trap on @code{EXIT} is executed before the shell terminates.
+
+@item export
+@btindex export
+@example
+export [-fn] [-p] [@var{name}[=@var{value}]]
+@end example
+
+Mark each @var{name} to be passed to child processes
+in the environment.  If the @option{-f} option is supplied, the @var{name}s
+refer to shell functions; otherwise the names refer to shell variables.
+The @option{-n} option means to no longer mark each @var{name} for export.
+If no @var{names} are supplied, or if the @option{-p} option is given, a
+list of names of all exported variables is displayed.
+The @option{-p} option displays output in a form that may be reused as input.
+If a variable name is followed by =@var{value}, the value of
+the variable is set to @var{value}.
+
+The return status is zero unless an invalid option is supplied, one of
+the names is not a valid shell variable name, or @option{-f} is supplied
+with a name that is not a shell function.
+
+@item getopts
+@btindex getopts
+@example
+getopts @var{optstring} @var{name} [@var{args}]
+@end example
+
+@code{getopts} is used by shell scripts to parse positional parameters.
+@var{optstring} contains the option characters to be recognized; if a
+character is followed by a colon, the option is expected to have an
+argument, which should be separated from it by whitespace.
+The colon (@samp{:}) and question mark (@samp{?}) may not be
+used as option characters.
+Each time it is invoked, @code{getopts}
+places the next option in the shell variable @var{name}, initializing
+@var{name} if it does not exist,
+and the index of the next argument to be processed into the
+variable @env{OPTIND}.
+@env{OPTIND} is initialized to 1 each time the shell or a shell script
+is invoked.
+When an option requires an argument,
+@code{getopts} places that argument into the variable @env{OPTARG}.
+The shell does not reset @env{OPTIND} automatically; it must be manually
+reset between multiple calls to @code{getopts} within the same shell
+invocation if a new set of parameters is to be used.
+
+When the end of options is encountered, @code{getopts} exits with a
+return value greater than zero.
+@env{OPTIND} is set to the index of the first non-option argument,
+and @var{name} is set to @samp{?}.
+
+@code{getopts}
+normally parses the positional parameters, but if more arguments are
+given in @var{args}, @code{getopts} parses those instead.
+
+@code{getopts} can report errors in two ways.  If the first character of
+@var{optstring} is a colon, @var{silent}
+error reporting is used.  In normal operation, diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable @env{OPTERR}
+is set to 0, no error messages will be displayed, even if the first
+character of @code{optstring} is not a colon.
+
+If an invalid option is seen,
+@code{getopts} places @samp{?} into @var{name} and, if not silent,
+prints an error message and unsets @env{OPTARG}.
+If @code{getopts} is silent, the option character found is placed in
+@env{OPTARG} and no diagnostic message is printed.
+
+If a required argument is not found, and @code{getopts}
+is not silent, a question mark (@samp{?}) is placed in @var{name},
+@code{OPTARG} is unset, and a diagnostic message is printed.
+If @code{getopts} is silent, then a colon (@samp{:}) is placed in
+@var{name} and @env{OPTARG} is set to the option character found.
+
+@item hash
+@btindex hash
+@example
+hash [-r] [-p @var{filename}] [-dt] [@var{name}]
+@end example
+
+Each time @code{hash} is invoked, it remembers the full pathnames of the
+commands specified as @var{name} arguments,
+so they need not be searched for on subsequent invocations.
+The commands are found by searching through the directories listed in
+@env{$PATH}.
+Any previously-remembered pathname is discarded.
+The @option{-p} option inhibits the path search, and @var{filename} is
+used as the location of @var{name}.
+The @option{-r} option causes the shell to forget all remembered locations.
+The @option{-d} option causes the shell to forget the remembered location
+of each @var{name}.
+If the @option{-t} option is supplied, the full pathname to which each
+@var{name} corresponds is printed.  If multiple @var{name} arguments are
+supplied with @option{-t} the @var{name} is printed before the hashed
+full pathname.
+The @option{-l} option causes output to be displayed in a format
+that may be reused as input.
+If no arguments are given, or if only @option{-l} is supplied,
+information about remembered commands is printed.
+The return status is zero unless a @var{name} is not found or an invalid
+option is supplied.
+
+@item pwd
+@btindex pwd
+@example
+pwd [-LP]
+@end example
+
+Print the absolute pathname of the current working directory.
+If the @option{-P} option is supplied, the pathname printed will not
+contain symbolic links.
+If the @option{-L} option is supplied, the pathname printed may contain
+symbolic links.
+The return status is zero unless an error is encountered while
+determining the name of the current directory or an invalid option
+is supplied.
+
+@item readonly
+@btindex readonly
+@example
+readonly [-aAf] [-p] [@var{name}[=@var{value}]] @dots{}
+@end example
+
+Mark each @var{name} as readonly.
+The values of these names may not be changed by subsequent assignment.
+If the @option{-f} option is supplied, each @var{name} refers to a shell
+function.
+The @option{-a} option means each @var{name} refers to an indexed
+array variable; the @option{-A} option means each @var{name} refers
+to an associative array variable.
+If both options are supplied, @option{-A} takes precedence.
+If no @var{name} arguments are given, or if the @option{-p}
+option is supplied, a list of all readonly names is printed.
+The other options may be used to restrict the output to a subset of
+the set of readonly names.
+The @option{-p} option causes output to be displayed in a format that
+may be reused as input.
+If a variable name is followed by =@var{value}, the value of
+the variable is set to @var{value}.
+The return status is zero unless an invalid option is supplied, one of
+the @var{name} arguments is not a valid shell variable or function name,
+or the @option{-f} option is supplied with a name that is not a shell function.
+
+@item return
+@btindex return
+@example
+return [@var{n}]
+@end example
+
+Cause a shell function to stop executing and return the value @var{n}
+to its caller.
+If @var{n} is not supplied, the return value is the exit status of the
+last command executed in the function.
+@code{return} may also be used to terminate execution of a script
+being executed with the @code{.} (@code{source}) builtin,
+returning either @var{n} or
+the exit status of the last command executed within the script as the exit
+status of the script.
+If @var{n} is supplied, the return value is its least significant
+8 bits.
+Any command associated with the @code{RETURN} trap is executed
+before execution resumes after the function or script.
+The return status is non-zero if @code{return} is supplied a non-numeric
+argument or is used outside a function
+and not during the execution of a script by @code{.} or @code{source}.
+
+@item shift
+@btindex shift
+@example
+shift [@var{n}]
+@end example
+
+Shift the positional parameters to the left by @var{n}.
+The positional parameters from @var{n}+1 @dots{} @code{$#} are
+renamed to @code{$1} @dots{} @code{$#}-@var{n}.
+Parameters represented by the numbers @code{$#} to @code{$#}-@var{n}+1
+are unset.
+@var{n} must be a non-negative number less than or equal to @code{$#}.
+If @var{n} is zero or greater than @code{$#}, the positional parameters
+are not changed.
+If @var{n} is not supplied, it is assumed to be 1.
+The return status is zero unless @var{n} is greater than @code{$#} or
+less than zero, non-zero otherwise.
+
+@item test[B
+@itemx [
+@btindex test
+@btindex [
+@example
+test @var{expr}
+@end example
+
+Evaluate a conditional expression @var{expr} and return a status of 0
+(true) or 1 (false).
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described below in
+@ref{Bash Conditional Expressions}.
+@code{test} does not accept any options, nor does it accept and ignore
+an argument of @option{--} as signifying the end of options.
+
+When the @code{[} form is used, the last argument to the command must
+be a @code{]}.
+
+Expressions may be combined using the following operators, listed in
+decreasing order of precedence.
+The evaluation depends on the number of arguments; see below.
+Operator precedence is used when there are five or more arguments.
+
+@table @code
+@item ! @var{expr}
+True if @var{expr} is false.
+
+@item ( @var{expr} )
+Returns the value of @var{expr}.
+This may be used to override the normal precedence of operators.
+
+@item @var{expr1} -a @var{expr2}
+True if both @var{expr1} and @var{expr2} are true.
+
+@item @var{expr1} -o @var{expr2}
+True if either @var{expr1} or @var{expr2} is true.
+@end table
+
+The @code{test} and @code{[} builtins evaluate conditional
+expressions using a set of rules based on the number of arguments.
+
+@table @asis
+@item 0 arguments
+The expression is false.
+
+@item 1 argument
+The expression is true if and only if the argument is not null.
+
+@item 2 arguments
+If the first argument is @samp{!}, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators
+(@pxref{Bash Conditional Expressions}), the expression
+is true if the unary test is true.
+If the first argument is not a valid unary operator, the expression is
+false.
+
+@item 3 arguments
+The following conditions are applied in the order listed.
+If the second argument is one of the binary conditional
+operators (@pxref{Bash Conditional Expressions}), the
+result of the expression is the result of the binary test using the
+first and third arguments as operands.
+The @samp{-a} and @samp{-o} operators are considered binary operators
+when there are three arguments.
+If the first argument is @samp{!}, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly @samp{(} and the third argument is
+exactly @samp{)}, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+
+@item 4 arguments
+If the first argument is @samp{!}, the result is the negation of
+the three-argument expression composed of the remaining arguments.
+Otherwise, the expression is parsed and evaluated according to 
+precedence using the rules listed above.
+
+@item 5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+@end table
+
+When used with @code{test} or @samp{[}, the @samp{<} and @samp{>}
+operators sort lexicographically using ASCII ordering.
+
+@item times
+@btindex times
+@example
+times
+@end example
+
+Print out the user and system times used by the shell and its children.
+The return status is zero.
+
+@item trap
+@btindex trap
+@example
+trap [-lp] [@var{arg}] [@var{sigspec} @dots{}]
+@end example
+
+The commands in @var{arg} are to be read and executed when the
+shell receives signal @var{sigspec}.  If @var{arg} is absent (and
+there is a single @var{sigspec}) or
+equal to @samp{-}, each specified signal's disposition is reset
+to the value it had when the shell was started.
+If @var{arg} is the null string, then the signal specified by
+each @var{sigspec} is ignored by the shell and commands it invokes.
+If @var{arg} is not present and @option{-p} has been supplied,
+the shell displays the trap commands associated with each @var{sigspec}.
+If no arguments are supplied, or
+only @option{-p} is given, @code{trap} prints the list of commands
+associated with each signal number in a form that may be reused as
+shell input.
+The @option{-l} option causes the shell to print a list of signal names
+and their corresponding numbers.
+Each @var{sigspec} is either a signal name or a signal number.
+Signal names are case insensitive and the @code{SIG} prefix is optional.
+
+If a @var{sigspec}
+is @code{0} or @code{EXIT}, @var{arg} is executed when the shell exits.
+If a @var{sigspec} is @code{DEBUG}, the command @var{arg} is executed
+before every simple command, @code{for} command, @code{case} command,
+@code{select} command, every arithmetic @code{for} command, and before
+the first command executes in a shell function.
+Refer to the description of the @code{extdebug} option to the
+@code{shopt} builtin (@pxref{The Shopt Builtin}) for details of its
+effect on the @code{DEBUG} trap.
+If a @var{sigspec} is @code{RETURN}, the command @var{arg} is executed
+each time a shell function or a script executed with the @code{.} or
+@code{source} builtins finishes executing.
+
+If a @var{sigspec} is @code{ERR}, the command @var{arg} 
+is executed whenever a simple command has a non-zero exit status,
+subject to the following conditions.
+The @code{ERR} trap is not executed if the failed command is part of the
+command list immediately following an @code{until} or @code{while} keyword,
+part of the test following the @code{if} or @code{elif} reserved words,
+part of a command executed in a @code{&&} or @code{||} list,
+or if the command's return
+status is being inverted using @code{!}.
+These are the same conditions obeyed by the @code{errexit} option.
+
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals that are not being ignored are reset to their original
+values in a subshell or subshell environment when one is created.
+
+The return status is zero unless a @var{sigspec} does not specify a
+valid signal.
+
+@item umask
+@btindex umask
+@example
+umask [-p] [-S] [@var{mode}]
+@end example
+
+Set the shell process's file creation mask to @var{mode}.  If
+@var{mode} begins with a digit, it is interpreted as an octal number;
+if not, it is interpreted as a symbolic mode mask similar
+to that accepted by the @code{chmod} command.  If @var{mode} is
+omitted, the current value of the mask is printed.  If the @option{-S}
+option is supplied without a @var{mode} argument, the mask is printed
+in a symbolic format.
+If the  @option{-p} option is supplied, and @var{mode}
+is omitted, the output is in a form that may be reused as input.
+The return status is zero if the mode is successfully changed or if
+no @var{mode} argument is supplied, and non-zero otherwise.
+
+Note that when the mode is interpreted as an octal number, each number
+of the umask is subtracted from @code{7}.  Thus, a umask of @code{022}
+results in permissions of @code{755}.
+
+@item unset
+@btindex unset
+@example
+unset [-fnv] [@var{name}]
+@end example
+
+Remove each variable or function @var{name}.
+If the @option{-v} option is given, each
+@var{name} refers to a shell variable and that variable is remvoved.
+If the @option{-f} option is given, the @var{name}s refer to shell
+functions, and the function definition is removed.
+If the @option{-n} option is supplied, and @var{name} is a variable with
+the @var{nameref} attribute, @var{name} will be unset rather than the
+variable it references.
+@option{-n} has no effect if the @option{-f} option is supplied.
+If no options are supplied, each @var{name} refers to a variable; if
+there is no variable by that name, any function with that name is
+unset.
+Readonly variables and functions may not be unset.
+The return status is zero unless a @var{name} is readonly.
+@end table
+
+@node Bash Builtins
+@section Bash Builtin Commands
+
+This section describes builtin commands which are unique to
+or have been extended in Bash.
+Some of these commands are specified in the @sc{posix} standard.
+
+@table @code
+
+@item alias
+@btindex alias
+@example
+alias [-p] [@var{name}[=@var{value}] @dots{}]
+@end example
+
+Without arguments or with the @option{-p} option, @code{alias} prints
+the list of aliases on the standard output in a form that allows
+them to be reused as input.
+If arguments are supplied, an alias is defined for each @var{name}
+whose @var{value} is given.  If no @var{value} is given, the name
+and value of the alias is printed.
+Aliases are described in @ref{Aliases}.
+
+@item bind
+@btindex bind
+@example
+bind [-m @var{keymap}] [-lpsvPSVX]
+bind [-m @var{keymap}] [-q @var{function}] [-u @var{function}] [-r @var{keyseq}]
+bind [-m @var{keymap}] -f @var{filename}
+bind [-m @var{keymap}] -x @var{keyseq:shell-command}
+bind [-m @var{keymap}] @var{keyseq:function-name}
+bind @var{readline-command}
+@end example
+
+Display current Readline (@pxref{Command Line Editing})
+key and function bindings,
+bind a key sequence to a Readline function or macro,
+or set a Readline variable.
+Each non-option argument is a command as it would appear in a
+Readline initialization file (@pxref{Readline Init File}),
+but each binding or command must be passed as a separate argument;  e.g.,
+@samp{"\C-x\C-r":re-read-init-file}.
+
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -m @var{keymap}
+Use @var{keymap} as the keymap to be affected by
+the subsequent bindings.  Acceptable @var{keymap}
+names are
+@code{emacs},
+@code{emacs-standard},
+@code{emacs-meta},
+@code{emacs-ctlx},
+@code{vi},
+@code{vi-move},
+@code{vi-command}, and
+@code{vi-insert}.
+@code{vi} is equivalent to @code{vi-command};
+@code{emacs} is equivalent to @code{emacs-standard}.
+
+@item -l
+List the names of all Readline functions.
+
+@item -p
+Display Readline function names and bindings in such a way that they
+can be used as input or in a Readline initialization file.
+
+@item -P
+List current Readline function names and bindings.
+
+@item -v
+Display Readline variable names and values in such a way that they
+can be used as input or in a Readline initialization file.
+
+@item -V
+List current Readline variable names and values.
+
+@item -s
+Display Readline key sequences bound to macros and the strings they output
+in such a way that they can be used as input or in a Readline
+initialization file.
+
+@item -S
+Display Readline key sequences bound to macros and the strings they output.
+
+@item -f @var{filename}
+Read key bindings from @var{filename}.
+
+@item -q @var{function}
+Query about which keys invoke the named @var{function}.
+
+@item -u @var{function}
+Unbind all keys bound to the named @var{function}.
+
+@item -r @var{keyseq}
+Remove any current binding for @var{keyseq}.
+
+@item -x @var{keyseq:shell-command}
+Cause @var{shell-command} to be executed whenever @var{keyseq} is
+entered.
+When @var{shell-command} is executed, the shell sets the
+@code{READLINE_LINE} variable to the contents of the Readline line
+buffer and the @code{READLINE_POINT} variable to the current location
+of the insertion point.
+If the executed command changes the value of @code{READLINE_LINE} or
+@code{READLINE_POINT}, those new values will be reflected in the
+editing state.
+
+@item -X
+List all key sequences bound to shell commands and the associated commands
+in a format that can be reused as input.
+@end table
+
+@noindent
+The return status is zero unless an invalid option is supplied or an
+error occurs.
+
+@item builtin
+@btindex builtin
+@example
+builtin [@var{shell-builtin} [@var{args}]]
+@end example
+
+Run a shell builtin, passing it @var{args}, and return its exit status.
+This is useful when defining a shell function with the same
+name as a shell builtin, retaining the functionality of the builtin within
+the function.
+The return status is non-zero if @var{shell-builtin} is not a shell
+builtin command.
+
+@item caller
+@btindex caller
+@example
+caller [@var{expr}]
+@end example
+
+Returns the context of any active subroutine call (a shell function or
+a script executed with the @code{.} or @code{source} builtins).
+
+Without @var{expr}, @code{caller} displays the line number and source
+filename of the current subroutine call.
+If a non-negative integer is supplied as @var{expr}, @code{caller} 
+displays the line number, subroutine name, and source file corresponding
+to that position in the current execution call stack.  This extra
+information may be used, for example, to print a stack trace.  The
+current frame is frame 0.
+
+The return value is 0 unless the shell is not executing a subroutine
+call or @var{expr} does not correspond to a valid position in the
+call stack.
+
+@item command
+@btindex command
+@example
+command [-pVv] @var{command} [@var{arguments} @dots{}]
+@end example
+
+Runs @var{command} with @var{arguments} ignoring any shell function
+named @var{command}.
+Only shell builtin commands or commands found by searching the
+@env{PATH} are executed.
+If there is a shell function named @code{ls}, running @samp{command ls}
+within the function will execute the external command @code{ls}
+instead of calling the function recursively.
+The @option{-p} option means to use a default value for @env{PATH}
+that is guaranteed to find all of the standard utilities.
+The return status in this case is 127 if @var{command} cannot be
+found or an error occurred, and the exit status of @var{command}
+otherwise.
+
+If either the @option{-V} or @option{-v} option is supplied, a
+description of @var{command} is printed.  The @option{-v} option
+causes a single word indicating the command or file name used to
+invoke @var{command} to be displayed; the @option{-V} option produces
+a more verbose description.  In this case, the return status is
+zero if @var{command} is found, and non-zero if not.
+
+@item declare
+@btindex declare
+@example
+declare [-aAfFgilnrtux] [-p] [@var{name}[=@var{value}] @dots{}]
+@end example
+
+Declare variables and give them attributes.  If no @var{name}s
+are given, then display the values of variables instead. 
+
+The @option{-p} option will display the attributes and values of each
+@var{name}.
+When @option{-p} is used with @var{name} arguments, additional options
+are ignored.
+
+When @option{-p} is supplied without @var{name} arguments, @code{declare}
+will display the attributes and values of all variables having the
+attributes specified by the additional options.
+If no other options are supplied with @option{-p}, @code{declare} will
+display the attributes and values of all shell variables.  The @option{-f}
+option will restrict the display to shell functions.
+
+The @option{-F} option inhibits the display of function definitions;
+only the function name and attributes are printed.
+If the @code{extdebug} shell option is enabled using @code{shopt}
+(@pxref{The Shopt Builtin}), the source file name and line number where
+the function is defined are displayed as well.
+@option{-F} implies @option{-f}.
+
+The @option{-g} option forces variables to be created or modified at
+the global scope, even when @code{declare} is executed in a shell function.
+It is ignored in all other cases.
+
+The following options can be used to restrict output to variables with
+the specified attributes or to give variables attributes:
+
+@table @code
+@item -a
+Each @var{name} is an indexed array variable (@pxref{Arrays}).
+
+@item -A
+Each @var{name} is an associative array variable (@pxref{Arrays}).
+
+@item -f
+Use function names only.
+
+@item -i
+The variable is to be treated as
+an integer; arithmetic evaluation (@pxref{Shell Arithmetic}) is
+performed when the variable is assigned a value.
+
+@item -l
+When the variable is assigned a value, all upper-case characters are
+converted to lower-case.
+The upper-case attribute is disabled.
+
+@item -n
+Give each @var{name} the @var{nameref} attribute, making
+it a name reference to another variable.
+That other variable is defined by the value of @var{name}.
+All references and assignments to @var{name}, except for changing the
+@option{-n} attribute itself, are performed on the variable referenced by
+@var{name}'s value.
+The @option{-n} attribute cannot be applied to array variables.
+
+@item -r
+Make @var{name}s readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+
+@item -t
+Give each @var{name} the @code{trace} attribute.
+Traced functions inherit the @code{DEBUG} and @code{RETURN} traps from
+the calling shell.
+The trace attribute has no special meaning for variables.
+
+@item -u
+When the variable is assigned a value, all lower-case characters are
+converted to upper-case.
+The lower-case attribute is disabled.
+
+@item -x
+Mark each @var{name} for export to subsequent commands via
+the environment.
+@end table
+
+Using @samp{+} instead of @samp{-} turns off the attribute instead,
+with the exceptions that @samp{+a}
+may not be used to destroy an array variable and @samp{+r} will not
+remove the readonly attribute.
+When used in a function, @code{declare} makes each @var{name} local,
+as with the @code{local} command, unless the @option{-g} option is used.
+If a variable name is followed by =@var{value}, the value of the variable
+is set to @var{value}.
+
+The return status is zero unless an invalid option is encountered,
+an attempt is made to define a function using @samp{-f foo=bar},
+an attempt is made to assign a value to a readonly variable,
+an attempt is made to assign a value to an array variable without
+using the compound assignment syntax (@pxref{Arrays}),
+one of the @var{names} is not a valid shell variable name,
+an attempt is made to turn off readonly status for a readonly variable,
+an attempt is made to turn off array status for an array variable,
+or an attempt is made to display a non-existent function with @option{-f}.
+
+@item echo
+@btindex echo
+@example
+echo [-neE] [@var{arg} @dots{}]
+@end example
+
+Output the @var{arg}s, separated by spaces, terminated with a
+newline.
+The return status is 0 unless a write error occurs.
+If @option{-n} is specified, the trailing newline is suppressed.
+If the @option{-e} option is given, interpretation of the following
+backslash-escaped characters is enabled.
+The @option{-E} option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The @code{xpg_echo} shell option may be used to
+dynamically determine whether or not @code{echo} expands these
+escape characters by default.
+@code{echo} does not interpret @option{--} to mean the end of options.
+
+@code{echo} interprets the following escape sequences:
+@table @code
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \c
+suppress further output
+@item \e
+@itemx \E
+escape
+@item \f
+form feed
+@item \n
+new line
+@item \r
+carriage return
+@item \t 
+horizontal tab
+@item \v
+vertical tab
+@item \\
+backslash
+@item \0@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(zero to three octal digits)
+@item \x@var{HH}
+the eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits)
+@item \u@var{HHHH}
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+@var{HHHH} (one to four hex digits)
+@item \U@var{HHHHHHHH}
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
+@var{HHHHHHHH} (one to eight hex digits)
+@end table
+
+@item enable
+@btindex enable
+@example
+enable [-a] [-dnps] [-f @var{filename}] [@var{name} @dots{}]
+@end example
+
+Enable and disable builtin shell commands.
+Disabling a builtin allows a disk command which has the same name
+as a shell builtin to be executed without specifying a full pathname,
+even though the shell normally searches for builtins before disk commands.
+If @option{-n} is used, the @var{name}s become disabled.  Otherwise
+@var{name}s are enabled.  For example, to use the @code{test} binary
+found via @env{$PATH} instead of the shell builtin version, type
+@samp{enable -n test}.
+
+If the @option{-p} option is supplied, or no @var{name} arguments appear,
+a list of shell builtins is printed.  With no other arguments, the list
+consists of all enabled shell builtins.
+The @option{-a} option means to list
+each builtin with an indication of whether or not it is enabled. 
+
+The @option{-f} option means to load the new builtin command @var{name}
+from shared object @var{filename}, on systems that support dynamic loading.
+The @option{-d} option will delete a builtin loaded with @option{-f}.
+
+If there are no options, a list of the shell builtins is displayed.
+The @option{-s} option restricts @code{enable} to the @sc{posix} special
+builtins.  If @option{-s} is used with @option{-f}, the new builtin becomes
+a special builtin (@pxref{Special Builtins}).
+
+The return status is zero unless a @var{name} is not a shell builtin
+or there is an error loading a new builtin from a shared object.
+
+@item help
+@btindex help
+@example
+help [-dms] [@var{pattern}]
+@end example
+
+Display helpful information about builtin commands.
+If @var{pattern} is specified, @code{help} gives detailed help
+on all commands matching @var{pattern}, otherwise a list of
+the builtins is printed.
+
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -d
+Display a short description of each @var{pattern}
+@item -m
+Display the description of each @var{pattern} in a manpage-like format
+@item -s
+Display only a short usage synopsis for each @var{pattern}
+@end table
+
+The return status is zero unless no command matches @var{pattern}.
+
+@item let
+@btindex let
+@example
+let @var{expression} [@var{expression} @dots{}]
+@end example
+
+The @code{let} builtin allows arithmetic to be performed on shell
+variables.  Each @var{expression} is evaluated according to the
+rules given below in @ref{Shell Arithmetic}.  If the
+last @var{expression} evaluates to 0, @code{let} returns 1;
+otherwise 0 is returned.
+
+@item local
+@btindex local
+@example
+local [@var{option}] @var{name}[=@var{value}] @dots{}
+@end example
+
+For each argument, a local variable named @var{name} is created,
+and assigned @var{value}.
+The @var{option} can be any of the options accepted by @code{declare}.
+@code{local} can only be used within a function; it makes the variable
+@var{name} have a visible scope restricted to that function and its
+children.  The return status is zero unless @code{local} is used outside
+a function, an invalid @var{name} is supplied, or @var{name} is a
+readonly variable.
+
+@item logout
+@btindex logout
+@example
+logout [@var{n}]
+@end example
+
+Exit a login shell, returning a status of @var{n} to the shell's
+parent.
+
+@item mapfile
+@btindex mapfile
+@example
+mapfile [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}]
+    [-C @var{callback}] [-c @var{quantum}] [@var{array}]
+@end example
+
+Read lines from the standard input into the indexed array variable @var{array},
+or from file descriptor @var{fd}
+if the @option{-u} option is supplied.
+The variable @code{MAPFILE} is the default @var{array}.
+Options, if supplied, have the following meanings:
+
+@table @code
+
+@item -n
+Copy at most @var{count} lines.  If @var{count} is 0, all lines are copied.
+@item -O
+Begin assigning to @var{array} at index @var{origin}.
+The default index is 0.
+@item -s
+Discard the first @var{count} lines read.
+@item -t
+Remove a trailing newline from each line read.
+@item -u
+Read lines from file descriptor @var{fd} instead of the standard input.
+@item -C
+Evaluate @var{callback} each time @var{quantum}P lines are read.
+The @option{-c} option specifies @var{quantum}.
+@item -c
+Specify the number of lines read between each call to @var{callback}.
+@end table
+
+If @option{-C} is specified without @option{-c}, 
+the default quantum is 5000.
+When @var{callback}  is evaluated, it is supplied the index of the next
+array element to be assigned and the line to be assigned to that element
+as additional arguments.
+@var{callback} is evaluated after the line is read but before the 
+array element is assigned.
+
+If not supplied with an explicit origin, @code{mapfile} will clear @var{array}
+before assigning to it.
+
+@code{mapfile} returns successfully unless an invalid option or option
+argument is supplied, @var{array} is invalid or unassignable, or @var{array}
+is not an indexed array.
+
+@item printf
+@btindex printf
+@example
+printf [-v @var{var}] @var{format} [@var{arguments}]
+@end example
+
+Write the formatted @var{arguments} to the standard output under the
+control of the @var{format}.
+The @option{-v} option causes the output to be assigned to the variable
+@var{var} rather than being printed to the standard output.
+
+The @var{format} is a character string which contains three types of objects:
+plain characters, which are simply copied to standard output, character
+escape sequences, which are converted and copied to the standard output, and
+format specifications, each of which causes printing of the next successive
+@var{argument}.
+In addition to the standard @code{printf(1)} formats, @code{printf}
+interprets the following extensions:
+
+@table @code
+@item %b
+Causes @code{printf} to expand backslash escape sequences in the
+corresponding @var{argument},
+except that @samp{\c} terminates output, backslashes in
+@samp{\'}, @samp{\"}, and @samp{\?} are not removed, and octal escapes
+beginning with @samp{\0} may contain up to four digits.
+@item %q
+Causes @code{printf} to output the
+corresponding @var{argument} in a format that can be reused as shell input.
+@item %(@var{datefmt})T
+Causes @code{printf} to output the date-time string resulting from using
+@var{datefmt} as a format string for @code{strftime}(3).  The corresponding
+@var{argument} is an integer representing the number of seconds since the
+epoch.  Two special argument values may be used: -1 represents the current
+time, and -2 represents the time the shell was invoked.
+@end table
+
+@noindent
+Arguments to non-string format specifiers are treated as C language constants,
+except that a leading plus or minus sign is allowed, and if the leading
+character is a single or double quote, the value is the ASCII value of
+the following character.
+
+The @var{format} is reused as necessary to consume all of the @var{arguments}.
+If the @var{format} requires more @var{arguments} than are supplied, the
+extra format specifications behave as if a zero value or null string, as
+appropriate, had been supplied.  The return value is zero on success,
+non-zero on failure.
+
+@item read
+@btindex read
+@example
+read [-ers] [-a @var{aname}] [-d @var{delim}] [-i @var{text}] [-n @var{nchars}]
+    [-N @var{nchars}] [-p @var{prompt}] [-t @var{timeout}] [-u @var{fd}] [@var{name} @dots{}]
+@end example
+
+One line is read from the standard input, or from the file descriptor
+@var{fd} supplied as an argument to the @option{-u} option, and the first word
+is assigned to the first @var{name}, the second word to the second @var{name},
+and so on, with leftover words and their intervening separators assigned
+to the last @var{name}.
+If there are fewer words read from the input stream than names,
+the remaining names are assigned empty values.
+The characters in the value of the @env{IFS} variable
+are used to split the line into words.
+The backslash character @samp{\} may be used to remove any special
+meaning for the next character read and for line continuation.
+If no names are supplied, the line read is assigned to the
+variable @env{REPLY}.
+The return code is zero, unless end-of-file is encountered, @code{read}
+times out (in which case the return code is greater than 128),
+a variable assignment error (such as assigning to a readonly variable) occurs,
+or an invalid file descriptor is supplied as the argument to @option{-u}.
+
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -a @var{aname}
+The words are assigned to sequential indices of the array variable
+@var{aname}, starting at 0.
+All elements are removed from @var{aname} before the assignment.
+Other @var{name} arguments are ignored.
+
+@item -d @var{delim}
+The first character of @var{delim} is used to terminate the input line,
+rather than newline.
+
+@item -e
+Readline (@pxref{Command Line Editing}) is used to obtain the line.
+Readline uses the current (or default, if line editing was not previously
+active) editing settings.
+
+@item -i @var{text}
+If Readline is being used to read the line, @var{text} is placed into
+the editing buffer before editing begins.
+
+@item -n @var{nchars}
+@code{read} returns after reading @var{nchars} characters rather than
+waiting for a complete line of input, but honor a delimiter if fewer
+than @var{nchars} characters are read before the delimiter.
+
+@item -N @var{nchars}
+@code{read} returns after reading exactly @var{nchars} characters rather
+than waiting for a complete line of input, unless EOF is encountered or
+@code{read} times out.
+Delimiter characters encountered in the input are
+not treated specially and do not cause @code{read} to return until
+@var{nchars} characters are read.
+
+@item -p @var{prompt}
+Display @var{prompt}, without a trailing newline, before attempting
+to read any input.
+The prompt is displayed only if input is coming from a terminal.
+
+@item -r
+If this option is given, backslash does not act as an escape character.
+The backslash is considered to be part of the line.
+In particular, a backslash-newline pair may not be used as a line
+continuation.
+
+@item -s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+
+@item -t @var{timeout}
+Cause @code{read} to time out and return failure if a complete line of
+input is not read within @var{timeout} seconds.
+@var{timeout}  may be a decimal number with a fractional portion following
+the decimal point.
+This option is only effective if @code{read} is reading input from a
+terminal, pipe, or other special file; it has no effect when reading
+from regular files.
+If @var{timeout} is 0, @code{read} returns immediately, without trying to
+read and data.  The exit status is 0 if input is available on
+the specified file descriptor, non-zero otherwise.
+The exit status is greater than 128 if the timeout is exceeded.
+
+@item -u @var{fd}
+Read input from file descriptor @var{fd}.
+@end table
+
+@item readarray
+@btindex readarray
+@example
+readarray [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}]
+    [-C @var{callback}] [-c @var{quantum}] [@var{array}]
+@end example
+
+Read lines from the standard input into the indexed array variable @var{array},
+or from file descriptor @var{fd}
+if the @option{-u} option is supplied.
+
+A synonym for @code{mapfile}.
+
+@item source
+@btindex source
+@example
+source @var{filename}
+@end example
+
+A synonym for @code{.} (@pxref{Bourne Shell Builtins}).
+
+@item type
+@btindex type
+@example
+type [-afptP] [@var{name} @dots{}]
+@end example
+
+For each @var{name}, indicate how it would be interpreted if used as a
+command name.
+
+If the @option{-t} option is used, @code{type} prints a single word
+which is one of @samp{alias}, @samp{function}, @samp{builtin},
+@samp{file} or @samp{keyword},
+if @var{name} is an alias, shell function, shell builtin,
+disk file, or shell reserved word, respectively.
+If the @var{name} is not found, then nothing is printed, and
+@code{type} returns a failure status.
+
+If the @option{-p} option is used, @code{type} either returns the name
+of the disk file that would be executed, or nothing if @option{-t}
+would not return @samp{file}.
+
+The @option{-P} option forces a path search for each @var{name}, even if
+@option{-t} would not return @samp{file}.
+
+If a command is hashed, @option{-p} and @option{-P} print the hashed value,
+which is not necessarily the file that appears first in @code{$PATH}.
+
+If the @option{-a} option is used, @code{type} returns all of the places
+that contain an executable named @var{file}.
+This includes aliases and functions, if and only if the @option{-p} option
+is not also used.
+
+If the @option{-f} option is used, @code{type} does not attempt to find
+shell functions, as with the @code{command} builtin.
+
+The return status is zero if all of the @var{names} are found, non-zero
+if any are not found.
+
+@item typeset
+@btindex typeset
+@example
+typeset [-afFgrxilnrtux] [-p] [@var{name}[=@var{value}] @dots{}]
+@end example
+
+The @code{typeset} command is supplied for compatibility with the Korn
+shell.
+It is a synonym for the @code{declare} builtin command.
+
+@item ulimit
+@btindex ulimit
+@example
+ulimit [-abcdefilmnpqrstuvxHST] [@var{limit}]
+@end example
+
+@code{ulimit} provides control over the resources available to processes
+started by the shell, on systems that allow such control.  If an
+option is given, it is interpreted as follows:
+
+@table @code
+@item -S
+Change and report the soft limit associated with a resource.
+
+@item -H
+Change and report the hard limit associated with a resource.
+
+@item -a
+All current limits are reported.
+
+@item -b
+The maximum socket buffer size.
+
+@item -c
+The maximum size of core files created.
+
+@item -d
+The maximum size of a process's data segment.
+
+@item -e
+The maximum scheduling priority ("nice").
+
+@item -f
+The maximum size of files written by the shell and its children.
+
+@item -i
+The maximum number of pending signals.
+
+@item -l
+The maximum size that may be locked into memory.
+
+@item -m
+The maximum resident set size (many systems do not honor this limit).
+
+@item -n
+The maximum number of open file descriptors (most systems do not
+allow this value to be set).
+
+@item -p
+The pipe buffer size.
+
+@item -q
+The maximum number of bytes in POSIX message queues.
+
+@item -r
+The maximum real-time scheduling priority.
+
+@item -s
+The maximum stack size.
+
+@item -t
+The maximum amount of cpu time in seconds.
+
+@item -u
+The maximum number of processes available to a single user.
+
+@item -v
+The maximum amount of virtual memory available to the shell, and, on
+some systems, to its children.
+
+@item -x
+The maximum number of file locks.
+
+@item -T
+The maximum number of threads.
+@end table
+
+If @var{limit} is given, and the @option{-a} option is not used,
+@var{limit} is the new value of the specified resource.
+The special @var{limit} values @code{hard}, @code{soft}, and
+@code{unlimited} stand for the current hard limit, the current soft limit,
+and no limit, respectively.
+A hard limit cannot be increased by a non-root user once it is set;
+a soft limit may be increased up to the value of the hard limit.
+Otherwise, the current value of the soft limit for the specified resource
+is printed, unless the @option{-H} option is supplied.
+When setting new limits, if neither @option{-H} nor @option{-S} is supplied,
+both the hard and soft limits are set.
+If no option is given, then @option{-f} is assumed.  Values are in 1024-byte
+increments, except for @option{-t}, which is in seconds; @option{-p},
+which is in units of 512-byte blocks; and @option{-T}, @option{-b},
+@option{-n} and @option{-u}, which are unscaled values.
+
+The return status is zero unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+
+@item unalias
+@btindex unalias
+@example
+unalias [-a] [@var{name} @dots{} ]
+@end example
+
+Remove each @var{name} from the list of aliases.  If @option{-a} is
+supplied, all aliases are removed.
+Aliases are described in @ref{Aliases}.
+@end table
+
+@node Modifying Shell Behavior
+@section Modifying Shell Behavior
+@menu
+* The Set Builtin::            Change the values of shell attributes and
+                               positional parameters.
+* The Shopt Builtin::          Modify shell optional behavior.
+@end menu
+
+@node The Set Builtin
+@subsection The Set Builtin
+
+This builtin is so complicated that it deserves its own section.  @code{set}
+allows you to change the values of shell options and set the positional
+parameters, or to display the names and values of shell variables.
+
+@table @code
+@item set
+@btindex set
+@example
+set [--abefhkmnptuvxBCEHPT] [-o @var{option-name}] [@var{argument} @dots{}]
+set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [@var{argument} @dots{}]
+@end example
+
+If no options or arguments are supplied, @code{set} displays the names
+and values of all shell variables and functions, sorted according to the
+current locale, in a format that may be reused as input
+for setting or resetting the currently-set variables.
+Read-only variables cannot be reset.
+In @sc{posix} mode, only shell variables are listed.
+
+When options are supplied, they set or unset shell attributes.
+Options, if specified, have the following meanings:
+
+@table @code
+@item -a
+Mark variables and function which are modified or created for export
+to the environment of subsequent commands.
+
+@item -b
+Cause the status of terminated background jobs to be reported
+immediately, rather than before printing the next primary prompt.
+
+@item -e
+Exit immediately if
+a pipeline (@pxref{Pipelines}), which may consist of a single simple command
+(@pxref{Simple Commands}),
+a list (@pxref{Lists}),
+or a compound command (@pxref{Compound Commands})
+returns a non-zero status.
+The shell does not exit if the command that fails is part of the
+command list immediately following a @code{while} or @code{until} keyword,
+part of the test in an @code{if} statement,
+part of any command executed in a @code{&&} or @code{||} list except
+the command following the final @code{&&} or @code{||},
+any command in a pipeline but the last,
+or if the command's return status is being inverted with @code{!}.
+If a compound command other than a subshell
+returns a non-zero status because a command failed
+while @option{-e} was being ignored, the shell does not exit.
+A trap on @code{ERR}, if set, is executed before the shell exits.
+
+This option applies to the shell environment and each subshell environment
+separately (@pxref{Command Execution Environment}), and may cause
+subshells to exit before executing all the commands in the subshell.
+
+@item -f
+Disable filename expansion (globbing).
+
+@item -h
+Locate and remember (hash) commands as they are looked up for execution.
+This option is enabled by default.
+
+@item -k
+All arguments in the form of assignment statements are placed
+in the environment for a command, not just those that precede
+the command name.
+
+@item -m
+Job control is enabled (@pxref{Job Control}).
+All processes run in a separate process group.
+When a background job completes, the shell prints a line
+containing its exit status.
+
+@item -n
+Read commands but do not execute them; this may be used to check a
+script for syntax errors.
+This option is ignored by interactive shells.
+
+@item -o @var{option-name}
+
+Set the option corresponding to @var{option-name}:
+
+@table @code
+@item allexport
+Same as @code{-a}.
+
+@item braceexpand
+Same as @code{-B}.
+
+@item emacs
+Use an @code{emacs}-style line editing interface (@pxref{Command Line Editing}).
+This also affects the editing interface used for @code{read -e}.
+
+@item errexit
+Same as @code{-e}.
+
+@item errtrace
+Same as @code{-E}.
+
+@item functrace
+Same as @code{-T}.
+
+@item hashall
+Same as @code{-h}.
+
+@item histexpand
+Same as @code{-H}.
+
+@item history
+Enable command history, as described in @ref{Bash History Facilities}.
+This option is on by default in interactive shells.
+
+@item ignoreeof
+An interactive shell will not exit upon reading EOF.
+
+@item keyword
+Same as @code{-k}.
+
+@item monitor
+Same as @code{-m}.
+
+@item noclobber
+Same as @code{-C}.
+
+@item noexec
+Same as @code{-n}.
+
+@item noglob
+Same as @code{-f}.
+
+@item nolog
+Currently ignored.
+
+@item notify
+Same as @code{-b}.
+
+@item nounset
+Same as @code{-u}.
+
+@item onecmd
+Same as @code{-t}.
+
+@item physical
+Same as @code{-P}.
+
+@item pipefail
+If set, the return value of a pipeline is the value of the last
+(rightmost) command to exit with a non-zero status, or zero if all
+commands in the pipeline exit successfully.
+This option is disabled by default.
+
+@item posix
+Change the behavior of Bash where the default operation differs
+from the @sc{posix} standard to match the standard
+(@pxref{Bash POSIX Mode}).
+This is intended to make Bash behave as a strict superset of that
+standard.
+
+@item privileged
+Same as @code{-p}.
+
+@item verbose
+Same as @code{-v}.
+
+@item vi
+Use a @code{vi}-style line editing interface.
+This also affects the editing interface used for @code{read -e}.
+
+@item xtrace
+Same as @code{-x}.
+@end table
+
+@item -p
+Turn on privileged mode.
+In this mode, the @env{$BASH_ENV} and @env{$ENV} files are not
+processed, shell functions are not inherited from the environment,
+and the @env{SHELLOPTS}, @env{BASHOPTS}, @env{CDPATH} and @env{GLOBIGNORE}
+variables, if they appear in the environment, are ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the @option{-p} option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the @option{-p} option is supplied at startup, the effective user id is
+not reset.
+Turning this option off causes the effective user
+and group ids to be set to the real user and group ids.
+
+@item -t
+Exit after reading and executing one command.
+
+@item -u
+Treat unset variables and parameters other than the special parameters
+@samp{@@} or @samp{*} as an error when performing parameter expansion.
+An error message will be written to the standard error, and a non-interactive
+shell will exit.
+
+@item -v
+Print shell input lines as they are read.
+
+@item -x
+Print a trace of simple commands, @code{for} commands, @code{case}
+commands, @code{select} commands, and arithmetic @code{for} commands
+and their arguments or associated word lists after they are
+expanded and before they are executed.  The value of the @env{PS4}
+variable is expanded and the resultant value is printed before
+the command and its expanded arguments.
+
+@item -B
+The shell will perform brace expansion (@pxref{Brace Expansion}).
+This option is on by default.
+
+@item -C
+Prevent output redirection using @samp{>}, @samp{>&}, and @samp{<>}
+from overwriting existing files.
+
+@item -E
+If set, any trap on @code{ERR} is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The @code{ERR} trap is normally not inherited in such cases.
+
+@item -H
+Enable @samp{!} style history substitution (@pxref{History Interaction}).
+This option is on by default for interactive shells.
+
+@item -P
+If set, do not resolve symbolic links when performing commands such as
+@code{cd} which change the current directory.  The physical directory
+is used instead.  By default, Bash follows
+the logical chain of directories when performing commands
+which change the current directory.
+
+For example, if @file{/usr/sys} is a symbolic link to @file{/usr/local/sys}
+then:
+@example
+$ cd /usr/sys; echo $PWD
+/usr/sys
+$ cd ..; pwd
+/usr
+@end example
+
+@noindent
+If @code{set -P} is on, then:
+@example
+$ cd /usr/sys; echo $PWD
+/usr/local/sys
+$ cd ..; pwd
+/usr/local
+@end example
+
+@item -T
+If set, any trap on @code{DEBUG} and @code{RETURN} are inherited by
+shell functions, command substitutions, and commands executed
+in a subshell environment.
+The @code{DEBUG} and @code{RETURN} traps are normally not inherited
+in such cases.
+
+@item --
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+@var{arguments}, even if some of them begin with a @samp{-}.
+
+@item -
+Signal the end of options, cause all remaining @var{arguments}
+to be assigned to the positional parameters.  The @option{-x}
+and @option{-v}  options are turned off.
+If there are no arguments, the positional parameters remain unchanged.
+@end table
+
+Using @samp{+} rather than @samp{-} causes these options to be
+turned off.  The options can also be used upon invocation of the
+shell.  The current set of options may be found in @code{$-}.
+
+The remaining N @var{arguments} are positional parameters and are
+assigned, in order, to @code{$1}, @code{$2}, @dots{}  @code{$N}.
+The special parameter @code{#} is set to N.
+
+The return status is always zero unless an invalid option is supplied.
+@end table
+
+@node The Shopt Builtin
+@subsection The Shopt Builtin
+
+This builtin allows you to change additional shell optional behavior.
+
+@table @code
+
+@item shopt
+@btindex shopt
+@example
+shopt [-pqsu] [-o] [@var{optname} @dots{}]
+@end example
+
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the @option{-p} option, a list of all settable
+options is displayed, with an indication of whether or not each is set.
+The @option{-p} option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+
+@table @code
+@item -s
+Enable (set) each @var{optname}.
+
+@item -u
+Disable (unset) each @var{optname}.
+
+@item -q
+Suppresses normal output; the return status
+indicates whether the @var{optname} is set or unset.
+If multiple @var{optname} arguments are given with @option{-q},
+the return status is zero if all @var{optnames} are enabled;
+non-zero otherwise.
+
+@item -o
+Restricts the values of
+@var{optname} to be those defined for the @option{-o} option to the
+@code{set} builtin (@pxref{The Set Builtin}).
+@end table
+
+If either @option{-s} or @option{-u}
+is used with no @var{optname} arguments, @code{shopt} shows only
+those options which are set or unset, respectively.
+
+Unless otherwise noted, the @code{shopt} options are disabled (off)
+by default.
+
+The return status when listing options is zero if all @var{optnames}
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an @var{optname} is not a valid shell
+option.
+
+The list of @code{shopt} options is:
+@table @code
+
+@item autocd
+If set, a command name that is the name of a directory is executed as if
+it were the argument to the @code{cd} command.
+This option is only used by interactive shells.
+
+@item cdable_vars
+If this is set, an argument to the @code{cd} builtin command that
+is not a directory is assumed to be the name of a variable whose
+value is the directory to change to.
+
+@item cdspell
+If set, minor errors in the spelling of a directory component in a
+@code{cd} command will be corrected.
+The errors checked for are transposed characters,
+a missing character, and a character too many.
+If a correction is found, the corrected path is printed,
+and the command proceeds.
+This option is only used by interactive shells.
+
+@item checkhash
+If this is set, Bash checks that a command found in the hash
+table exists before trying to execute it.  If a hashed command no
+longer exists, a normal path search is performed.
+
+@item checkjobs
+If set, Bash lists the status of any stopped and running jobs before
+exiting an interactive shell.  If any jobs are running, this causes
+the exit to be deferred until a second exit is attempted without an
+intervening command (@pxref{Job Control}).
+The shell always postpones exiting if any jobs are stopped.
+
+@item checkwinsize
+If set, Bash checks the window size after each command
+ and, if necessary, updates the values of    
+@env{LINES} and @env{COLUMNS}.
+
+@item cmdhist
+If set, Bash
+attempts to save all lines of a multiple-line
+command in the same history entry.  This allows
+easy re-editing of multi-line commands.
+
+@item compat31
+If set, Bash
+changes its behavior to that of version 3.1 with respect to quoted
+arguments to the conditional command's @samp{=~} operator
+and with respect to locale-specific
+string comparison when using the @samp{[[}
+conditional command's @samp{<} and @samp{>} operators.
+Bash versions prior to bash-4.1 use ASCII collation and strcmp(3);
+bash-4.1 and later use the current locale's collation sequence and strcoll(3).
+
+@item compat32
+If set, Bash
+changes its behavior to that of version 3.2 with respect to locale-specific
+string comparison when using the @samp{[[}
+conditional command's @samp{<} and @samp{>} operators (see previous item).
+
+@item compat40
+If set, Bash
+changes its behavior to that of version 4.0 with respect to locale-specific
+string comparison when using the @samp{[[}
+conditional command's @samp{<} and @samp{>} operators (see description
+of @code{compat31})
+and the effect of interrupting a command list.
+Bash versions 4.0 and later interrupt the list as if the shell received the
+interrupt; previous versions continue with the next command in the list.
+
+@item compat41
+If set, Bash, when in posix mode, treats a single quote in a double-quoted
+parameter expansion as a special character.  The single quotes must match
+(an even number) and the characters between the single quotes are considered
+quoted.  This is the behavior of @sc{posix} mode through version 4.1.
+The default Bash behavior remains as in previous versions.
+
+@item complete_fullquote
+If set, Bash
+quotes all shell metacharacters in filenames and directory names when
+performing completion.
+If not set, Bash
+removes metacharacters such as the dollar sign from the set of
+characters that will be quoted in completed filenames
+when these metacharacters appear in shell variable references in words to be
+completed.
+This means that dollar signs in variable names that expand to directories
+will not be quoted;
+however, any dollar signs appearing in filenames will not be quoted, either.
+This is active only when bash is using backslashes to quote completed
+filenames.
+This variable is set by default, which is the default Bash behavior in
+versions through 4.2.
+
+@item direxpand
+If set, Bash
+replaces directory names with the results of word expansion when performing
+filename completion.  This changes the contents of the readline editing
+buffer.
+If not set, Bash attempts to preserve what the user typed.
+
+@item dirspell
+If set, Bash
+attempts spelling correction on directory names during word completion 
+if the directory name initially supplied does not exist.
+
+@item dotglob
+If set, Bash includes filenames beginning with a `.' in
+the results of filename expansion.
+
+@item execfail
+If this is set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the @code{exec}
+builtin command.  An interactive shell does not exit if @code{exec}
+fails.
+
+@item expand_aliases
+If set, aliases are expanded as described below under Aliases,
+@ref{Aliases}.
+This option is enabled by default for interactive shells.
+
+@item extdebug
+If set, behavior intended for use by debuggers is enabled:
+
+@enumerate
+@item
+The @option{-F} option to the @code{declare} builtin (@pxref{Bash Builtins})
+displays the source file name and line number corresponding to each function
+name supplied as an argument.
+
+@item
+If the command run by the @code{DEBUG} trap returns a non-zero value, the
+next command is skipped and not executed.
+
+@item
+If the command run by the @code{DEBUG} trap returns a value of 2, and the
+shell is executing in a subroutine (a shell function or a shell script
+executed by the @code{.} or @code{source} builtins), a call to
+@code{return} is simulated.
+
+@item
+@code{BASH_ARGC} and @code{BASH_ARGV} are updated as described in their
+descriptions (@pxref{Bash Variables}).
+
+@item
+Function tracing is enabled:  command substitution, shell functions, and
+subshells invoked with @code{( @var{command} )} inherit the
+@code{DEBUG} and @code{RETURN} traps.
+
+@item
+Error tracing is enabled:  command substitution, shell functions, and
+subshells invoked with @code{( @var{command} )} inherit the
+@code{ERR} trap.
+@end enumerate
+
+@item extglob
+If set, the extended pattern matching features described above
+(@pxref{Pattern Matching}) are enabled.
+
+@item extquote
+If set, @code{$'@var{string}'} and @code{$"@var{string}"} quoting is  
+performed within @code{$@{@var{parameter}@}} expansions                     
+enclosed in double quotes.  This option is enabled by default. 
+
+@item failglob
+If set, patterns which fail to match filenames during filename expansion
+result in an expansion error.
+
+@item force_fignore
+If set, the suffixes specified by the @env{FIGNORE} shell variable
+cause words to be ignored when performing word completion even if
+the ignored words are the only possible completions.
+@xref{Bash Variables}, for a description of @env{FIGNORE}.
+This option is enabled by default.
+
+@item globasciiranges
+If set, range expressions used in pattern matching (@pxref{Pattern Matching})
+behave as if in the traditional C locale when performing
+comparisons.  That is, the current locale's collating sequence
+is not taken into account, so
+@samp{b} will not collate between @samp{A} and @samp{B},
+and upper-case and lower-case ASCII characters will collate together.   
+
+@item globstar
+If set, the pattern @samp{**} used in a filename expansion context will
+match all files and zero or more directories and subdirectories.
+If the pattern is followed by a @samp{/}, only directories and
+subdirectories match.
+
+@item gnu_errfmt
+If set, shell error messages are written in the standard @sc{gnu} error
+message format.
+
+@item histappend
+If set, the history list is appended to the file named by the value
+of the @env{HISTFILE}
+variable when the shell exits, rather than overwriting the file.
+
+@item histreedit
+If set, and Readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+
+@item histverify
+If set, and Readline
+is being used, the results of history substitution are not immediately
+passed to the shell parser.  Instead, the resulting line is loaded into
+the Readline editing buffer, allowing further modification.
+
+@item hostcomplete
+If set, and Readline is being used, Bash will attempt to perform
+hostname completion when a word containing a @samp{@@} is being
+completed (@pxref{Commands For Completion}).  This option is enabled
+by default.
+
+@item huponexit
+If set, Bash will send @code{SIGHUP} to all jobs when an interactive
+login shell exits (@pxref{Signals}).
+
+@item interactive_comments
+Allow a word beginning with @samp{#}
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell.
+This option is enabled by default.
+
+@item lastpipe
+If set, and job control is not active, the shell runs the last command of
+a pipeline not executed in the background in the current shell environment.
+
+@item lithist
+If enabled, and the @code{cmdhist}
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+
+@item login_shell
+The shell sets this option if it is started as a login shell
+(@pxref{Invoking Bash}).
+The value may not be changed.
+
+@item mailwarn
+If set, and a file that Bash is checking for mail has been  
+accessed since the last time it was checked, the message
+@code{"The mail in @var{mailfile} has been read"} is displayed.
+
+@item no_empty_cmd_completion
+If set, and Readline is being used, Bash will not attempt to search
+the @env{PATH} for possible completions when completion is attempted
+on an empty line.
+
+@item nocaseglob
+If set, Bash matches filenames in a case-insensitive fashion when
+performing filename expansion.
+
+@item nocasematch
+If set, Bash matches patterns in a case-insensitive fashion when
+performing matching while executing @code{case} or @code{[[}
+conditional commands.
+
+@item nullglob
+If set, Bash allows filename patterns which match no
+files to expand to a null string, rather than themselves.
+
+@item progcomp
+If set, the programmable completion facilities
+(@pxref{Programmable Completion}) are enabled.
+This option is enabled by default.
+
+@item promptvars
+If set, prompt strings undergo
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal after being expanded
+as described below (@pxref{Controlling the Prompt}).
+This option is enabled by default.
+
+@item restricted_shell
+The shell sets this option if it is started in restricted mode
+(@pxref{The Restricted Shell}).
+The value may not be changed.
+This is not reset when the startup files are executed, allowing
+the startup files to discover whether or not a shell is restricted.
+
+@item shift_verbose
+If this is set, the @code{shift}
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+
+@item sourcepath
+If set, the @code{source} builtin uses the value of @env{PATH}
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+
+@item xpg_echo
+If set, the @code{echo} builtin expands backslash-escape sequences
+by default.
+
+@end table
+
+@noindent
+The return status when listing options is zero if all @var{optnames}
+are enabled, non-zero otherwise.
+When setting or unsetting options, the return status is zero unless an
+@var{optname} is not a valid shell option.
+@end table
+
+@node Special Builtins
+@section Special Builtins
+@cindex special builtin
+
+For historical reasons, the @sc{posix} standard has classified
+several builtin commands as @emph{special}.
+When Bash is executing in @sc{posix} mode, the special builtins
+differ from other builtin commands in three respects:
+
+@enumerate
+@item
+Special builtins are found before shell functions during command lookup.
+
+@item
+If a special builtin returns an error status, a non-interactive shell exits.
+
+@item
+Assignment statements preceding the command stay in effect in the shell
+environment after the command completes.
+@end enumerate
+
+When Bash is not executing in @sc{posix} mode, these builtins behave no
+differently than the rest of the Bash builtin commands.
+The Bash @sc{posix} mode is described in @ref{Bash POSIX Mode}. 
+
+These are the @sc{posix} special builtins:
+@example
+@w{break : . continue eval exec exit export readonly return set}
+@w{shift trap unset}
+@end example
+
+@node Shell Variables
+@chapter Shell Variables
+
+@menu
+* Bourne Shell Variables::     Variables which Bash uses in the same way
+                               as the Bourne Shell.
+* Bash Variables::             List of variables that exist in Bash.
+@end menu
+
+This chapter describes the shell variables that Bash uses.
+Bash automatically assigns default values to a number of variables.
+
+@node Bourne Shell Variables
+@section Bourne Shell Variables
+
+Bash uses certain shell variables in the same way as the Bourne shell.
+In some cases, Bash assigns a default value to the variable.
+
+@vtable @code
+
+@item CDPATH
+A colon-separated list of directories used as a search path for
+the @code{cd} builtin command.
+
+@item HOME
+The current user's home directory; the default for the @code{cd} builtin
+command.
+The value of this variable is also used by tilde expansion
+(@pxref{Tilde Expansion}).
+
+@item IFS
+A list of characters that separate fields; used when the shell splits
+words as part of expansion.
+
+@item MAIL
+If this parameter is set to a filename or directory name
+and the @env{MAILPATH} variable
+is not set, Bash informs the user of the arrival of mail in
+the specified file or Maildir-format directory.
+
+@item MAILPATH
+A colon-separated list of filenames which the shell periodically checks
+for new mail.
+Each list entry can specify the message that is printed when new mail
+arrives in the mail file by separating the filename from the message with
+a @samp{?}.
+When used in the text of the message, @code{$_} expands to the name of
+the current mail file.
+
+@item OPTARG
+The value of the last option argument processed by the @code{getopts} builtin.
+
+@item OPTIND
+The index of the last option argument processed by the @code{getopts} builtin.
+
+@item PATH
+A colon-separated list of directories in which the shell looks for
+commands.
+A zero-length (null) directory name in the value of @code{PATH} indicates the
+current directory.
+A null directory name may appear as two adjacent colons, or as an initial
+or trailing colon.
+
+
+@item PS1
+The primary prompt string.  The default value is @samp{\s-\v\$ }.
+@xref{Controlling the Prompt}, for the complete list of escape
+sequences that are expanded before @env{PS1} is displayed.
+
+@item PS2
+The secondary prompt string.  The default value is @samp{> }.
+
+@end vtable
+
+@node Bash Variables
+@section Bash Variables
+
+These variables are set or used by Bash, but other shells
+do not normally treat them specially.
+
+A few variables used by Bash are described in different chapters:
+variables for controlling the job control facilities
+(@pxref{Job Control Variables}).
+
+@vtable @code
+
+@item BASH
+The full pathname used to execute the current instance of Bash.
+
+@item BASHOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the @option{-s} option to the
+@code{shopt} builtin command (@pxref{The Shopt Builtin}).
+The options appearing in @env{BASHOPTS} are those reported
+as @samp{on} by @samp{shopt}.
+If this variable is in the environment when Bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.  This variable is readonly.
+
+@item BASHPID
+Expands to the process ID of the current Bash process.
+This differs from @code{$$} under certain circumstances, such as subshells
+that do not require Bash to be re-initialized.
+
+@item BASH_ALIASES
+An associative array variable whose members correspond to the internal
+list of aliases as maintained by the @code{alias} builtin.
+(@pxref{Bourne Shell Builtins}).
+Elements added to this array appear in the alias list; unsetting array
+elements cause aliases to be removed from the alias list.
+
+@item BASH_ARGC
+An array variable whose values are the number of parameters in each
+frame of the current bash execution call stack.  The number of
+parameters to the current subroutine (shell function or script executed
+with @code{.} or @code{source}) is at the top of the stack.  When a
+subroutine is executed, the number of parameters passed is pushed onto
+@code{BASH_ARGC}.
+The shell sets @code{BASH_ARGC} only when in extended debugging mode
+(see @ref{The Shopt Builtin}
+for a description of the @code{extdebug} option to the @code{shopt}
+builtin).
+
+@item BASH_ARGV
+An array variable containing all of the parameters in the current bash
+execution call stack.  The final parameter of the last subroutine call
+is at the top of the stack; the first parameter of the initial call is
+at the bottom.  When a subroutine is executed, the parameters supplied
+are pushed onto @code{BASH_ARGV}.
+The shell sets @code{BASH_ARGV} only when in extended debugging mode
+(see @ref{The Shopt Builtin}
+for a description of the @code{extdebug} option to the @code{shopt}
+builtin).
+
+@item BASH_CMDS
+An associative array variable whose members correspond to the internal
+hash table of commands as maintained by the @code{hash} builtin
+(@pxref{Bourne Shell Builtins}).
+Elements added to this array appear in the hash table; unsetting array
+elements cause commands to be removed from the hash table.
+
+@item BASH_COMMAND
+The command currently being executed or about to be executed, unless the
+shell is executing a command as the result of a trap,
+in which case it is the command executing at the time of the trap.
+
+@item BASH_ENV
+If this variable is set when Bash is invoked to execute a shell
+script, its value is expanded and used as the name of a startup file
+to read before executing the script.  @xref{Bash Startup Files}.
+
+@item BASH_EXECUTION_STRING
+The command argument to the @option{-c} invocation option.
+
+@item BASH_LINENO
+An array variable whose members are the line numbers in source files
+where each corresponding member of @var{FUNCNAME} was invoked.
+@code{$@{BASH_LINENO[$i]@}} is the line number in the source file
+(@code{$@{BASH_SOURCE[$i+1]@}}) where
+@code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if
+referenced within another shell function). 
+Use @code{LINENO} to obtain the current line number.
+
+@item BASH_REMATCH
+An array variable whose members are assigned by the @samp{=~} binary
+operator to the @code{[[} conditional command
+(@pxref{Conditional Constructs}).
+The element with index 0 is the portion of the string
+matching the entire regular expression.
+The element with index @var{n} is the portion of the
+string matching the @var{n}th parenthesized subexpression.
+This variable is read-only.
+
+@item BASH_SOURCE
+An array variable whose members are the source filenames where the
+corresponding shell function names in the @code{FUNCNAME} array
+variable are defined.
+The shell function @code{$@{FUNCNAME[$i]@}} is defined in the file
+@code{$@{BASH_SOURCE[$i]@}} and called from @code{$@{BASH_SOURCE[$i+1]@}}
+
+@item BASH_SUBSHELL
+Incremented by one within each subshell or subshell environment when
+the shell begins executing in that environment.
+The initial value is 0.
+
+@item BASH_VERSINFO
+A readonly array variable (@pxref{Arrays})
+whose members hold version information for this instance of Bash.
+The values assigned to the array members are as follows:
+
+@table @code
+
+@item BASH_VERSINFO[0]
+The major version number (the @var{release}).
+
+@item BASH_VERSINFO[1]
+The minor version number (the @var{version}).
+
+@item BASH_VERSINFO[2]
+The patch level.
+
+@item BASH_VERSINFO[3]
+The build version.
+
+@item BASH_VERSINFO[4]
+The release status (e.g., @var{beta1}).
+
+@item BASH_VERSINFO[5]
+The value of @env{MACHTYPE}.
+@end table
+
+@item BASH_VERSION
+The version number of the current instance of Bash.
+
+@item BASH_XTRACEFD
+If set to an integer corresponding to a valid file descriptor, Bash
+will write the trace output generated when @samp{set -x}
+is enabled to that file descriptor.
+This allows tracing output to be separated from diagnostic and error
+messages.
+The file descriptor is closed when @code{BASH_XTRACEFD} is unset or assigned
+a new value.
+Unsetting @code{BASH_XTRACEFD} or assigning it the empty string causes the
+trace output to be sent to the standard error.
+Note that setting @code{BASH_XTRACEFD} to 2 (the standard error file
+descriptor) and then unsetting it will result in the standard error
+being closed.
+
+@item COLUMNS
+Used by the @code{select} command to determine the terminal width
+when printing selection lists.  Automatically set by an interactive shell
+upon receipt of a
+@code{SIGWINCH}.
+
+@item COMP_CWORD
+An index into @env{$@{COMP_WORDS@}} of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_POINT
+The index of the current cursor position relative to the beginning of
+the current command.
+If the current cursor position is at the end of the current command,
+the value of this variable is equal to @code{$@{#COMP_LINE@}}.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_TYPE
+Set to an integer value corresponding to the type of completion attempted
+that caused a completion function to be called:
+@var{TAB}, for normal completion,
+@samp{?}, for listing completions after successive tabs,
+@samp{!}, for listing alternatives on partial word completion,
+@samp{@@}, to list completions if the word is not unmodified,
+or
+@samp{%}, for menu completion.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_KEY
+The key (or final key of a key sequence) used to invoke the current
+completion function.
+
+@item COMP_WORDBREAKS
+The set of characters that the Readline library treats as word
+separators when performing word completion.
+If @code{COMP_WORDBREAKS} is unset, it loses its special properties,
+even if it is subsequently reset.
+
+@item COMP_WORDS
+An array variable consisting of the individual
+words in the current command line.
+The line is split into words as Readline would split it, using
+@code{COMP_WORDBREAKS} as described above.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMPREPLY
+An array variable from which Bash reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (@pxref{Programmable Completion}).
+Each array element contains one possible completion.
+
+@item COPROC
+An array variable created to hold the file descriptors
+for output from and input to an unnamed coprocess (@pxref{Coprocesses}).
+
+@item DIRSTACK
+An array variable containing the current contents of the directory stack.
+Directories appear in the stack in the order they are displayed by the
+@code{dirs} builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the @code{pushd} and @code{popd}
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If @env{DIRSTACK} is unset, it loses its special properties, even if
+it is subsequently reset.
+
+@item EMACS
+If Bash finds this variable in the environment when the shell
+starts with value @samp{t}, it assumes that the shell is running in an
+Emacs shell buffer and disables line editing.
+
+@item ENV
+Similar to @code{BASH_ENV}; used when the shell is invoked in
+@sc{posix} Mode (@pxref{Bash POSIX Mode}).
+
+@item EUID
+The numeric effective user id of the current user.  This variable
+is readonly.
+
+@item FCEDIT
+The editor used as a default by the @option{-e} option to the @code{fc}
+builtin command.
+
+@item FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion.
+A filename whose suffix matches one of the entries in 
+@env{FIGNORE}
+is excluded from the list of matched filenames.  A sample
+value is @samp{.o:~}
+
+@item FUNCNAME
+An array variable containing the names of all shell functions
+currently in the execution call stack.
+The element with index 0 is the name of any currently-executing
+shell function.
+The bottom-most element (the one with the highest index)
+is @code{"main"}.
+This variable exists only when a shell function is executing.
+Assignments to @env{FUNCNAME} have no effect and return an error status.
+If @env{FUNCNAME} is unset, it loses its special properties, even if
+it is subsequently reset.
+
+This variable can be used with @code{BASH_LINENO} and @code{BASH_SOURCE}.
+Each element of @code{FUNCNAME} has corresponding elements in
+@code{BASH_LINENO} and @code{BASH_SOURCE} to describe the call stack.
+For instance, @code{$@{FUNCNAME[$i]@}} was called from the file
+@code{$@{BASH_SOURCE[$i+1]@}} at line number @code{$@{BASH_LINENO[$i]@}}.
+The @code{caller} builtin displays the current call stack using this
+information.
+
+@item FUNCNEST
+If set to a numeric value greater than 0, defines a maximum function
+nesting level.  Function invocations that exceed this nesting level
+will cause the current command to abort.
+
+@item GLOBIGNORE
+A colon-separated list of patterns defining the set of filenames to
+be ignored by filename expansion.
+If a filename matched by a filename expansion pattern also matches one
+of the patterns in @env{GLOBIGNORE}, it is removed from the list
+of matches.
+
+@item GROUPS
+An array variable containing the list of groups of which the current    
+user is a member.
+Assignments to @env{GROUPS} have no effect and return an error status.
+If @env{GROUPS} is unset, it loses its special properties, even if it is
+subsequently reset.
+
+@item histchars
+Up to three characters which control history expansion, quick
+substitution, and tokenization (@pxref{History Interaction}).
+The first character is the
+@var{history expansion} character, that is, the character which signifies the
+start of a history expansion, normally @samp{!}.  The second character is the
+character which signifies `quick substitution' when seen as the first
+character on a line, normally @samp{^}.  The optional third character is the
+character which indicates that the remainder of the line is a comment when
+found as the first character of a word, usually @samp{#}.  The history
+comment character causes history substitution to be skipped for the
+remaining words on the line.  It does not necessarily cause the shell
+parser to treat the rest of the line as a comment.
+
+@item HISTCMD
+The history number, or index in the history list, of the current
+command.  If @env{HISTCMD} is unset, it loses its special properties,
+even if it is subsequently reset.
+
+@item HISTCONTROL
+A colon-separated list of values controlling how commands are saved on
+the history list.
+If the list of values includes @samp{ignorespace}, lines which begin
+with a space character are not saved in the history list.
+A value of @samp{ignoredups} causes lines which match the previous
+history entry to not be saved.
+A value of @samp{ignoreboth} is shorthand for
+@samp{ignorespace} and @samp{ignoredups}.
+A value of @samp{erasedups} causes all previous lines matching the
+current line to be removed from the history list before that line
+is saved.
+Any value not in the above list is ignored.
+If @env{HISTCONTROL} is unset, or does not include a valid value, 
+all lines read by the shell parser are saved on the history list, 
+subject to the value of @env{HISTIGNORE}.
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+@env{HISTCONTROL}.
+
+@item HISTFILE
+The name of the file to which the command history is saved.  The
+default value is @file{~/.bash_history}.
+
+@item HISTFILESIZE
+The maximum number of lines contained in the history file.
+When this variable is assigned a value, the history file is truncated,
+if necessary, to contain no more than that number of lines
+by removing the oldest entries.
+The history file is also truncated to this size after
+writing it when a shell exits.
+If the value is 0, the history file is truncated to zero size.
+Non-numeric values and numeric values less than zero inhibit truncation.
+The shell sets the default value to the value of @env{HISTSIZE}
+after reading any startup files.
+
+@item HISTIGNORE
+A colon-separated list of patterns used to decide which command
+lines should be saved on the history list.  Each pattern is
+anchored at the beginning of the line and must match the complete
+line (no implicit @samp{*} is appended).  Each pattern is tested
+against the line after the checks specified by @env{HISTCONTROL}
+are applied.  In addition to the normal shell pattern matching
+characters, @samp{&} matches the previous history line.  @samp{&}
+may be escaped using a backslash; the backslash is removed
+before attempting a match. 
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+@env{HISTIGNORE}.
+
+@env{HISTIGNORE} subsumes the function of @env{HISTCONTROL}.  A
+pattern of @samp{&} is identical to @code{ignoredups}, and a
+pattern of @samp{[ ]*} is identical to @code{ignorespace}. 
+Combining these two patterns, separating them with a colon,
+provides the functionality of @code{ignoreboth}. 
+
+@item HISTSIZE
+The maximum number of commands to remember on the history list.
+If the value is 0, commands are not saved in the history list.
+Numeric values less than zero result in every command being saved
+on the history list (there is no limit).
+The shell sets the default value to 500 after reading any startup files.
+
+@item HISTTIMEFORMAT
+If this variable is set and not null, its value is used as a format string
+for @var{strftime} to print the time stamp associated with each history
+entry displayed by the @code{history} builtin.
+If this variable is set, time stamps are written to the history file so
+they may be preserved across shell sessions.
+This uses the history comment character to distinguish timestamps from
+other history lines.
+
+@item HOSTFILE
+Contains the name of a file in the same format as @file{/etc/hosts} that
+should be read when the shell needs to complete a hostname.
+The list of possible hostname completions may be changed while the shell
+is running;
+the next time hostname completion is attempted after the
+value is changed, Bash adds the contents of the new file to the
+existing list.
+If @env{HOSTFILE} is set, but has no value, or does not name a readable file,
+Bash attempts to read 
+@file{/etc/hosts} to obtain the list of possible hostname completions.
+When @env{HOSTFILE} is unset, the hostname list is cleared.
+
+@item HOSTNAME
+The name of the current host.
+
+@item HOSTTYPE
+A string describing the machine Bash is running on.
+
+@item IGNOREEOF
+Controls the action of the shell on receipt of an @code{EOF} character
+as the sole input.  If set, the value denotes the number
+of consecutive @code{EOF} characters that can be read as the
+first character on an input line
+before the shell will exit.  If the variable exists but does not
+have a numeric value (or has no value) then the default is 10.
+If the variable does not exist, then @code{EOF} signifies the end of 
+input to the shell.  This is only in effect for interactive shells.
+
+@item INPUTRC
+The name of the Readline initialization file, overriding the default
+of @file{~/.inputrc}.
+
+@item LANG  
+Used to determine the locale category for any category not specifically
+selected with a variable starting with @code{LC_}.
+
+@item LC_ALL
+This variable overrides the value of @env{LANG} and any other
+@code{LC_} variable specifying a locale category.
+
+@item LC_COLLATE
+This variable determines the collation order used when sorting the
+results of filename expansion, and
+determines the behavior of range expressions, equivalence classes,
+and collating sequences within filename expansion and pattern matching
+(@pxref{Filename Expansion}).
+
+@item LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within filename expansion and pattern
+matching (@pxref{Filename Expansion}).
+
+@item LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a @samp{$} (@pxref{Locale Translation}).
+
+@item LC_NUMERIC
+This variable determines the locale category used for number formatting.
+
+@item LINENO
+The line number in the script or shell function currently executing.
+
+@item LINES
+Used by the @code{select} command to determine the column length
+for printing selection lists.  Automatically set by an interactive shell
+upon receipt of a
+@code{SIGWINCH}.
+
+@item MACHTYPE
+A string that fully describes the system type on which Bash
+is executing, in the standard @sc{gnu} @var{cpu-company-system} format.
+
+@item MAILCHECK
+How often (in seconds) that the shell should check for mail in the
+files specified in the @env{MAILPATH} or @env{MAIL} variables.
+The default is 60 seconds.  When it is time to check
+for mail, the shell does so before displaying the primary prompt.
+If this variable is unset, or set to a value that is not a number
+greater than or equal to zero, the shell disables mail checking.
+
+@item MAPFILE
+An array variable created to hold the text read by the
+@code{mapfile} builtin when no variable name is supplied.
+
+@item OLDPWD
+The previous working directory as set by the @code{cd} builtin.
+
+@item OPTERR
+If set to the value 1, Bash displays error messages
+generated by the @code{getopts} builtin command.
+
+@item OSTYPE
+A string describing the operating system Bash is running on.
+
+@item PIPESTATUS
+An array variable (@pxref{Arrays})
+containing a list of exit status values from the processes
+in the most-recently-executed foreground pipeline (which may
+contain only a single command).
+
+@item POSIXLY_CORRECT
+If this variable is in the environment when Bash starts, the shell
+enters @sc{posix} mode (@pxref{Bash POSIX Mode}) before reading the
+startup files, as if the @option{--posix} invocation option had been supplied.
+If it is set while the shell is running, Bash enables @sc{posix} mode,
+as if the command
+@example
+@code{set -o posix}
+@end example
+@noindent
+had been executed.  
+
+@item PPID
+The process @sc{id} of the shell's parent process.  This variable
+is readonly.
+
+@item PROMPT_COMMAND
+If set, the value is interpreted as a command to execute
+before the printing of each primary prompt (@env{$PS1}).
+
+@item PROMPT_DIRTRIM
+If set to a number greater than zero, the value is used as the number of
+trailing directory components to retain when expanding the @code{\w} and
+@code{\W} prompt string escapes (@pxref{Controlling the Prompt}).
+Characters removed are replaced with an ellipsis.
+
+@item PS3
+The value of this variable is used as the prompt for the
+@code{select} command.  If this variable is not set, the
+@code{select} command prompts with @samp{#? }
+
+@item PS4
+The value is the prompt printed before the command line is echoed
+when the @option{-x} option is set (@pxref{The Set Builtin}).
+The first character of @env{PS4} is replicated multiple times, as
+necessary, to indicate multiple levels of indirection.
+The default is @samp{+ }.
+
+@item PWD
+The current working directory as set by the @code{cd} builtin.
+
+@item RANDOM
+Each time this parameter is referenced, a random integer
+between 0 and 32767 is generated.  Assigning a value to this
+variable seeds the random number generator.
+
+@item READLINE_LINE
+The contents of the Readline line buffer, for use
+with @samp{bind -x} (@pxref{Bash Builtins}).
+
+@item READLINE_POINT
+The position of the insertion point in the Readline line buffer, for use
+with @samp{bind -x} (@pxref{Bash Builtins}).
+
+@item REPLY
+The default variable for the @code{read} builtin.
+
+@item SECONDS
+This variable expands to the number of seconds since the
+shell was started.  Assignment to this variable resets
+the count to the value assigned, and the expanded value
+becomes the value assigned plus the number of seconds
+since the assignment.
+
+@item SHELL
+The full pathname to the shell is kept in this environment variable.
+If it is not set when the shell starts,
+Bash assigns to it the full pathname of the current user's login shell.
+
+@item SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the @option{-o} option to the
+@code{set} builtin command (@pxref{The Set Builtin}).
+The options appearing in @env{SHELLOPTS} are those reported
+as @samp{on} by @samp{set -o}.
+If this variable is in the environment when Bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.  This variable is readonly.
+
+@item SHLVL
+Incremented by one each time a new instance of Bash is started.  This is
+intended to be a count of how deeply your Bash shells are nested.
+
+@item TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the @code{time}
+reserved word should be displayed.
+The @samp{%} character introduces an
+escape sequence that is expanded to a time value or other
+information.
+The escape sequences and their meanings are as
+follows; the braces denote optional portions. 
+
+@table @code
+
+@item %%
+A literal @samp{%}.
+
+@item %[@var{p}][l]R
+The elapsed time in seconds. 
+
+@item %[@var{p}][l]U
+The number of CPU seconds spent in user mode. 
+
+@item %[@var{p}][l]S
+The number of CPU seconds spent in system mode. 
+
+@item %P
+The CPU percentage, computed as (%U + %S) / %R. 
+@end table
+
+The optional @var{p} is a digit specifying the precision, the number of
+fractional digits after a decimal point.
+A value of 0 causes no decimal point or fraction to be output.
+At most three places after the decimal point may be specified; values
+of @var{p} greater than 3 are changed to 3.
+If @var{p} is not specified, the value 3 is used. 
+
+The optional @code{l} specifies a longer format, including minutes, of
+the form @var{MM}m@var{SS}.@var{FF}s.
+The value of @var{p} determines whether or not the fraction is included. 
+
+If this variable is not set, Bash acts as if it had the value
+@example
+@code{$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'}
+@end example
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+
+@item TMOUT
+If set to a value greater than zero, @code{TMOUT} is treated as the
+default timeout for the @code{read} builtin (@pxref{Bash Builtins}).
+The @code{select} command (@pxref{Conditional Constructs}) terminates
+if input does not arrive after @code{TMOUT} seconds when input is coming
+from a terminal.
+
+In an interactive shell, the value is interpreted as
+the number of seconds to wait for a line of input after issuing
+the primary prompt.
+Bash
+terminates after waiting for that number of seconds if a complete
+line of input does not arrive.
+
+@item TMPDIR
+If set, Bash uses its value as the name of a directory in which
+Bash creates temporary files for the shell's use.
+
+@item UID
+The numeric real user id of the current user.  This variable is readonly.
+
+@end vtable
+
+@node Bash Features
+@chapter Bash Features
+
+This chapter describes features unique to Bash.
+
+@menu
+* Invoking Bash::              Command line options that you can give
+                               to Bash.
+* Bash Startup Files::         When and how Bash executes scripts.
+* Interactive Shells::         What an interactive shell is.
+* Bash Conditional Expressions::       Primitives used in composing expressions for
+                               the @code{test} builtin.
+* Shell Arithmetic::           Arithmetic on shell variables.
+* Aliases::                    Substituting one command for another.
+* Arrays::                     Array Variables.
+* The Directory Stack::                History of visited directories.
+* Controlling the Prompt::     Customizing the various prompt strings.
+* The Restricted Shell::       A more controlled mode of shell execution.
+* Bash POSIX Mode::            Making Bash behave more closely to what
+                               the POSIX standard specifies.
+@end menu
+
+@node Invoking Bash
+@section Invoking Bash
+
+@example
+bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}]
+bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] -c @var{string} [@var{argument} @dots{}]
+bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}]
+@end example
+
+All of the single-character options used with the @code{set} builtin
+(@pxref{The Set Builtin}) can be used as options when the shell is invoked.
+In addition, there are several multi-character
+options that you can use.  These options must appear on the command
+line before the single-character options to be recognized. 
+
+@table @code
+@item --debugger
+Arrange for the debugger profile to be executed before the shell
+starts.  Turns on extended debugging mode (see @ref{The Shopt Builtin}
+for a description of the @code{extdebug} option to the @code{shopt}
+builtin).
+
+@item --dump-po-strings
+A list of all double-quoted strings preceded by @samp{$}
+is printed on the standard output
+in the @sc{gnu} @code{gettext} PO (portable object) file format.
+Equivalent to @option{-D} except for the output format.
+
+@item --dump-strings
+Equivalent to @option{-D}.
+
+@item --help
+Display a usage message on standard output and exit successfully.
+
+@item --init-file @var{filename}
+@itemx --rcfile @var{filename}
+Execute commands from @var{filename} (instead of @file{~/.bashrc})
+in an interactive shell.
+
+@item --login
+Equivalent to @option{-l}.
+
+@item --noediting
+Do not use the @sc{gnu} Readline library (@pxref{Command Line Editing})
+to read  command lines when the shell is interactive.
+
+@item --noprofile
+Don't load the system-wide startup file @file{/etc/profile}
+or any of the personal initialization files
+@file{~/.bash_profile}, @file{~/.bash_login}, or @file{~/.profile}
+when Bash is invoked as a login shell.
+
+@item --norc
+Don't read the @file{~/.bashrc} initialization file in an
+interactive shell.  This is on by default if the shell is
+invoked as @code{sh}.
+
+@item --posix
+Change the behavior of Bash where the default operation differs
+from the @sc{posix} standard to match the standard.  This
+is intended to make Bash behave as a strict superset of that
+standard.  @xref{Bash POSIX Mode}, for a description of the Bash
+@sc{posix} mode.
+
+@item --restricted
+Make the shell a restricted shell (@pxref{The Restricted Shell}).
+
+@item --verbose
+Equivalent to @option{-v}.  Print shell input lines as they're read.
+
+@item --version
+Show version information for this instance of
+Bash on the standard output and exit successfully.
+@end table
+
+There are several single-character options that may be supplied at
+invocation which are not available with the @code{set} builtin.
+
+@table @code
+@item -c
+Read and execute commands from the first non-option @var{argument}
+after processing the options, then exit. 
+Any remaining arguments are assigned to the
+positional parameters, starting with @code{$0}.
+
+@item -i
+Force the shell to run interactively.  Interactive shells are
+described in @ref{Interactive Shells}.
+
+@item -l
+Make this shell act as if it had been directly invoked by login.
+When the shell is interactive, this is equivalent to starting a
+login shell with @samp{exec -l bash}.
+When the shell is not interactive, the login shell startup files will
+be executed.
+@samp{exec bash -l} or @samp{exec bash --login}
+will replace the current shell with a Bash login shell.
+@xref{Bash Startup Files}, for a description of the special behavior
+of a login shell.
+
+@item -r
+Make the shell a restricted shell (@pxref{The Restricted Shell}).
+
+@item -s
+If this option is present, or if no arguments remain after option
+processing, then commands are read from the standard input.
+This option allows the positional parameters to be set
+when invoking an interactive shell.
+
+@item -D
+A list of all double-quoted strings preceded by @samp{$}
+is printed on the standard output.
+These are the strings that
+are subject to language translation when the current locale
+is not @code{C} or @code{POSIX} (@pxref{Locale Translation}).
+This implies the @option{-n} option; no commands will be executed.
+
+@item [-+]O [@var{shopt_option}]
+@var{shopt_option} is one of the shell options accepted by the
+@code{shopt} builtin (@pxref{The Shopt Builtin}).
+If @var{shopt_option} is present, @option{-O} sets the value of that option;
+@option{+O} unsets it.  
+If @var{shopt_option} is not supplied, the names and values of the shell
+options accepted by @code{shopt} are printed on the standard output.
+If the invocation option is @option{+O}, the output is displayed in a format
+that may be reused as input.
+
+@item --
+A @code{--} signals the end of options and disables further option
+processing.
+Any arguments after the @code{--} are treated as filenames and arguments.
+@end table
+
+@cindex login shell
+A @emph{login} shell is one whose first character of argument zero is
+@samp{-}, or one invoked with the @option{--login} option.
+
+@cindex interactive shell
+An @emph{interactive} shell is one started without non-option arguments,
+unless @option{-s} is specified,
+without specifying the @option{-c} option, and whose input and output are both
+connected to terminals (as determined by @code{isatty(3)}), or one
+started with the @option{-i} option.  @xref{Interactive Shells}, for more
+information.
+
+If arguments remain after option processing, and neither the
+@option{-c} nor the @option{-s}
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands (@pxref{Shell Scripts}).
+When Bash is invoked in this fashion, @code{$0}
+is set to the name of the file, and the positional parameters
+are set to the remaining arguments.
+Bash reads and executes commands from this file, then exits.   
+Bash's exit status is the exit status of the last command executed
+in the script.  If no commands are executed, the exit status is 0.
+
+@node Bash Startup Files
+@section Bash Startup Files
+@cindex startup files
+
+This section describes how Bash executes its startup files.
+If any of the files exist but cannot be read, Bash reports an error.
+Tildes are expanded in filenames as described above under
+Tilde Expansion (@pxref{Tilde Expansion}).
+
+Interactive shells are described in @ref{Interactive Shells}.
+
+@subsubheading Invoked as an interactive login shell, or with @option{--login}
+
+When Bash is invoked as an interactive login shell, or as a
+non-interactive shell with the @option{--login} option, it first reads and
+executes commands from the file @file{/etc/profile}, if that file exists.
+After reading that file, it looks for @file{~/.bash_profile},
+@file{~/.bash_login}, and @file{~/.profile}, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The @option{--noprofile} option may be used when the shell is started to
+inhibit this behavior.
+
+When a login shell exits, Bash reads and executes commands from
+the file @file{~/.bash_logout}, if it exists.
+
+@subsubheading Invoked as an interactive non-login shell
+
+When an interactive shell that is not a login shell is started, Bash
+reads and executes commands from @file{~/.bashrc}, if that file exists.
+This may be inhibited by using the @option{--norc} option.
+The @option{--rcfile @var{file}} option will force Bash to read and
+execute commands from @var{file} instead of @file{~/.bashrc}.
+
+So, typically, your @file{~/.bash_profile} contains the line
+@example
+@code{if [ -f ~/.bashrc ]; then . ~/.bashrc; fi}
+@end example
+@noindent
+after (or before) any login-specific initializations.
+
+@subsubheading Invoked non-interactively
+
+When Bash is started non-interactively, to run a shell script,
+for example, it looks for the variable @env{BASH_ENV} in the environment,
+expands its value if it appears there, and uses the expanded value as
+the name of a file to read and execute.  Bash behaves as if the
+following command were executed:
+@example
+@code{if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi}
+@end example
+@noindent
+but the value of the @env{PATH} variable is not used to search for the
+filename.
+
+As noted above, if a non-interactive shell is invoked with the
+@option{--login} option, Bash attempts to read and execute commands from the
+login shell startup files. 
+
+@subsubheading Invoked with name @code{sh}
+
+If Bash is invoked with the name @code{sh}, it tries to mimic the
+startup behavior of historical versions of @code{sh} as closely as
+possible, while conforming to the @sc{posix} standard as well.
+
+When invoked as an interactive login shell, or as a non-interactive
+shell with the @option{--login} option, it first attempts to read
+and execute commands from @file{/etc/profile} and @file{~/.profile}, in
+that order.
+The @option{--noprofile} option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name @code{sh}, Bash
+looks for the variable @env{ENV}, expands its value if it is defined,
+and uses the expanded value as the name of a file to read and execute.
+Since a shell invoked as @code{sh} does not attempt to read and execute
+commands from any other startup files, the @option{--rcfile} option has
+no effect.
+A non-interactive shell invoked with the name @code{sh} does not attempt
+to read any other startup files.
+
+When invoked as @code{sh}, Bash enters @sc{posix} mode after
+the startup files are read.
+
+@subsubheading Invoked in @sc{posix} mode
+
+When Bash is started in @sc{posix} mode, as with the
+@option{--posix} command line option, it follows the @sc{posix} standard
+for startup files.
+In this mode, interactive shells expand the @env{ENV} variable
+and commands are read and executed from the file whose name is the
+expanded value.
+No other startup files are read.
+
+@subsubheading Invoked by remote shell daemon
+
+Bash attempts to determine when it is being run with its standard input
+connected to a network connection, as when executed by the remote shell
+daemon, usually @code{rshd}, or the secure shell daemon @code{sshd}.
+If Bash determines it is being run in
+this fashion, it reads and executes commands from @file{~/.bashrc}, if that
+file exists and is readable.
+It will not do this if invoked as @code{sh}.
+The @option{--norc} option may be used to inhibit this behavior, and the
+@option{--rcfile} option may be used to force another file to be read, but
+@code{rshd} does not generally invoke the shell with those options or
+allow them to be specified.
+
+@subsubheading Invoked with unequal effective and real @sc{uid/gid}s
+
+If Bash is started with the effective user (group) id not equal to the
+real user (group) id, and the @option{-p} option is not supplied, no startup
+files are read, shell functions are not inherited from the environment,
+the @env{SHELLOPTS}, @env{BASHOPTS}, @env{CDPATH}, and @env{GLOBIGNORE}
+variables, if they appear in the environment, are ignored, and the effective
+user id is set to the real user id.
+If the @option{-p} option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+
+@node Interactive Shells
+@section Interactive Shells
+@cindex interactive shell
+@cindex shell, interactive
+
+@menu
+* What is an Interactive Shell?::      What determines whether a shell is Interactive.
+* Is this Shell Interactive?:: How to tell if a shell is interactive.
+* Interactive Shell Behavior:: What changes in a interactive shell?
+@end menu
+
+@node What is an Interactive Shell?
+@subsection What is an Interactive Shell?
+
+An interactive shell
+is one started without non-option arguments, unless @option{-s} is
+specified, without specifying the @option{-c} option, and
+whose input and error output are both
+connected to terminals (as determined by @code{isatty(3)}),
+or one started with the @option{-i} option.
+
+An interactive shell generally reads from and writes to a user's
+terminal.
+
+The @option{-s} invocation option may be used to set the positional parameters
+when an interactive shell is started.
+
+@node Is this Shell Interactive?
+@subsection Is this Shell Interactive?
+
+To determine within a startup script whether or not Bash is
+running interactively,
+test the value of the @samp{-} special parameter.
+It contains @code{i} when the shell is interactive.  For example:
+
+@example
+case "$-" in
+*i*)   echo This shell is interactive ;;
+*)     echo This shell is not interactive ;;
+esac
+@end example
+
+Alternatively, startup scripts may examine the variable
+@env{PS1}; it is unset in non-interactive shells, and set in
+interactive shells.  Thus:
+
+@example
+if [ -z "$PS1" ]; then
+        echo This shell is not interactive
+else
+        echo This shell is interactive
+fi
+@end example
+
+@node Interactive Shell Behavior
+@subsection Interactive Shell Behavior
+
+When the shell is running interactively, it changes its behavior in
+several ways.
+
+@enumerate
+@item
+Startup files are read and executed as described in @ref{Bash Startup Files}.
+
+@item
+Job Control (@pxref{Job Control}) is enabled by default.  When job
+control is in effect, Bash ignores the keyboard-generated job control
+signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+@item
+Bash expands and displays @env{PS1} before reading the first line
+of a command, and expands and displays @env{PS2} before reading the
+second and subsequent lines of a multi-line command.
+
+@item
+Bash executes the value of the @env{PROMPT_COMMAND} variable as a command
+before printing the primary prompt, @env{$PS1}
+(@pxref{Bash Variables}).
+
+@item
+Readline (@pxref{Command Line Editing}) is used to read commands from
+the user's terminal.
+
+@item
+Bash inspects the value of the @code{ignoreeof} option to @code{set -o}
+instead of exiting immediately when it receives an @code{EOF} on its
+standard input when reading a command (@pxref{The Set Builtin}).
+
+@item
+Command history (@pxref{Bash History Facilities})
+and history expansion (@pxref{History Interaction})
+are enabled by default.
+Bash will save the command history to the file named by @env{$HISTFILE}
+when a shell with history enabled exits.
+
+@item
+Alias expansion (@pxref{Aliases}) is performed by default.
+
+@item
+In the absence of any traps, Bash ignores @code{SIGTERM}
+(@pxref{Signals}).
+
+@item
+In the absence of any traps, @code{SIGINT} is caught and handled
+((@pxref{Signals}).
+@code{SIGINT} will interrupt some shell builtins.
+
+@item
+An interactive login shell sends a @code{SIGHUP} to all jobs on exit
+if the @code{huponexit} shell option has been enabled (@pxref{Signals}).
+
+@item
+The @option{-n} invocation option is ignored, and @samp{set -n} has
+no effect (@pxref{The Set Builtin}).
+
+@item
+Bash will check for mail periodically, depending on the values of the
+@env{MAIL}, @env{MAILPATH}, and @env{MAILCHECK} shell variables
+(@pxref{Bash Variables}).
+
+@item
+Expansion errors due to references to unbound shell variables after
+@samp{set -u} has been enabled will not cause the shell to exit
+(@pxref{The Set Builtin}).
+
+@item
+The shell will not exit on expansion errors caused by @var{var} being unset
+or null in @code{$@{@var{var}:?@var{word}@}} expansions
+(@pxref{Shell Parameter Expansion}).
+
+@item
+Redirection errors encountered by shell builtins will not cause the
+shell to exit.
+
+@item
+When running in @sc{posix} mode, a special builtin returning an error
+status will not cause the shell to exit (@pxref{Bash POSIX Mode}).
+
+@item
+A failed @code{exec} will not cause the shell to exit
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Parser syntax errors will not cause the shell to exit.
+
+@item
+Simple spelling correction for directory arguments to the @code{cd}
+builtin is enabled by default (see the description of the @code{cdspell}
+option to the @code{shopt} builtin in @ref{The Shopt Builtin}).
+
+@item
+The shell will check the value of the @env{TMOUT} variable and exit
+if a command is not read within the specified number of seconds after
+printing @env{$PS1} (@pxref{Bash Variables}).
+
+@end enumerate
+
+@node Bash Conditional Expressions
+@section Bash Conditional Expressions
+@cindex expressions, conditional
+
+Conditional expressions are used by the @code{[[} compound command
+and the @code{test} and @code{[} builtin commands.
+
+Expressions may be unary or binary.
+Unary expressions are often used to examine the status of a file.
+There are string operators and numeric comparison operators as well.
+If the @var{file} argument to one of the primaries is of the form
+@file{/dev/fd/@var{N}}, then file descriptor @var{N} is checked.
+If the @var{file} argument to one of the primaries is one of
+@file{/dev/stdin}, @file{/dev/stdout}, or @file{/dev/stderr}, file
+descriptor 0, 1, or 2, respectively, is checked.
+
+When used with @samp{[[}, the @samp{<} and @samp{>} operators sort
+lexicographically using the current locale.
+The @code{test} command uses ASCII ordering.
+
+Unless otherwise specified, primaries that operate on files follow symbolic
+links and operate on the target of the link, rather than the link itself.
+
+@table @code
+@item -a @var{file}
+True if @var{file} exists.
+
+@item -b @var{file}
+True if @var{file} exists and is a block special file.
+
+@item -c @var{file}
+True if @var{file} exists and is a character special file.
+
+@item -d @var{file}
+True if @var{file} exists and is a directory.
+
+@item -e @var{file}
+True if @var{file} exists.
+
+@item -f @var{file}
+True if @var{file} exists and is a regular file.
+
+@item -g @var{file}
+True if @var{file} exists and its set-group-id bit is set.
+
+@item -h @var{file}
+True if @var{file} exists and is a symbolic link.
+
+@item -k @var{file}
+True if @var{file} exists and its "sticky" bit is set.
+
+@item -p @var{file}
+True if @var{file} exists and is a named pipe (FIFO).
+
+@item -r @var{file}
+True if @var{file} exists and is readable.
+
+@item -s @var{file}
+True if @var{file} exists and has a size greater than zero.
+
+@item -t @var{fd}
+True if file descriptor @var{fd} is open and refers to a terminal.
+
+@item -u @var{file}
+True if @var{file} exists and its set-user-id bit is set.
+
+@item -w @var{file}
+True if @var{file} exists and is writable.
+
+@item -x @var{file}
+True if @var{file} exists and is executable.
+
+@item -G @var{file}
+True if @var{file} exists and is owned by the effective group id.
+
+@item -L @var{file}
+True if @var{file} exists and is a symbolic link.
+
+@item -N @var{file}
+True if @var{file} exists and has been modified since it was last read.
+
+@item -O @var{file}
+True if @var{file} exists and is owned by the effective user id.
+
+@item -S @var{file}
+True if @var{file} exists and is a socket.
+
+@item @var{file1} -ef @var{file2}
+True if @var{file1} and @var{file2} refer to the same device and
+inode numbers.
+
+@item @var{file1} -nt @var{file2}
+True if @var{file1} is newer (according to modification date)
+than @var{file2}, or if @var{file1} exists and @var{file2} does not.
+
+@item @var{file1} -ot @var{file2}
+True if @var{file1} is older than @var{file2},
+or if @var{file2} exists and @var{file1} does not.
+
+@item -o @var{optname}
+True if the shell option @var{optname} is enabled.
+The list of options appears in the description of the @option{-o}
+option to the @code{set} builtin (@pxref{The Set Builtin}).
+
+@item -v @var{varname}
+True if the shell variable @var{varname} is set (has been assigned a value).
+
+@item -z @var{string}
+True if the length of @var{string} is zero.
+
+@item -n @var{string}
+@itemx @var{string}
+True if the length of @var{string} is non-zero.
+
+@item @var{string1} == @var{string2}
+@itemx @var{string1} = @var{string2}
+True if the strings are equal.
+@samp{=} should be used with the @code{test} command for @sc{posix} conformance.
+
+@item @var{string1} != @var{string2}
+True if the strings are not equal.
+
+@item @var{string1} < @var{string2}
+True if @var{string1} sorts before @var{string2} lexicographically.
+
+@item @var{string1} > @var{string2}
+True if @var{string1} sorts after @var{string2} lexicographically.
+
+@item @var{arg1} OP @var{arg2}
+@code{OP} is one of 
+@samp{-eq}, @samp{-ne}, @samp{-lt}, @samp{-le}, @samp{-gt}, or @samp{-ge}.
+These arithmetic binary operators return true if @var{arg1}
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to @var{arg2},
+respectively.  @var{Arg1} and @var{arg2}
+may be positive or negative integers.
+@end table
+
+@node Shell Arithmetic
+@section Shell Arithmetic
+@cindex arithmetic, shell
+@cindex shell arithmetic
+@cindex expressions, arithmetic
+@cindex evaluation, arithmetic
+@cindex arithmetic evaluation
+
+The shell allows arithmetic expressions to be evaluated, as one of
+the shell expansions or by the @code{let} and the @option{-i} option
+to the @code{declare} builtins.
+
+Evaluation is done in fixed-width integers with no check for overflow,
+though division by 0 is trapped and flagged as an error.
+The operators and their precedence, associativity, and values
+are the same as in the C language.
+The following list of operators is grouped into levels of
+equal-precedence operators.
+The levels are listed in order of decreasing precedence. 
+
+@table @code
+
+@item @var{id}++ @var{id}--
+variable post-increment and post-decrement 
+
+@item ++@var{id} --@var{id}
+variable pre-increment and pre-decrement
+
+@item - +
+unary minus and plus
+
+@item ! ~
+logical and bitwise negation
+
+@item **
+exponentiation
+
+@item * / %
+multiplication, division, remainder
+
+@item + -
+addition, subtraction
+
+@item << >>
+left and right bitwise shifts
+
+@item <= >= < >
+comparison
+
+@item == !=
+equality and inequality
+
+@item &
+bitwise AND
+
+@item ^
+bitwise exclusive OR
+
+@item |
+bitwise OR
+
+@item &&
+logical AND
+
+@item ||
+logical OR
+
+@item expr ? expr : expr
+conditional operator
+
+@item = *= /= %= += -= <<= >>= &= ^= |=
+assignment
+
+@item expr1 , expr2
+comma
+@end table
+
+Shell variables are allowed as operands; parameter expansion is
+performed before the expression is evaluated. 
+Within an expression, shell variables may also be referenced by name
+without using the parameter expansion syntax.
+A shell variable that is null or unset evaluates to 0 when referenced
+by name without using the parameter expansion syntax.
+The value of a variable is evaluated as an arithmetic expression
+when it is referenced, or when a variable which has been given the  
+@var{integer} attribute using @samp{declare -i} is assigned a value.
+A null value evaluates to 0.
+A shell variable need not have its @var{integer} attribute turned on
+to be used in an expression.
+
+Constants with a leading 0 are interpreted as octal numbers.
+A leading @samp{0x} or @samp{0X} denotes hexadecimal.  Otherwise,
+numbers take the form [@var{base}@code{#}]@var{n}, where the optional @var{base}
+is a decimal number between 2 and 64 representing the arithmetic
+base, and @var{n} is a number in that base.
+If @var{base}@code{#} is omitted, then base 10 is used.
+When specifying @var{n},
+he digits greater than 9 are represented by the lowercase letters,
+the uppercase letters, @samp{@@}, and @samp{_}, in that order.
+If @var{base} is less than or equal to 36, lowercase and uppercase
+letters may be used interchangeably to represent numbers between 10
+and 35.
+
+Operators are evaluated in order of precedence.  Sub-expressions in
+parentheses are evaluated first and may override the precedence
+rules above.
+
+@node Aliases
+@section Aliases
+@cindex alias expansion
+
+@var{Aliases} allow a string to be substituted for a word when it is used
+as the first word of a simple command.
+The shell maintains a list of aliases that may be set and unset with
+the @code{alias} and @code{unalias} builtin commands.
+
+The first word of each simple command, if unquoted, is checked to see
+if it has an alias.
+If so, that word is replaced by the text of the alias.
+The characters @samp{/}, @samp{$}, @samp{`}, @samp{=} and any of the
+shell metacharacters or quoting characters listed above may not appear
+in an alias name.
+The replacement text may contain any valid
+shell input, including shell metacharacters.
+The first word of the replacement text is tested for
+aliases, but a word that is identical to an alias being expanded
+is not expanded a second time.
+This means that one may alias @code{ls} to @code{"ls -F"},
+for instance, and Bash does not try to recursively expand the
+replacement text.
+If the last character of the alias value is a
+@var{blank}, then the next command word following the
+alias is also checked for alias expansion.
+
+Aliases are created and listed with the @code{alias}
+command, and removed with the @code{unalias} command.
+
+There is no mechanism for using arguments in the replacement text,
+as in @code{csh}.
+If arguments are needed, a shell function should be used
+(@pxref{Shell Functions}).
+
+Aliases are not expanded when the shell is not interactive,
+unless the @code{expand_aliases} shell option is set using
+@code{shopt} (@pxref{The Shopt Builtin}).
+
+The rules concerning the definition and use of aliases are
+somewhat confusing.  Bash
+always reads at least one complete line
+of input before executing any
+of the commands on that line.  Aliases are expanded when a
+command is read, not when it is executed.  Therefore, an
+alias definition appearing on the same line as another
+command does not take effect until the next line of input is read.
+The commands following the alias definition
+on that line are not affected by the new alias.
+This behavior is also an issue when functions are executed.
+Aliases are expanded when a function definition is read,
+not when the function is executed, because a function definition
+is itself a compound command.  As a consequence, aliases
+defined in a function are not available until after that
+function is executed.  To be safe, always put
+alias definitions on a separate line, and do not use @code{alias}
+in compound commands.
+
+For almost every purpose, shell functions are preferred over aliases.
+
+@node Arrays
+@section Arrays
+@cindex arrays
+
+Bash provides one-dimensional indexed and associative array variables.
+Any variable may be used as an indexed array;
+the @code{declare} builtin will explicitly declare an array.
+There is no maximum
+limit on the size of an array, nor any requirement that members
+be indexed or assigned contiguously.
+Indexed arrays are referenced using integers (including arithmetic
+expressions (@pxref{Shell Arithmetic})) and are zero-based;
+associative arrays use arbitrary strings.
+Unless otherwise noted, indexed array indices must be non-negative integers.
+
+An indexed array is created automatically if any variable is assigned to
+using the syntax
+@example
+@var{name}[@var{subscript}]=@var{value}
+@end example
+
+@noindent
+The @var{subscript}
+is treated as an arithmetic expression that must evaluate to a number.
+To explicitly declare an array, use
+@example
+declare -a @var{name}
+@end example
+@noindent
+The syntax
+@example
+declare -a @var{name}[@var{subscript}]
+@end example
+@noindent
+is also accepted; the @var{subscript} is ignored.
+
+@noindent
+Associative arrays are created using
+@example
+declare -A @var{name}.
+@end example
+
+Attributes may be
+specified for an array variable using the @code{declare} and
+@code{readonly} builtins.  Each attribute applies to all members of
+an array.
+
+Arrays are assigned to using compound assignments of the form
+@example
+@var{name}=(@var{value1} @var{value2} @dots{} )
+@end example
+@noindent
+where each
+@var{value} is of the form @code{[@var{subscript}]=}@var{string}.
+Indexed array assignments do not require anything but @var{string}.
+When assigning to indexed arrays, if
+the optional subscript is supplied, that index is assigned to;
+otherwise the index of the element assigned is the last index assigned
+to by the statement plus one.  Indexing starts at zero.
+
+When assigning to an associative array, the subscript is required.
+
+This syntax is also accepted by the @code{declare}
+builtin.  Individual array elements may be assigned to using the
+@code{@var{name}[@var{subscript}]=@var{value}} syntax introduced above.
+
+Any element of an array may be referenced using
+@code{$@{@var{name}[@var{subscript}]@}}.
+The braces are required to avoid
+conflicts with the shell's filename expansion operators.  If the
+@var{subscript} is @samp{@@} or @samp{*}, the word expands to all members
+of the array @var{name}.  These subscripts differ only when the word
+appears within double quotes.
+If the word is double-quoted,
+@code{$@{@var{name}[*]@}} expands to a single word with
+the value of each array member separated by the first character of the
+@env{IFS} variable, and @code{$@{@var{name}[@@]@}} expands each element of
+@var{name} to a separate word.  When there are no array members,
+@code{$@{@var{name}[@@]@}} expands to nothing.
+If the double-quoted expansion occurs within a word, the expansion of
+the first parameter is joined with the beginning part of the original
+word, and the expansion of the last parameter is joined with the last
+part of the original word.
+This is analogous to the
+expansion of the special parameters @samp{@@} and @samp{*}. 
+@code{$@{#@var{name}[@var{subscript}]@}} expands to the length of
+@code{$@{@var{name}[@var{subscript}]@}}.
+If @var{subscript} is @samp{@@} or
+@samp{*}, the expansion is the number of elements in the array. 
+Referencing an array variable without a subscript is equivalent to
+referencing with a subscript of 0. 
+If the @var{subscript}
+used to reference an element of an indexed array
+evaluates to a number less than zero, it is used as
+an offset from one greater than the array's maximum index (so a subcript
+of -1 refers to the last element of the array).
+
+An array variable is considered set if a subscript has been assigned a
+value.  The null string is a valid value.
+
+The @code{unset} builtin is used to destroy arrays.
+@code{unset @var{name}[@var{subscript}]}
+destroys the array element at index @var{subscript}.
+Care must be taken to avoid unwanted side effects caused by filename
+expansion.
+@code{unset @var{name}}, where @var{name} is an array, removes the
+entire array.  A subscript of @samp{*} or @samp{@@} also removes the
+entire array.
+
+The @code{declare}, @code{local}, and @code{readonly}
+builtins each accept a @option{-a} option to specify an indexed
+array and a @option{-A} option to specify an associative array.
+If both options are supplied, @option{-A} takes precedence.
+The @code{read} builtin accepts a @option{-a}
+option to assign a list of words read from the standard input
+to an array, and can read values from the standard input into
+individual array elements.  The @code{set} and @code{declare}
+builtins display array values in a way that allows them to be
+reused as input.
+
+@node The Directory Stack
+@section The Directory Stack
+@cindex directory stack
+
+@menu
+* Directory Stack Builtins::           Bash builtin commands to manipulate
+                                       the directory stack.
+@end menu
+
+The directory stack is a list of recently-visited directories.  The
+@code{pushd} builtin adds directories to the stack as it changes
+the current directory, and the @code{popd} builtin removes specified
+directories from the stack and changes the current directory to
+the directory removed.  The @code{dirs} builtin displays the contents
+of the directory stack.
+
+The contents of the directory stack are also visible
+as the value of the @env{DIRSTACK} shell variable.
+
+@node Directory Stack Builtins
+@subsection Directory Stack Builtins
+
+@table @code
+
+@item dirs
+@btindex dirs
+@example
+dirs [-clpv] [+@var{N} | -@var{N}]
+@end example
+
+Display the list of currently remembered directories.  Directories
+are added to the list with the @code{pushd} command; the
+@code{popd} command removes directories from the list.
+
+@table @code
+@item -c
+Clears the directory stack by deleting all of the elements.
+@item -l
+Produces a listing using full pathnames;
+the default listing format uses a tilde to denote the home directory.
+@item -p
+Causes @code{dirs} to print the directory stack with one entry per
+line.
+@item -v
+Causes @code{dirs} to print the directory stack with one entry per
+line, prefixing each entry with its index in the stack.
+@item +@var{N}
+Displays the @var{N}th directory (counting from the left of the
+list printed by @code{dirs} when invoked without options), starting
+with zero.
+@item -@var{N}
+Displays the @var{N}th directory (counting from the right of the
+list printed by @code{dirs} when invoked without options), starting
+with zero.
+@end table
+
+@item popd
+@btindex popd
+@example
+popd [-n] [+@var{N} | -@var{N}]
+@end example
+
+Remove the top entry from the directory stack, and @code{cd}
+to the new top directory.
+When no arguments are given, @code{popd}
+removes the top directory from the stack and
+performs a @code{cd} to the new top directory.  The
+elements are numbered from 0 starting at the first directory listed with
+@code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}.
+
+@table @code
+@item -n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+@item +@var{N}
+Removes the @var{N}th directory (counting from the left of the
+list printed by @code{dirs}), starting with zero.
+@item -@var{N}
+Removes the @var{N}th directory (counting from the right of the
+list printed by @code{dirs}), starting with zero.
+@end table
+
+@btindex pushd
+@item pushd
+@example
+pushd [-n] [@var{+N} | @var{-N} | @var{dir}]
+@end example
+
+Save the current directory on the top of the directory stack
+and then @code{cd} to @var{dir}.
+With no arguments, @code{pushd} exchanges the top two directories.
+
+@table @code
+@item -n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+@item +@var{N}
+Brings the @var{N}th directory (counting from the left of the
+list printed by @code{dirs}, starting with zero) to the top of
+the list by rotating the stack.
+@item -@var{N}
+Brings the @var{N}th directory (counting from the right of the
+list printed by @code{dirs}, starting with zero) to the top of
+the list by rotating the stack.
+@item @var{dir}
+Makes the current working directory be the top of the stack, making
+it the new current directory as if it had been supplied as an argument
+to the @code{cd} builtin.
+@end table
+@end table
+
+@node Controlling the Prompt
+@section Controlling the Prompt
+@cindex prompting
+
+The value of the variable @env{PROMPT_COMMAND} is examined just before
+Bash prints each primary prompt.  If @env{PROMPT_COMMAND} is set and
+has a non-null value, then the
+value is executed just as if it had been typed on the command line.
+
+In addition, the following table describes the special characters which
+can appear in the prompt variables @env{PS1} to @env{PS4}:
+
+@table @code
+@item \a
+A bell character.
+@item \d
+The date, in "Weekday Month Date" format (e.g., "Tue May 26").
+@item \D@{@var{format}@}
+The @var{format} is passed to @code{strftime}(3) and the result is inserted
+into the prompt string; an empty @var{format} results in a locale-specific
+time representation.  The braces are required.
+@item \e
+An escape character.
+@item \h
+The hostname, up to the first `.'.
+@item \H
+The hostname.
+@item \j
+The number of jobs currently managed by the shell.
+@item \l
+The basename of the shell's terminal device name.
+@item \n
+A newline.
+@item \r
+A carriage return.
+@item \s
+The name of the shell, the basename of @code{$0} (the portion
+following the final slash).
+@item \t
+The time, in 24-hour HH:MM:SS format.
+@item \T
+The time, in 12-hour HH:MM:SS format.
+@item \@@
+The time, in 12-hour am/pm format.
+@item \A
+The time, in 24-hour HH:MM format.
+@item \u
+The username of the current user.
+@item \v
+The version of Bash (e.g., 2.00)          
+@item \V
+The release of Bash, version + patchlevel (e.g., 2.00.0)
+@item \w
+The current working directory, with @env{$HOME} abbreviated with a tilde
+(uses the @env{$PROMPT_DIRTRIM} variable).
+@item \W
+The basename of @env{$PWD}, with @env{$HOME} abbreviated with a tilde.
+@item \!
+The history number of this command.
+@item \#
+The command number of this command.
+@item \$
+If the effective uid is 0, @code{#}, otherwise @code{$}.
+@item \@var{nnn}
+The character whose ASCII code is the octal value @var{nnn}.
+@item \\
+A backslash.
+@item \[
+Begin a sequence of non-printing characters.  This could be used to
+embed a terminal control sequence into the prompt.
+@item \]
+End a sequence of non-printing characters.
+@end table
+
+The command number and the history number are usually different:
+the history number of a command is its position in the history
+list, which may include commands restored from the history file
+(@pxref{Bash History Facilities}), while the command number is
+the position in the sequence of commands executed during the current
+shell session.
+
+After the string is decoded, it is expanded via
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+@code{promptvars} shell option (@pxref{Bash Builtins}).
+
+@node The Restricted Shell
+@section The Restricted Shell
+@cindex restricted shell
+
+If Bash is started with the name @code{rbash}, or the
+@option{--restricted}
+or
+@option{-r}
+option is supplied at invocation, the shell becomes restricted.
+A restricted shell is used to
+set up an environment more controlled than the standard shell.
+A restricted shell behaves identically to @code{bash}
+with the exception that the following are disallowed or not performed:
+
+@itemize @bullet
+@item
+Changing directories with the @code{cd} builtin.
+@item
+Setting or unsetting the values of the @env{SHELL}, @env{PATH},
+@env{ENV}, or @env{BASH_ENV} variables.
+@item
+Specifying command names containing slashes.
+@item
+Specifying a filename containing a slash as an argument to the @code{.}
+builtin command.
+@item
+Specifying a filename containing a slash as an argument to the @option{-p}
+option to the @code{hash} builtin command.
+@item
+Importing function definitions from the shell environment at startup.
+@item
+Parsing the value of @env{SHELLOPTS} from the shell environment at startup.
+@item
+Redirecting output using the @samp{>}, @samp{>|}, @samp{<>}, @samp{>&},
+@samp{&>}, and @samp{>>} redirection operators.
+@item
+Using the @code{exec} builtin to replace the shell with another command.
+@item
+Adding or deleting builtin commands with the
+@option{-f} and @option{-d} options to the @code{enable} builtin.
+@item
+Using the @code{enable} builtin command to enable disabled shell builtins.
+@item
+Specifying the @option{-p} option to the @code{command} builtin.
+@item
+Turning off restricted mode with @samp{set +r} or @samp{set +o restricted}.
+@end itemize
+
+These restrictions are enforced after any startup files are read.
+
+When a command that is found to be a shell script is executed
+(@pxref{Shell Scripts}), @code{rbash} turns off any restrictions in
+the shell spawned to execute the script.
+
+@node Bash POSIX Mode
+@section Bash POSIX Mode
+@cindex POSIX Mode
+
+Starting Bash with the @option{--posix} command-line option or executing
+@samp{set -o posix} while Bash is running will cause Bash to conform more
+closely to the @sc{posix} standard by changing the behavior to
+match that specified by @sc{posix} in areas where the Bash default differs.
+
+When invoked as @code{sh}, Bash enters @sc{posix} mode after reading the
+startup files.
+
+The following list is what's changed when `@sc{posix} mode' is in effect:
+
+@enumerate
+@item
+When a command in the hash table no longer exists, Bash will re-search
+@env{$PATH} to find the new location.  This is also available with
+@samp{shopt -s checkhash}.
+
+@item
+The message printed by the job control code and builtins when a job
+exits with a non-zero status is `Done(status)'.
+
+@item
+The message printed by the job control code and builtins when a job
+is stopped is `Stopped(@var{signame})', where @var{signame} is, for
+example, @code{SIGTSTP}.
+
+@item
+The @code{bg} builtin uses the required format to describe each job placed
+in the background, which does not include an indication of whether the job
+is the current or previous job.
+
+@item
+Reserved words appearing in a context where reserved words are recognized
+do not undergo alias expansion.
+
+@item
+The @sc{posix} @env{PS1} and @env{PS2} expansions of @samp{!} to
+the history number and @samp{!!} to @samp{!} are enabled,
+and parameter expansion is performed on the values of @env{PS1} and
+@env{PS2} regardless of the setting of the @code{promptvars} option.
+
+@item
+The @sc{posix} startup files are executed (@env{$ENV}) rather than
+the normal Bash files.
+
+@item
+Tilde expansion is only performed on assignments preceding a command
+name, rather than on all assignment statements on the line.
+
+@item
+The @code{command} builtin does not prevent builtins that take assignment
+statements as arguments from expanding them as assignment statements;
+when not in POSIX mode, assignment builtins lose their assignment
+statement expansion properties when preceded by @code{command}.
+
+@item
+The default history file is @file{~/.sh_history} (this is the
+default value of @env{$HISTFILE}).
+
+@item
+The output of @samp{kill -l} prints all the signal names on a single line,
+separated by spaces, without the @samp{SIG} prefix.
+
+@item
+The @code{kill} builtin does not accept signal names with a @samp{SIG}
+prefix.
+
+@item
+Non-interactive shells exit if @var{filename} in @code{.} @var{filename}
+is not found.
+
+@item
+Non-interactive shells exit if a syntax error in an arithmetic expansion
+results in an invalid expression.
+
+@item
+Non-interactive shells exit if there is a syntax error in a script read
+with the @code{.} or @code{source} builtins, or in a string processed by
+the @code{eval} builtin.
+
+@item
+Redirection operators do not perform filename expansion on the word
+in the redirection unless the shell is interactive.
+
+@item
+Redirection operators do not perform word splitting on the word in the
+redirection.
+
+@item
+Function names must be valid shell @code{name}s.  That is, they may not
+contain characters other than letters, digits, and underscores, and
+may not start with a digit.  Declaring a function with an invalid name
+causes a fatal syntax error in non-interactive shells.
+
+@item
+Function names may not be the same as one of the @sc{posix} special
+builtins.
+
+@item
+@sc{posix} special builtins are found before shell functions
+during command lookup.
+
+@item
+The @code{time} reserved word may be used by itself as a command.  When
+used in this way, it displays timing statistics for the shell and its
+completed children.  The @env{TIMEFORMAT} variable controls the format
+of the timing information.
+
+@item
+When parsing and expanding a $@{@dots{}@} expansion that appears within
+double quotes, single quotes are no longer special and cannot be used to
+quote a closing brace or other special character, unless the operator is
+one of those defined to perform pattern removal.  In this case, they do
+not have to appear as matched pairs.
+
+@item
+The parser does not recognize @code{time} as a reserved word if the next
+token begins with a @samp{-}.
+
+@item
+If a @sc{posix} special builtin returns an error status, a
+non-interactive shell exits.  The fatal errors are those listed in
+the @sc{posix} standard, and include things like passing incorrect options,
+redirection errors, variable assignment errors for assignments preceding
+the command name, and so on.
+
+@item
+A non-interactive shell exits with an error status if a variable
+assignment error occurs when no command name follows the assignment
+statements.
+A variable assignment error occurs, for example, when trying to assign
+a value to a readonly variable.
+
+@item
+A non-interactive shell exists with an error status if a variable
+assignment error occurs in an assignment statement preceding a special
+builtin, but not with any other simple command.
+
+@item
+A non-interactive shell exits with an error status if the iteration
+variable in a @code{for} statement or the selection variable in a
+@code{select} statement is a readonly variable.
+
+@item
+Process substitution is not available.
+
+@item
+While variable indirection is available, it may not be applied to the
+@samp{#} and @samp{?} special parameters.
+
+@item
+Assignment statements preceding @sc{posix} special builtins
+persist in the shell environment after the builtin completes.
+
+@item
+Assignment statements preceding shell function calls persist in the
+shell environment after the function returns, as if a @sc{posix}
+special builtin command had been executed.
+
+@item
+The @code{export} and @code{readonly} builtin commands display their
+output in the format required by @sc{posix}.
+
+@item
+The @code{trap} builtin displays signal names without the leading
+@code{SIG}.
+
+@item
+The @code{trap} builtin doesn't check the first argument for a possible
+signal specification and revert the signal handling to the original
+disposition if it is, unless that argument consists solely of digits and
+is a valid signal number.  If users want to reset the handler for a given
+signal to the original disposition, they should use @samp{-} as the
+first argument.
+
+@item
+The @code{.} and @code{source} builtins do not search the current directory
+for the filename argument if it is not found by searching @env{PATH}.
+
+@item
+Subshells spawned to execute command substitutions inherit the value of
+the @option{-e} option from the parent shell.  When not in @sc{posix} mode,
+Bash clears the @option{-e} option in such subshells.
+
+@item
+Alias expansion is always enabled, even in non-interactive shells.
+
+@item
+When the @code{alias} builtin displays alias definitions, it does not
+display them with a leading @samp{alias } unless the @option{-p} option
+is supplied.
+
+@item
+When the @code{set} builtin is invoked without options, it does not display
+shell function names and definitions.
+
+@item
+When the @code{set} builtin is invoked without options, it displays
+variable values without quotes, unless they contain shell metacharacters,
+even if the result contains nonprinting characters.
+
+@item
+When the @code{cd} builtin is invoked in @var{logical} mode, and the pathname
+constructed from @code{$PWD} and the directory name supplied as an argument
+does not refer to an existing directory, @code{cd} will fail instead of
+falling back to @var{physical} mode.
+
+@item
+The @code{pwd} builtin verifies that the value it prints is the same as the
+current directory, even if it is not asked to check the file system with the
+@option{-P} option.
+
+@item
+When listing the history, the @code{fc} builtin does not include an
+indication of whether or not a history entry has been modified.
+
+@item
+The default editor used by @code{fc} is @code{ed}.
+
+@item
+The @code{type} and @code{command} builtins will not report a non-executable
+file as having been found, though the shell will attempt to execute such a
+file if it is the only so-named file found in @code{$PATH}.
+
+@item
+The @code{vi} editing mode will invoke the @code{vi} editor directly when
+the @samp{v} command is run, instead of checking @code{$VISUAL} and
+@code{$EDITOR}.
+
+@item
+When the @code{xpg_echo} option is enabled, Bash does not attempt to interpret
+any arguments to @code{echo} as options.  Each argument is displayed, after
+escape characters are converted.
+
+@item
+The @code{ulimit} builtin uses a block size of 512 bytes for the @option{-c}
+and @option{-f} options.
+
+@item
+The arrival of @code{SIGCHLD}  when a trap is set on @code{SIGCHLD} does
+not interrupt the @code{wait} builtin and cause it to return immediately.
+The trap command is run once for each child that exits.
+
+@item
+The @code{read} builtin may be interrupted by a signal for which a trap
+has been set.
+If Bash receives a trapped signal while executing @code{read}, the trap
+handler executes and @code{read} returns an exit status greater than 128.
+
+@end enumerate
+
+There is other @sc{posix} behavior that Bash does not implement by
+default even when in @sc{posix} mode.
+Specifically:
+
+@enumerate
+
+@item
+The @code{fc} builtin checks @code{$EDITOR} as a program to edit history
+entries if @code{FCEDIT} is unset, rather than defaulting directly to
+@code{ed}.  @code{fc} uses @code{ed} if @code{EDITOR} is unset.
+
+@item
+As noted above, Bash requires the @code{xpg_echo} option to be enabled for
+the @code{echo} builtin to be fully conformant.
+
+@end enumerate
+
+Bash can be configured to be @sc{posix}-conformant by default, by specifying
+the @option{--enable-strict-posix-default} to @code{configure} when building
+(@pxref{Optional Features}).
+
+@node Job Control
+@chapter Job Control
+
+This chapter discusses what job control is, how it works, and how
+Bash allows you to access its facilities.
+
+@menu
+* Job Control Basics::         How job control works.
+* Job Control Builtins::       Bash builtin commands used to interact
+                               with job control.
+* Job Control Variables::      Variables Bash uses to customize job
+                               control.
+@end menu
+
+@node Job Control Basics
+@section Job Control Basics
+@cindex job control
+@cindex foreground
+@cindex background
+@cindex suspending jobs
+
+Job control
+refers to the ability to selectively stop (suspend)
+the execution of processes and continue (resume)
+their execution at a later point.  A user typically employs
+this facility via an interactive interface supplied jointly
+by the operating system kernel's terminal driver and Bash.
+
+The shell associates a @var{job} with each pipeline.  It keeps a
+table of currently executing jobs, which may be listed with the
+@code{jobs} command.  When Bash starts a job
+asynchronously, it prints a line that looks
+like:
+@example
+[1] 25647
+@end example
+@noindent
+indicating that this job is job number 1 and that the process @sc{id}
+of the last process in the pipeline associated with this job is
+25647.  All of the processes in a single pipeline are members of
+the same job.  Bash uses the @var{job} abstraction as the
+basis for job control. 
+
+To facilitate the implementation of the user interface to job
+control, the operating system maintains the notion of a current terminal
+process group @sc{id}.  Members of this process group (processes whose
+process group @sc{id} is equal to the current terminal process group
+@sc{id}) receive keyboard-generated signals such as @code{SIGINT}. 
+These processes are said to be in the foreground.  Background
+processes are those whose process group @sc{id} differs from the
+terminal's; such processes are immune to keyboard-generated
+signals.  Only foreground processes are allowed to read from or, if
+the user so specifies with @code{stty tostop}, write to the terminal.
+Background processes which attempt to
+read from (write to when @code{stty tostop} is in effect) the
+terminal are sent a @code{SIGTTIN} (@code{SIGTTOU})
+signal by the kernel's terminal driver,
+which, unless caught, suspends the process. 
+
+If the operating system on which Bash is running supports
+job control, Bash contains facilities to use it.  Typing the
+@var{suspend} character (typically @samp{^Z}, Control-Z) while a
+process is running causes that process to be stopped and returns
+control to Bash.  Typing the @var{delayed suspend} character
+(typically @samp{^Y}, Control-Y) causes the process to be stopped
+when it attempts to read input from the terminal, and control to
+be returned to Bash.  The user then manipulates the state of
+this job, using the @code{bg} command to continue it in the
+background, the @code{fg} command to continue it in the
+foreground, or the @code{kill} command to kill it.  A @samp{^Z}
+takes effect immediately, and has the additional side effect of
+causing pending output and typeahead to be discarded. 
+
+There are a number of ways to refer to a job in the shell.  The
+character @samp{%} introduces a job specification (@var{jobspec}).
+
+Job number @code{n} may be referred to as @samp{%n}.
+The symbols @samp{%%} and  @samp{%+} refer to the shell's notion of the
+current job, which is the last job stopped while it was in the foreground
+or started in the background.
+A single @samp{%} (with no accompanying job specification) also refers
+to the current job.
+The previous job may be referenced using @samp{%-}.
+If there is only a single job, @samp{%+} and @samp{%-} can both be used
+to refer to that job.
+In output pertaining to jobs (e.g., the output of the @code{jobs}
+command), the current job is always flagged with a @samp{+}, and the
+previous job with a @samp{-}. 
+
+A job may also be referred to
+using a prefix of the name used to start it, or using a substring
+that appears in its command line.  For example, @samp{%ce} refers
+to a stopped @code{ce} job.  Using @samp{%?ce}, on the
+other hand, refers to any job containing the string @samp{ce} in
+its command line.  If the prefix or substring matches more than one job,
+Bash reports an error.
+
+Simply naming a job can be used to bring it into the foreground:
+@samp{%1} is a synonym for @samp{fg %1}, bringing job 1 from the
+background into the foreground.  Similarly, @samp{%1 &} resumes
+job 1 in the background, equivalent to @samp{bg %1}
+
+The shell learns immediately whenever a job changes state. 
+Normally, Bash waits until it is about to print a prompt
+before reporting changes in a job's status so as to not interrupt
+any other output.
+If the @option{-b} option to the @code{set} builtin is enabled,
+Bash reports such changes immediately (@pxref{The Set Builtin}).
+Any trap on @code{SIGCHLD} is executed for each child process
+that exits.
+
+If an attempt to exit Bash is made while jobs are stopped, (or running, if
+the @code{checkjobs} option is enabled -- see @ref{The Shopt Builtin}), the
+shell prints a warning message, and if the @code{checkjobs} option is
+enabled, lists the jobs and their statuses.
+The @code{jobs} command may then be used to inspect their status.
+If a second attempt to exit is made without an intervening command,
+Bash does not print another warning, and any stopped jobs are terminated.
+
+@node Job Control Builtins
+@section Job Control Builtins
+
+@table @code
+
+@item bg
+@btindex bg
+@example
+bg [@var{jobspec} @dots{}]
+@end example
+
+Resume each suspended job @var{jobspec} in the background, as if it
+had been started with @samp{&}.
+If @var{jobspec} is not supplied, the current job is used.
+The return status is zero unless it is run when job control is not
+enabled, or, when run with job control enabled, any
+@var{jobspec} was not found or specifies a job
+that was started without job control.
+
+@item fg
+@btindex fg
+@example
+fg [@var{jobspec}]
+@end example
+
+Resume the job @var{jobspec} in the foreground and make it the current job.
+If @var{jobspec} is not supplied, the current job is used.
+The return status is that of the command placed into the foreground,
+or non-zero if run when job control is disabled or, when run with
+job control enabled, @var{jobspec} does not specify a valid job or
+@var{jobspec} specifies a job that was started without job control.
+
+@item jobs
+@btindex jobs
+@example
+jobs [-lnprs] [@var{jobspec}]
+jobs -x @var{command} [@var{arguments}]
+@end example
+
+The first form lists the active jobs.  The options have the
+following meanings:
+
+@table @code
+@item -l
+List process @sc{id}s in addition to the normal information.
+
+@item -n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+
+@item -p
+List only the process @sc{id} of the job's process group leader.
+
+@item -r
+Display only running jobs.
+
+@item -s
+Display only stopped jobs.
+@end table
+
+If @var{jobspec} is given,
+output is restricted to information about that job. 
+If @var{jobspec} is not supplied, the status of all jobs is
+listed.
+
+If the @option{-x} option is supplied, @code{jobs} replaces any
+@var{jobspec} found in @var{command} or @var{arguments} with the
+corresponding process group @sc{id}, and executes @var{command},
+passing it @var{argument}s, returning its exit status. 
+
+@item kill
+@btindex kill
+@example
+kill [-s @var{sigspec}] [-n @var{signum}] [-@var{sigspec}] @var{jobspec} or @var{pid}
+kill -l [@var{exit_status}]
+@end example
+
+Send a signal specified by @var{sigspec} or @var{signum} to the process
+named by job specification @var{jobspec} or process @sc{id} @var{pid}.
+@var{sigspec} is either a case-insensitive signal name such as
+@code{SIGINT} (with or without the @code{SIG} prefix)
+or a signal number; @var{signum} is a signal number.
+If @var{sigspec} and @var{signum} are not present, @code{SIGTERM} is used.
+The @option{-l} option lists the signal names.
+If any arguments are supplied when @option{-l} is given, the names of the
+signals corresponding to the arguments are listed, and the return status
+is zero.
+@var{exit_status} is a number specifying a signal number or the exit
+status of a process terminated by a signal.
+The return status is zero if at least one signal was successfully sent,
+or non-zero if an error occurs or an invalid option is encountered.
+
+@item wait
+@btindex wait
+@example
+wait [@var{jobspec} or @var{pid} @dots{}]
+@end example
+
+Wait until the child process specified by each process @sc{id} @var{pid}
+or job specification @var{jobspec} exits and return the exit status of the
+last command waited for.
+If a job spec is given, all processes in the job are waited for.
+If no arguments are given, all currently active child processes are
+waited for, and the return status is zero.
+If neither @var{jobspec} nor @var{pid} specifies an active child process
+of the shell, the return status is 127.
+
+@item disown
+@btindex disown
+@example
+disown [-ar] [-h] [@var{jobspec} @dots{}]
+@end example
+
+Without options, remove each @var{jobspec} from the table of
+active jobs.
+If the @option{-h} option is given, the job is not removed from the table,
+but is marked so that @code{SIGHUP} is not sent to the job if the shell
+receives a @code{SIGHUP}.
+If @var{jobspec} is not present, and neither the @option{-a} nor @option{-r}
+option is supplied, the current job is used.
+If no @var{jobspec} is supplied, the @option{-a} option means to remove or
+mark all jobs; the @option{-r} option without a @var{jobspec}
+argument restricts operation to running jobs.
+
+@item suspend
+@btindex suspend
+@example
+suspend [-f]
+@end example
+
+Suspend the execution of this shell until it receives a
+@code{SIGCONT} signal.
+A login shell cannot be suspended; the @option{-f}
+option can be used to override this and force the suspension.
+@end table
+
+When job control is not active, the @code{kill} and @code{wait}
+builtins do not accept @var{jobspec} arguments.  They must be
+supplied process @sc{id}s.
+
+@node Job Control Variables
+@section Job Control Variables
+
+@vtable @code
+
+@item auto_resume
+This variable controls how the shell interacts with the user and
+job control.  If this variable exists then single word simple
+commands without redirections are treated as candidates for resumption
+of an existing job.  There is no ambiguity allowed; if there is
+more than one job beginning with the string typed, then
+the most recently accessed job will be selected.
+The name of a stopped job, in this context, is the command line
+used to start it.  If this variable is set to the value @samp{exact},
+the string supplied must match the name of a stopped job exactly;
+if set to @samp{substring},
+the string supplied needs to match a substring of the name of a
+stopped job.  The @samp{substring} value provides functionality
+analogous to the @samp{%?} job @sc{id} (@pxref{Job Control Basics}).
+If set to any other value, the supplied string must
+be a prefix of a stopped job's name; this provides functionality
+analogous to the @samp{%} job @sc{id}.
+
+@end vtable
+
+@set readline-appendix
+@set history-appendix
+@cindex Readline, how to use
+@include rluser.texi
+@cindex History, how to use
+@include hsuser.texi
+@clear readline-appendix
+@clear history-appendix
+
+@node Installing Bash
+@chapter Installing Bash
+
+This chapter provides basic instructions for installing Bash on
+the various supported platforms.  The distribution supports the
+@sc{gnu} operating systems, nearly every version of Unix, and several
+non-Unix systems such as BeOS and Interix.
+Other independent ports exist for
+@sc{ms-dos}, @sc{os/2}, and Windows platforms.
+
+@menu
+* Basic Installation:: Installation instructions.
+* Compilers and Options::      How to set special options for various
+                               systems.
+* Compiling For Multiple Architectures::       How to compile Bash for more
+                                               than one kind of system from
+                                               the same source tree.
+* Installation Names:: How to set the various paths used by the installation.
+* Specifying the System Type:: How to configure Bash for a particular system.
+* Sharing Defaults::   How to share default configuration values among GNU
+                       programs.
+* Operation Controls:: Options recognized by the configuration program.
+* Optional Features::  How to enable and disable optional features when
+                       building Bash.
+@end menu
+
+@node Basic Installation
+@section Basic Installation
+@cindex installation
+@cindex configuration
+@cindex Bash installation
+@cindex Bash configuration
+
+These are installation instructions for Bash.
+
+The simplest way to compile Bash is:
+
+@enumerate
+@item
+@code{cd} to the directory containing the source code and type
+@samp{./configure} to configure Bash for your system.  If you're
+using @code{csh} on an old version of System V, you might need to
+type @samp{sh ./configure} instead to prevent @code{csh} from trying
+to execute @code{configure} itself.
+
+Running @code{configure} takes some time.
+While running, it prints messages telling which features it is
+checking for.
+
+@item
+Type @samp{make} to compile Bash and build the @code{bashbug} bug
+reporting script.
+
+@item
+Optionally, type @samp{make tests} to run the Bash test suite.
+
+@item
+Type @samp{make install} to install @code{bash} and @code{bashbug}.
+This will also install the manual pages and Info file.
+
+@end enumerate
+
+The @code{configure} shell script attempts to guess correct
+values for various system-dependent variables used during
+compilation.  It uses those values to create a @file{Makefile} in
+each directory of the package (the top directory, the
+@file{builtins}, @file{doc}, and @file{support} directories,
+each directory under @file{lib}, and several others).  It also creates a
+@file{config.h} file containing system-dependent definitions. 
+Finally, it creates a shell script named @code{config.status} that you
+can run in the future to recreate the current configuration, a
+file @file{config.cache} that saves the results of its tests to
+speed up reconfiguring, and a file @file{config.log} containing
+compiler output (useful mainly for debugging @code{configure}). 
+If at some point
+@file{config.cache} contains results you don't want to keep, you
+may remove or edit it. 
+
+To find out more about the options and arguments that the
+@code{configure} script understands, type 
+
+@example
+bash-2.04$ ./configure --help
+@end example
+
+@noindent
+at the Bash prompt in your Bash source directory.
+
+If you need to do unusual things to compile Bash, please
+try to figure out how @code{configure} could check whether or not
+to do them, and mail diffs or instructions to
+@email{bash-maintainers@@gnu.org} so they can be
+considered for the next release.
+
+The file @file{configure.in} is used to create @code{configure}
+by a program called Autoconf.  You only need
+@file{configure.in} if you want to change it or regenerate
+@code{configure} using a newer version of Autoconf.  If
+you do this, make sure you are using Autoconf version 2.50 or
+newer.
+
+You can remove the program binaries and object files from the
+source code directory by typing @samp{make clean}.  To also remove the
+files that @code{configure} created (so you can compile Bash for
+a different kind of computer), type @samp{make distclean}.
+
+@node Compilers and Options
+@section Compilers and Options
+
+Some systems require unusual options for compilation or linking
+that the @code{configure} script does not know about.  You can
+give @code{configure} initial values for variables by setting
+them in the environment.  Using a Bourne-compatible shell, you
+can do that on the command line like this:
+
+@example
+CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+@end example
+
+On systems that have the @code{env} program, you can do it like this:
+
+@example
+env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+@end example
+
+The configuration process uses GCC to build Bash if it
+is available.
+
+@node Compiling For Multiple Architectures
+@section Compiling For Multiple Architectures
+
+You can compile Bash for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of @code{make} that
+supports the @code{VPATH} variable, such as GNU @code{make}.
+@code{cd} to the
+directory where you want the object files and executables to go and run
+the @code{configure} script from the source directory.  You may need to
+supply the @option{--srcdir=PATH} argument to tell @code{configure} where the
+source files are.  @code{configure} automatically checks for the
+source code in the directory that @code{configure} is in and in `..'.
+
+If you have to use a @code{make} that does not supports the @code{VPATH}
+variable, you can compile Bash for one architecture at a
+time in the source code directory.  After you have installed
+Bash for one architecture, use @samp{make distclean} before
+reconfiguring for another architecture.
+
+Alternatively, if your system supports symbolic links, you can use the
+@file{support/mkclone} script to create a build tree which has
+symbolic links back to each file in the source directory.  Here's an
+example that creates a build directory in the current directory from a
+source directory @file{/usr/gnu/src/bash-2.0}:
+
+@example
+bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
+@end example
+
+@noindent
+The @code{mkclone} script requires Bash, so you must have already built
+Bash for at least one architecture before you can create build
+directories for other architectures.
+
+@node Installation Names
+@section Installation Names
+
+By default, @samp{make install} will install into
+@file{/usr/local/bin}, @file{/usr/local/man}, etc.  You can
+specify an installation prefix other than @file{/usr/local} by
+giving @code{configure} the option @option{--prefix=@var{PATH}},
+or by specifying a value for the @code{DESTDIR} @samp{make}
+variable when running @samp{make install}.
+
+You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. 
+If you give @code{configure} the option
+@option{--exec-prefix=@var{PATH}}, @samp{make install} will use
+@var{PATH} as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix. 
+
+@node Specifying the System Type
+@section Specifying the System Type
+
+There may be some features @code{configure} can not figure out
+automatically, but need to determine by the type of host Bash
+will run on.  Usually @code{configure} can figure that
+out, but if it prints a message saying it can not guess the host
+type, give it the @option{--host=TYPE} option.  @samp{TYPE} can
+either be a short name for the system type, such as @samp{sun4},
+or a canonical name with three fields: @samp{CPU-COMPANY-SYSTEM}
+(e.g., @samp{i386-unknown-freebsd4.2}).
+
+See the file @file{support/config.sub} for the possible
+values of each field. 
+
+@node Sharing Defaults
+@section Sharing Defaults
+
+If you want to set default values for @code{configure} scripts to
+share, you can create a site shell script called
+@code{config.site} that gives default values for variables like
+@code{CC}, @code{cache_file}, and @code{prefix}.  @code{configure}
+looks for @file{PREFIX/share/config.site} if it exists, then
+@file{PREFIX/etc/config.site} if it exists.  Or, you can set the
+@code{CONFIG_SITE} environment variable to the location of the site
+script.  A warning: the Bash @code{configure} looks for a site script,
+but not all @code{configure} scripts do.
+
+@node Operation Controls
+@section Operation Controls
+
+@code{configure} recognizes the following options to control how it
+operates.
+
+@table @code
+
+@item --cache-file=@var{file}
+Use and save the results of the tests in
+@var{file} instead of @file{./config.cache}.  Set @var{file} to
+@file{/dev/null} to disable caching, for debugging
+@code{configure}. 
+
+@item --help
+Print a summary of the options to @code{configure}, and exit.
+
+@item --quiet
+@itemx --silent
+@itemx -q
+Do not print messages saying which checks are being made.
+
+@item --srcdir=@var{dir}
+Look for the Bash source code in directory @var{dir}.  Usually
+@code{configure} can determine that directory automatically.
+
+@item --version
+Print the version of Autoconf used to generate the @code{configure}
+script, and exit.
+@end table
+
+@code{configure} also accepts some other, not widely used, boilerplate
+options.  @samp{configure --help} prints the complete list.
+
+@node Optional Features
+@section Optional Features
+
+The Bash @code{configure} has a number of @option{--enable-@var{feature}}
+options, where @var{feature} indicates an optional part of Bash.
+There are also several @option{--with-@var{package}} options,
+where @var{package} is something like @samp{bash-malloc} or @samp{purify}.
+To turn off the default use of a package, use
+@option{--without-@var{package}}.  To configure Bash without a feature
+that is enabled by default, use @option{--disable-@var{feature}}.
+
+Here is a complete list of the @option{--enable-} and
+@option{--with-} options that the Bash @code{configure} recognizes. 
+
+@table @code
+@item --with-afs
+Define if you are using the Andrew File System from Transarc.
+
+@item --with-bash-malloc
+Use the Bash version of
+@code{malloc} in the directory @file{lib/malloc}.  This is not the same
+@code{malloc} that appears in @sc{gnu} libc, but an older version
+originally derived from the 4.2 @sc{bsd} @code{malloc}.  This @code{malloc}
+is very fast, but wastes some space on each allocation.
+This option is enabled by default.
+The @file{NOTES} file contains a list of systems for
+which this should be turned off, and @code{configure} disables this
+option automatically for a number of systems.
+
+@item --with-curses
+Use the curses library instead of the termcap library.  This should
+be supplied if your system has an inadequate or incomplete termcap
+database.
+
+@item --with-gnu-malloc
+A synonym for @code{--with-bash-malloc}.
+
+@item --with-installed-readline[=@var{PREFIX}]
+Define this to make Bash link with a locally-installed version of Readline
+rather than the version in @file{lib/readline}.  This works only with
+Readline 5.0 and later versions.  If @var{PREFIX} is @code{yes} or not
+supplied, @code{configure} uses the values of the make variables
+@code{includedir} and @code{libdir}, which are subdirectories of @code{prefix}
+by default, to find the installed version of Readline if it is not in
+the standard system include and library directories.
+If @var{PREFIX} is @code{no}, Bash links with the version in
+@file{lib/readline}.
+If @var{PREFIX} is set to any other value, @code{configure} treats it as
+a directory pathname and looks for
+the installed version of Readline in subdirectories of that directory
+(include files in @var{PREFIX}/@code{include} and the library in
+@var{PREFIX}/@code{lib}).
+
+@item --with-purify
+Define this to use the Purify memory allocation checker from Rational
+Software.
+
+@item --enable-minimal-config
+This produces a shell with minimal features, close to the historical
+Bourne shell.
+@end table
+
+There are several @option{--enable-} options that alter how Bash is
+compiled and linked, rather than changing run-time features.
+
+@table @code
+@item --enable-largefile
+Enable support for @uref{http://www.sas.com/standards/large_file/x_open.20Mar96.html,
+large files} if the operating system requires special compiler options
+to build programs which can access large files.  This is enabled by
+default, if the operating system provides large file support.
+
+@item --enable-profiling
+This builds a Bash binary that produces profiling information to be
+processed by @code{gprof} each time it is executed.
+
+@item --enable-static-link
+This causes Bash to be linked statically, if @code{gcc} is being used.
+This could be used to build a version to use as root's shell.
+@end table
+
+The @samp{minimal-config} option can be used to disable all of
+the following options, but it is processed first, so individual
+options may be enabled using @samp{enable-@var{feature}}. 
+
+All of the following options except for @samp{disabled-builtins} and
+@samp{xpg-echo-default} are
+enabled by default, unless the operating system does not provide the
+necessary support.
+
+@table @code
+@item --enable-alias
+Allow alias expansion and include the @code{alias} and @code{unalias}
+builtins (@pxref{Aliases}).
+
+@item --enable-arith-for-command
+Include support for the alternate form of the @code{for} command
+that behaves like the C language @code{for} statement
+(@pxref{Looping Constructs}).
+
+@item --enable-array-variables
+Include support for one-dimensional array shell variables
+(@pxref{Arrays}).
+
+@item --enable-bang-history
+Include support for @code{csh}-like history substitution
+(@pxref{History Interaction}).
+
+@item --enable-brace-expansion
+Include @code{csh}-like brace expansion
+( @code{b@{a,b@}c} @expansion{} @code{bac bbc} ).
+See @ref{Brace Expansion}, for a complete description.
+
+@item --enable-casemod-attributes
+Include support for case-modifying attributes in the @code{declare} builtin
+and assignment statements.  Variables with the @var{uppercase} attribute,
+for example, will have their values converted to uppercase upon assignment.
+
+@item --enable-casemod-expansion
+Include support for case-modifying word expansions.
+
+@item --enable-command-timing
+Include support for recognizing @code{time} as a reserved word and for
+displaying timing statistics for the pipeline following @code{time}
+(@pxref{Pipelines}).
+This allows pipelines as well as shell builtins and functions to be timed.
+
+@item --enable-cond-command
+Include support for the @code{[[} conditional command.
+(@pxref{Conditional Constructs}).
+
+@item --enable-cond-regexp
+Include support for matching @sc{posix} regular expressions using the
+@samp{=~} binary operator in the @code{[[} conditional command.
+(@pxref{Conditional Constructs}).
+
+@item --enable-coprocesses
+Include support for coprocesses and the @code{coproc} reserved word
+(@pxref{Pipelines}).
+
+@item --enable-debugger
+Include support for the bash debugger (distributed separately).
+
+@item --enable-directory-stack
+Include support for a @code{csh}-like directory stack and the
+@code{pushd}, @code{popd}, and @code{dirs} builtins
+(@pxref{The Directory Stack}).
+
+@item --enable-disabled-builtins
+Allow builtin commands to be invoked via @samp{builtin xxx}
+even after @code{xxx} has been disabled using @samp{enable -n xxx}.
+See @ref{Bash Builtins}, for details of the @code{builtin} and
+@code{enable} builtin commands.
+
+@item --enable-dparen-arithmetic
+Include support for the @code{((@dots{}))} command
+(@pxref{Conditional Constructs}).
+
+@item --enable-extended-glob
+Include support for the extended pattern matching features described
+above under @ref{Pattern Matching}.
+
+@item --enable-extended-glob-default
+Set the default value of the @var{extglob} shell option described
+above under @ref{The Shopt Builtin} to be enabled.
+
+@item --enable-help-builtin
+Include the @code{help} builtin, which displays help on shell builtins and
+variables (@pxref{Bash Builtins}).
+
+@item --enable-history
+Include command history and the @code{fc} and @code{history}
+builtin commands (@pxref{Bash History Facilities}).
+
+@item --enable-job-control
+This enables the job control features (@pxref{Job Control}),
+if the operating system supports them.
+
+@item --enable-multibyte
+This enables support for multibyte characters if the operating
+system provides the necessary support.
+
+@item --enable-net-redirections
+This enables the special handling of filenames of the form
+@code{/dev/tcp/@var{host}/@var{port}} and
+@code{/dev/udp/@var{host}/@var{port}}
+when used in redirections (@pxref{Redirections}).
+
+@item --enable-process-substitution
+This enables process substitution (@pxref{Process Substitution}) if
+the operating system provides the necessary support.
+
+@item --enable-progcomp
+Enable the programmable completion facilities
+(@pxref{Programmable Completion}).
+If Readline is not enabled, this option has no effect.
+
+@item --enable-prompt-string-decoding
+Turn on the interpretation of a number of backslash-escaped characters
+in the @env{$PS1}, @env{$PS2}, @env{$PS3}, and @env{$PS4} prompt
+strings.  See @ref{Controlling the Prompt}, for a complete list of prompt
+string escape sequences.
+
+@item --enable-readline
+Include support for command-line editing and history with the Bash
+version of the Readline library (@pxref{Command Line Editing}).
+
+@item --enable-restricted
+Include support for a @dfn{restricted shell}.  If this is enabled, Bash,
+when called as @code{rbash}, enters a restricted mode.  See
+@ref{The Restricted Shell}, for a description of restricted mode.
+
+@item --enable-select
+Include the @code{select} compound command, which allows the generation of
+simple menus (@pxref{Conditional Constructs}).
+
+@item --enable-separate-helpfiles
+Use external files for the documentation displayed by the @code{help} builtin
+instead of storing the text internally.
+
+@item --enable-single-help-strings
+Store the text displayed by the @code{help} builtin as a single string for
+each help topic.  This aids in translating the text to different languages.
+You may need to disable this if your compiler cannot handle very long string
+literals.
+
+@item --enable-strict-posix-default
+Make Bash @sc{posix}-conformant by default (@pxref{Bash POSIX Mode}).
+
+@item --enable-usg-echo-default
+A synonym for @code{--enable-xpg-echo-default}.
+
+@item --enable-xpg-echo-default
+Make the @code{echo} builtin expand backslash-escaped characters by default,
+without requiring the @option{-e} option.
+This sets the default value of the @code{xpg_echo} shell option to @code{on},
+which makes the Bash @code{echo} behave more like the version specified in
+the Single Unix Specification, version 3.
+@xref{Bash Builtins}, for a description of the escape sequences that
+@code{echo} recognizes.
+@end table
+
+The file @file{config-top.h} contains C Preprocessor
+@samp{#define} statements for options which are not settable from
+@code{configure}.
+Some of these are not meant to be changed; beware of the consequences if
+you do.
+Read the comments associated with each definition for more
+information about its effect.
+
+@node Reporting Bugs
+@appendix Reporting Bugs
+
+Please report all bugs you find in Bash.
+But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of Bash.
+The latest version of Bash is always available for FTP from
+@uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
+
+Once you have determined that a bug actually exists, use the
+@code{bashbug} command to submit a bug report.
+If you have a fix, you are encouraged to mail that as well!
+Suggestions and `philosophical' bug reports may be mailed
+to @email{bug-bash@@gnu.org} or posted to the Usenet
+newsgroup @code{gnu.bash.bug}.
+
+All bug reports should include:
+@itemize @bullet
+@item
+The version number of Bash.
+@item
+The hardware and operating system.
+@item
+The compiler used to compile Bash.
+@item
+A description of the bug behaviour.
+@item
+A short script or `recipe' which exercises the bug and may be used
+to reproduce it.
+@end itemize
+
+@noindent
+@code{bashbug} inserts the first three items automatically into
+the template it provides for filing a bug report.
+
+Please send all reports concerning this manual to
+@email{chet.ramey@@case.edu}.
+
+@node Major Differences From The Bourne Shell
+@appendix Major Differences From The Bourne Shell
+
+Bash implements essentially the same grammar, parameter and
+variable expansion, redirection, and quoting as the Bourne Shell. 
+Bash uses the @sc{posix} standard as the specification of
+how these features are to be implemented.  There are some
+differences between the traditional Bourne shell and Bash; this
+section quickly details the differences of significance.  A
+number of these differences are explained in greater depth in
+previous sections.
+This section uses the version of @code{sh} included in SVR4.2 (the
+last version of the historical Bourne shell) as the baseline reference.
+
+@itemize @bullet
+
+@item
+Bash is @sc{posix}-conformant, even where the @sc{posix} specification
+differs from traditional @code{sh} behavior (@pxref{Bash POSIX Mode}).
+
+@item
+Bash has multi-character invocation options (@pxref{Invoking Bash}).
+
+@item
+Bash has command-line editing (@pxref{Command Line Editing}) and
+the @code{bind} builtin.
+
+@item
+Bash provides a programmable word completion mechanism
+(@pxref{Programmable Completion}), and builtin commands
+@code{complete}, @code{compgen}, and @code{compopt}, to
+manipulate it.
+
+@item
+Bash has command history (@pxref{Bash History Facilities}) and the
+@code{history} and @code{fc} builtins to manipulate it.
+The Bash history list maintains timestamp information and uses the
+value of the @code{HISTTIMEFORMAT} variable to display it.
+
+@item
+Bash implements @code{csh}-like history expansion
+(@pxref{History Interaction}).
+
+@item
+Bash has one-dimensional array variables (@pxref{Arrays}), and the
+appropriate variable expansions and assignment syntax to use them.
+Several of the Bash builtins take options to act on arrays.
+Bash provides a number of built-in array variables.
+
+@item
+The @code{$'@dots{}'} quoting syntax, which expands ANSI-C
+backslash-escaped characters in the text between the single quotes,
+is supported (@pxref{ANSI-C Quoting}).
+
+@item
+Bash supports the @code{$"@dots{}"} quoting syntax to do
+locale-specific translation of the characters between the double
+quotes.  The @option{-D}, @option{--dump-strings}, and @option{--dump-po-strings}
+invocation options list the translatable strings found in a script
+(@pxref{Locale Translation}).
+
+@item
+Bash implements the @code{!} keyword to negate the return value of
+a pipeline (@pxref{Pipelines}).
+Very useful when an @code{if} statement needs to act only if a test fails.
+The Bash @samp{-o pipefail} option to @code{set} will cause a pipeline to
+return a failure status if any command fails.
+
+@item
+Bash has the @code{time} reserved word and command timing (@pxref{Pipelines}).
+The display of the timing statistics may be controlled with the
+@env{TIMEFORMAT} variable.
+
+@item
+Bash implements the @code{for (( @var{expr1} ; @var{expr2} ; @var{expr3} ))}
+arithmetic for command, similar to the C language (@pxref{Looping Constructs}).
+
+@item
+Bash includes the @code{select} compound command, which allows the
+generation of simple menus (@pxref{Conditional Constructs}).
+
+@item
+Bash includes the @code{[[} compound command, which makes conditional
+testing part of the shell grammar (@pxref{Conditional Constructs}), including
+optional regular expression matching.
+
+@item
+Bash provides optional case-insensitive matching for the @code{case} and
+@code{[[} constructs.
+
+@item
+Bash includes brace expansion (@pxref{Brace Expansion}) and tilde
+expansion (@pxref{Tilde Expansion}).
+
+@item
+Bash implements command aliases and the @code{alias} and @code{unalias}
+builtins (@pxref{Aliases}).
+
+@item
+Bash provides shell arithmetic, the @code{((} compound command
+(@pxref{Conditional Constructs}),
+and arithmetic expansion (@pxref{Shell Arithmetic}).
+
+@item
+Variables present in the shell's initial environment are automatically
+exported to child processes.  The Bourne shell does not normally do
+this unless the variables are explicitly marked using the @code{export}
+command.
+
+@item
+Bash supports the @samp{+=} assignment operator, which appends to the value
+of the variable named on the left hand side.
+
+@item
+Bash includes the @sc{posix} pattern removal @samp{%}, @samp{#}, @samp{%%}
+and @samp{##} expansions to remove leading or trailing substrings from
+variable values (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{#xx@}}, which returns the length of @code{$@{xx@}},
+is supported (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{var:}@var{offset}@code{[:}@var{length}@code{]@}},
+which expands to the substring of @code{var}'s value of length
+@var{length}, beginning at @var{offset}, is present
+(@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion
+@code{$@{var/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}},
+which matches @var{pattern} and replaces it with @var{replacement} in
+the value of @code{var}, is available (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{!@var{prefix}*@}} expansion, which expands to
+the names of all shell variables whose names begin with @var{prefix},
+is available (@pxref{Shell Parameter Expansion}).
+
+@item
+Bash has @var{indirect} variable expansion using @code{$@{!word@}}
+(@pxref{Shell Parameter Expansion}).
+
+@item
+Bash can expand positional parameters beyond @code{$9} using
+@code{$@{@var{num}@}}.
+
+@item
+The @sc{posix} @code{$()} form of command substitution
+is implemented (@pxref{Command Substitution}),
+and preferred to the Bourne shell's @code{``} (which
+is also implemented for backwards compatibility).
+
+@item
+Bash has process substitution (@pxref{Process Substitution}).
+
+@item
+Bash automatically assigns variables that provide information about the
+current user (@env{UID}, @env{EUID}, and @env{GROUPS}), the current host
+(@env{HOSTTYPE}, @env{OSTYPE}, @env{MACHTYPE}, and @env{HOSTNAME}),
+and the instance of Bash that is running (@env{BASH},
+@env{BASH_VERSION}, and @env{BASH_VERSINFO}).  @xref{Bash Variables},
+for details.
+
+@item
+The @env{IFS} variable is used to split only the results of expansion,
+not all words (@pxref{Word Splitting}).
+This closes a longstanding shell security hole.
+
+@item
+Bash implements the full set of @sc{posix} filename expansion operators,
+including @var{character classes}, @var{equivalence classes}, and
+@var{collating symbols} (@pxref{Filename Expansion}).
+
+@item
+Bash implements extended pattern matching features when the @code{extglob}
+shell option is enabled (@pxref{Pattern Matching}).
+
+@item
+It is possible to have a variable and a function with the same name;
+@code{sh} does not separate the two name spaces.
+
+@item
+Bash functions are permitted to have local variables using the
+@code{local} builtin, and thus useful recursive functions may be written
+(@pxref{Bash Builtins}).
+
+@item
+Variable assignments preceding commands affect only that command, even
+builtins and functions (@pxref{Environment}).
+In @code{sh}, all variable assignments 
+preceding commands are global unless the command is executed from the
+file system.
+
+@item
+Bash performs filename expansion on filenames specified as operands
+to input and output redirection operators (@pxref{Redirections}).
+
+@item
+Bash contains the @samp{<>} redirection operator, allowing a file to be
+opened for both reading and writing, and the @samp{&>} redirection
+operator, for directing standard output and standard error to the same
+file (@pxref{Redirections}).
+
+@item
+Bash includes the @samp{<<<} redirection operator, allowing a string to
+be used as the standard input to a command.
+
+@item
+Bash implements the @samp{[n]<&@var{word}} and @samp{[n]>&@var{word}}
+redirection operators, which move one file descriptor to another.
+
+@item
+Bash treats a number of filenames specially when they are
+used in redirection operators (@pxref{Redirections}).
+
+@item
+Bash can open network connections to arbitrary machines and services
+with the redirection operators (@pxref{Redirections}).
+
+@item
+The @code{noclobber} option is available to avoid overwriting existing
+files with output redirection (@pxref{The Set Builtin}).
+The @samp{>|} redirection operator may be used to override @code{noclobber}.
+
+@item
+The Bash @code{cd} and @code{pwd} builtins (@pxref{Bourne Shell Builtins})
+each take @option{-L} and @option{-P} options to switch between logical and
+physical modes.
+
+@item
+Bash allows a function to override a builtin with the same name, and provides
+access to that builtin's functionality within the function via the
+@code{builtin} and @code{command} builtins (@pxref{Bash Builtins}).
+
+@item
+The @code{command} builtin allows selective disabling of functions
+when command lookup is performed (@pxref{Bash Builtins}).
+
+@item
+Individual builtins may be enabled or disabled using the @code{enable}
+builtin (@pxref{Bash Builtins}).
+
+@item
+The Bash @code{exec} builtin takes additional options that allow users
+to control the contents of the environment passed to the executed
+command, and what the zeroth argument to the command is to be
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Shell functions may be exported to children via the environment
+using @code{export -f} (@pxref{Shell Functions}).
+
+@item
+The Bash @code{export}, @code{readonly}, and @code{declare} builtins can
+take a @option{-f} option to act on shell functions, a @option{-p} option to
+display variables with various attributes set in a format that can be
+used as shell input, a @option{-n} option to remove various variable
+attributes, and @samp{name=value} arguments to set variable attributes
+and values simultaneously.
+
+@item
+The Bash @code{hash} builtin allows a name to be associated with
+an arbitrary filename, even when that filename cannot be found by
+searching the @env{$PATH}, using @samp{hash -p}
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Bash includes a @code{help} builtin for quick reference to shell
+facilities (@pxref{Bash Builtins}).
+
+@item
+The @code{printf} builtin is available to display formatted output
+(@pxref{Bash Builtins}).
+
+@item
+The Bash @code{read} builtin (@pxref{Bash Builtins})
+will read a line ending in @samp{\} with
+the @option{-r} option, and will use the @env{REPLY} variable as a
+default if no non-option arguments are supplied.
+The Bash @code{read} builtin
+also accepts a prompt string with the @option{-p} option and will use
+Readline to obtain the line when given the @option{-e} option.
+The @code{read} builtin also has additional options to control input:
+the @option{-s} option will turn off echoing of input characters as
+they are read, the @option{-t} option will allow @code{read} to time out
+if input does not arrive within a specified number of seconds, the
+@option{-n} option will allow reading only a specified number of
+characters rather than a full line, and the @option{-d} option will read
+until a particular character rather than newline.
+
+@item
+The @code{return} builtin may be used to abort execution of scripts
+executed with the @code{.} or @code{source} builtins
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Bash includes the @code{shopt} builtin, for finer control of shell
+optional capabilities (@pxref{The Shopt Builtin}), and allows these options
+to be set and unset at shell invocation (@pxref{Invoking Bash}).
+
+@item
+Bash has much more optional behavior controllable with the @code{set}
+builtin (@pxref{The Set Builtin}).
+
+@item
+The @samp{-x} (@option{xtrace}) option displays commands other than
+simple commands when performing an execution trace
+(@pxref{The Set Builtin}).
+
+@item
+The @code{test} builtin (@pxref{Bourne Shell Builtins})
+is slightly different, as it implements the @sc{posix} algorithm,
+which specifies the behavior based on the number of arguments.
+
+@item
+Bash includes the @code{caller} builtin, which displays the context of
+any active subroutine call (a shell function or a script executed with
+the @code{.} or @code{source} builtins).  This supports the bash
+debugger.
+
+@item
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a
+@code{DEBUG} pseudo-signal specification, similar to @code{EXIT}.
+Commands specified with a @code{DEBUG} trap are executed before every
+simple command, @code{for} command, @code{case} command,
+@code{select} command, every arithmetic @code{for} command, and before
+the first command executes in a shell function.
+The @code{DEBUG} trap is not inherited by shell functions unless the
+function has been given the @code{trace} attribute or the
+@code{functrace} option has been enabled using the @code{shopt} builtin.
+The @code{extdebug} shell option has additional effects on the
+@code{DEBUG} trap.
+
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows an
+@code{ERR} pseudo-signal specification, similar to @code{EXIT} and @code{DEBUG}.
+Commands specified with an @code{ERR} trap are executed after a simple
+command fails, with a few exceptions.
+The @code{ERR} trap is not inherited by shell functions unless the
+@code{-o errtrace} option to the @code{set} builtin is enabled.
+
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a
+@code{RETURN} pseudo-signal specification, similar to
+@code{EXIT} and @code{DEBUG}.
+Commands specified with an @code{RETURN} trap are executed before
+execution resumes after a shell function or a shell script executed with
+@code{.} or @code{source} returns.
+The @code{RETURN} trap is not inherited by shell functions unless the
+function has been given the @code{trace} attribute or the
+@code{functrace} option has been enabled using the @code{shopt} builtin.
+
+@item
+The Bash @code{type} builtin is more extensive and gives more information
+about the names it finds (@pxref{Bash Builtins}).
+
+@item
+The Bash @code{umask} builtin permits a @option{-p} option to cause
+the output to be displayed in the form of a @code{umask} command
+that may be reused as input (@pxref{Bourne Shell Builtins}).
+
+@item
+Bash implements a @code{csh}-like directory stack, and provides the
+@code{pushd}, @code{popd}, and @code{dirs} builtins to manipulate it
+(@pxref{The Directory Stack}).
+Bash also makes the directory stack visible as the value of the
+@env{DIRSTACK} shell variable.
+
+@item
+Bash interprets special backslash-escaped characters in the prompt
+strings when interactive (@pxref{Controlling the Prompt}).
+
+@item
+The Bash restricted mode is more useful (@pxref{The Restricted Shell});
+the SVR4.2 shell restricted mode is too limited.
+
+@item
+The @code{disown} builtin can remove a job from the internal shell
+job table (@pxref{Job Control Builtins}) or suppress the sending
+of @code{SIGHUP} to a job when the shell exits as the result of a
+@code{SIGHUP}.
+
+@item
+Bash includes a number of features to support a separate debugger for
+shell scripts.
+
+@item
+The SVR4.2 shell has two privilege-related builtins
+(@code{mldmode} and @code{priv}) not present in Bash.
+
+@item
+Bash does not have the @code{stop} or @code{newgrp} builtins.
+
+@item
+Bash does not use the @env{SHACCT} variable or perform shell accounting.
+
+@item
+The SVR4.2 @code{sh} uses a @env{TIMEOUT} variable like Bash uses
+@env{TMOUT}.
+
+@end itemize
+
+@noindent
+More features unique to Bash may be found in @ref{Bash Features}.
+
+
+@appendixsec Implementation Differences From The SVR4.2 Shell
+
+Since Bash is a completely new implementation, it does not suffer from
+many of the limitations of the SVR4.2 shell.  For instance:
+
+@itemize @bullet
+
+@item
+Bash does not fork a subshell when redirecting into or out of
+a shell control structure such as  an @code{if} or @code{while}
+statement.
+
+@item
+Bash does not allow unbalanced quotes.  The SVR4.2 shell will silently
+insert a needed closing quote at @code{EOF} under certain circumstances.
+This can be the cause of some hard-to-find errors.
+
+@item
+The SVR4.2 shell uses a baroque memory management scheme based on
+trapping @code{SIGSEGV}.  If the shell is started from a process with
+@code{SIGSEGV} blocked (e.g., by using the @code{system()} C library
+function call), it misbehaves badly.
+
+@item
+In a questionable attempt at security, the SVR4.2 shell,
+when invoked without the @option{-p} option, will alter its real
+and effective @sc{uid} and @sc{gid} if they are less than some
+magic threshold value, commonly 100.
+This can lead to unexpected results.
+
+@item
+The SVR4.2 shell does not allow users to trap @code{SIGSEGV},
+@code{SIGALRM}, or @code{SIGCHLD}.
+
+@item
+The SVR4.2 shell does not allow the @env{IFS}, @env{MAILCHECK},
+@env{PATH}, @env{PS1}, or @env{PS2} variables to be unset.
+
+@item
+The SVR4.2 shell treats @samp{^} as the undocumented equivalent of
+@samp{|}.
+
+@item
+Bash allows multiple option arguments when it is invoked (@code{-x -v});
+the SVR4.2 shell allows only one option argument (@code{-xv}).  In
+fact, some versions of the shell dump core if the second argument begins
+with a @samp{-}.
+
+@item
+The SVR4.2 shell exits a script if any builtin fails; Bash exits
+a script only if one of the @sc{posix} special builtins fails, and
+only for certain failures, as enumerated in the @sc{posix} standard.
+
+@item 
+The SVR4.2 shell behaves differently when invoked as @code{jsh}
+(it turns on job control).
+@end itemize
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@node Indexes
+@appendix Indexes
+
+@menu
+* Builtin Index::              Index of Bash builtin commands.
+* Reserved Word Index::                Index of Bash reserved words.
+* Variable Index::             Quick reference helps you find the
+                               variable you want.
+* Function Index::             Index of bindable Readline functions.
+* Concept Index::              General index for concepts described in
+                               this manual.
+@end menu
+
+@node Builtin Index
+@appendixsec Index of Shell Builtin Commands
+@printindex bt
+
+@node Reserved Word Index
+@appendixsec Index of Shell Reserved Words
+@printindex rw
+
+@node Variable Index
+@appendixsec Parameter and Variable Index
+@printindex vr
+
+@node Function Index
+@appendixsec Function Index
+@printindex fn
+
+@node Concept Index
+@appendixsec Concept Index
+@printindex cp
+
+@bye
index 34f4cfb9cc6d78e19428eb3b2154e852bdaa05b3..d48b06e622997aca31e611d7765420b1b9b260b7 100644 (file)
@@ -2,11 +2,11 @@
 Copyright (C) 1988-2012 Free Software Foundation, Inc.
 @end ignore
 
-@set LASTCHANGE Thu Jul  5 19:37:34 EDT 2012
+@set LASTCHANGE Sat Jul 14 14:31:17 EDT 2012
 
 @set EDITION 4.2
 @set VERSION 4.2
-@set UPDATED 5 July 2012
+@set UPDATED 14 July 2012
 @set UPDATED-MONTH July 2012
 
 
@@ -16,4 +16,3 @@ Copyright (C) 1988-2012 Free Software Foundation, Inc.
 
 
 
-
diff --git a/doc/version.texi~ b/doc/version.texi~
new file mode 100644 (file)
index 0000000..34f4cfb
--- /dev/null
@@ -0,0 +1,19 @@
+@ignore
+Copyright (C) 1988-2012 Free Software Foundation, Inc.
+@end ignore
+
+@set LASTCHANGE Thu Jul  5 19:37:34 EDT 2012
+
+@set EDITION 4.2
+@set VERSION 4.2
+@set UPDATED 5 July 2012
+@set UPDATED-MONTH July 2012
+
+
+
+
+
+
+
+
+
diff --git a/eval.c b/eval.c
index aaa61dd7297f1c9c085e79f746e744d856644ac3..ed7a1edd6e594afdc28ac7d7d32df116a1b86dea 100644 (file)
--- a/eval.c
+++ b/eval.c
@@ -81,6 +81,7 @@ reader_loop ()
       unlink_fifo_list ();
 #endif /* PROCESS_SUBSTITUTION */
 
+      /* XXX - why do we set this every time through the loop? */
       if (interactive_shell && signal_is_ignored (SIGINT) == 0)
        set_signal_handler (SIGINT, sigint_sighandler);
 
diff --git a/eval.c~ b/eval.c~
new file mode 100644 (file)
index 0000000..aaa61dd
--- /dev/null
+++ b/eval.c~
@@ -0,0 +1,283 @@
+/* eval.c -- reading and evaluating commands. */
+
+/* Copyright (C) 1996-2011 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#if defined (HAVE_UNISTD_H)
+#  ifdef _MINIX
+#    include <sys/types.h>
+#  endif
+#  include <unistd.h>
+#endif
+
+#include "bashansi.h"
+#include <stdio.h>
+
+#include "bashintl.h"
+
+#include "shell.h"
+#include "flags.h"
+#include "trap.h"
+
+#include "builtins/common.h"
+
+#include "input.h"
+#include "execute_cmd.h"
+
+#if defined (HISTORY)
+#  include "bashhist.h"
+#endif
+
+extern int EOF_reached;
+extern int indirection_level;
+extern int posixly_correct;
+extern int subshell_environment, running_under_emacs;
+extern int last_command_exit_value, stdin_redir;
+extern int need_here_doc;
+extern int current_command_number, current_command_line_count, line_number;
+extern int expand_aliases;
+
+static void send_pwd_to_eterm __P((void));
+static sighandler alrm_catcher __P((int));
+
+/* Read and execute commands until EOF is reached.  This assumes that
+   the input source has already been initialized. */
+int
+reader_loop ()
+{
+  int our_indirection_level;
+  COMMAND * volatile current_command;
+
+  USE_VAR(current_command);
+
+  current_command = (COMMAND *)NULL;
+
+  our_indirection_level = ++indirection_level;
+
+  while (EOF_Reached == 0)
+    {
+      int code;
+
+      code = setjmp (top_level);
+
+#if defined (PROCESS_SUBSTITUTION)
+      unlink_fifo_list ();
+#endif /* PROCESS_SUBSTITUTION */
+
+      if (interactive_shell && signal_is_ignored (SIGINT) == 0)
+       set_signal_handler (SIGINT, sigint_sighandler);
+
+      if (code != NOT_JUMPED)
+       {
+         indirection_level = our_indirection_level;
+
+         switch (code)
+           {
+             /* Some kind of throw to top_level has occured. */
+           case FORCE_EOF:
+           case ERREXIT:
+           case EXITPROG:
+             current_command = (COMMAND *)NULL;
+             if (exit_immediately_on_error)
+               variable_context = 0;   /* not in a function */
+             EOF_Reached = EOF;
+             goto exec_done;
+
+           case DISCARD:
+             /* Make sure the exit status is reset to a non-zero value, but
+                leave existing non-zero values (e.g., > 128 on signal)
+                alone. */
+             if (last_command_exit_value == 0)
+               last_command_exit_value = EXECUTION_FAILURE;
+             if (subshell_environment)
+               {
+                 current_command = (COMMAND *)NULL;
+                 EOF_Reached = EOF;
+                 goto exec_done;
+               }
+             /* Obstack free command elements, etc. */
+             if (current_command)
+               {
+                 dispose_command (current_command);
+                 current_command = (COMMAND *)NULL;
+               }
+             break;
+
+           default:
+             command_error ("reader_loop", CMDERR_BADJUMP, code, 0);
+           }
+       }
+
+      executing = 0;
+      if (temporary_env)
+       dispose_used_env_vars ();
+
+#if (defined (ultrix) && defined (mips)) || defined (C_ALLOCA)
+      /* Attempt to reclaim memory allocated with alloca (). */
+      (void) alloca (0);
+#endif
+
+      if (read_command () == 0)
+       {
+         if (interactive_shell == 0 && read_but_dont_execute)
+           {
+             last_command_exit_value = EXECUTION_SUCCESS;
+             dispose_command (global_command);
+             global_command = (COMMAND *)NULL;
+           }
+         else if (current_command = global_command)
+           {
+             global_command = (COMMAND *)NULL;
+             current_command_number++;
+
+             executing = 1;
+             stdin_redir = 0;
+             execute_command (current_command);
+
+           exec_done:
+             QUIT;
+
+             if (current_command)
+               {
+                 dispose_command (current_command);
+                 current_command = (COMMAND *)NULL;
+               }
+           }
+       }
+      else
+       {
+         /* Parse error, maybe discard rest of stream if not interactive. */
+         if (interactive == 0)
+           EOF_Reached = EOF;
+       }
+      if (just_one_command)
+       EOF_Reached = EOF;
+    }
+  indirection_level--;
+  return (last_command_exit_value);
+}
+
+static sighandler
+alrm_catcher(i)
+     int i;
+{
+  printf (_("\007timed out waiting for input: auto-logout\n"));
+  fflush (stdout);
+  bash_logout ();      /* run ~/.bash_logout if this is a login shell */
+  jump_to_top_level (EXITPROG);
+  SIGRETURN (0);
+}
+
+/* Send an escape sequence to emacs term mode to tell it the
+   current working directory. */
+static void
+send_pwd_to_eterm ()
+{
+  char *pwd, *f;
+
+  f = 0;
+  pwd = get_string_value ("PWD");
+  if (pwd == 0)
+    f = pwd = get_working_directory ("eterm");
+  fprintf (stderr, "\032/%s\n", pwd);
+  free (f);
+}
+
+/* Call the YACC-generated parser and return the status of the parse.
+   Input is read from the current input stream (bash_input).  yyparse
+   leaves the parsed command in the global variable GLOBAL_COMMAND.
+   This is where PROMPT_COMMAND is executed. */
+int
+parse_command ()
+{
+  int r;
+  char *command_to_execute;
+
+  need_here_doc = 0;
+  run_pending_traps ();
+
+  /* Allow the execution of a random command just before the printing
+     of each primary prompt.  If the shell variable PROMPT_COMMAND
+     is set then the value of it is the command to execute. */
+  if (interactive && bash_input.type != st_string)
+    {
+      command_to_execute = get_string_value ("PROMPT_COMMAND");
+      if (command_to_execute)
+       execute_variable_command (command_to_execute, "PROMPT_COMMAND");
+
+      if (running_under_emacs == 2)
+       send_pwd_to_eterm ();   /* Yuck */
+    }
+
+  current_command_line_count = 0;
+  r = yyparse ();
+
+  if (need_here_doc)
+    gather_here_documents ();
+
+  return (r);
+}
+
+/* Read and parse a command, returning the status of the parse.  The command
+   is left in the globval variable GLOBAL_COMMAND for use by reader_loop.
+   This is where the shell timeout code is executed. */
+int
+read_command ()
+{
+  SHELL_VAR *tmout_var;
+  int tmout_len, result;
+  SigHandler *old_alrm;
+
+  set_current_prompt_level (1);
+  global_command = (COMMAND *)NULL;
+
+  /* Only do timeouts if interactive. */
+  tmout_var = (SHELL_VAR *)NULL;
+  tmout_len = 0;
+  old_alrm = (SigHandler *)NULL;
+
+  if (interactive)
+    {
+      tmout_var = find_variable ("TMOUT");
+
+      if (tmout_var && var_isset (tmout_var))
+       {
+         tmout_len = atoi (value_cell (tmout_var));
+         if (tmout_len > 0)
+           {
+             old_alrm = set_signal_handler (SIGALRM, alrm_catcher);
+             alarm (tmout_len);
+           }
+       }
+    }
+
+  QUIT;
+
+  current_command_line_count = 0;
+  result = parse_command ();
+
+  if (interactive && tmout_var && (tmout_len > 0))
+    {
+      alarm(0);
+      set_signal_handler (SIGALRM, old_alrm);
+    }
+
+  return (result);
+}
index 438b311538c758e69d567cf8717284654863c044..68eb2b0d320bb2269c2312ce35df64e22c383b5a 100644 (file)
@@ -125,7 +125,11 @@ rl_callback_read_char ()
     }
 
   memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t));
+#if defined (HAVE_POSIX_SIGSETJMP)
+  jcode = sigsetjmp (_rl_top_level, 0);
+#else
   jcode = setjmp (_rl_top_level);
+#endif
   if (jcode)
     {
       (*rl_redisplay_function) ();
diff --git a/lib/readline/callback.c~ b/lib/readline/callback.c~
new file mode 100644 (file)
index 0000000..438b311
--- /dev/null
@@ -0,0 +1,289 @@
+/* callback.c -- functions to use readline as an X `callback' mechanism. */
+
+/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include "rlconf.h"
+
+#if defined (READLINE_CALLBACKS)
+
+#include <sys/types.h>
+
+#ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif
+
+#include <stdio.h>
+
+/* System-specific feature definitions and include files. */
+#include "rldefs.h"
+#include "readline.h"
+#include "rlprivate.h"
+#include "xmalloc.h"
+
+/* Private data for callback registration functions.  See comments in
+   rl_callback_read_char for more details. */
+_rl_callback_func_t *_rl_callback_func = 0;
+_rl_callback_generic_arg *_rl_callback_data = 0;
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Callback Readline Functions              */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Allow using readline in situations where a program may have multiple
+   things to handle at once, and dispatches them via select().  Call
+   rl_callback_handler_install() with the prompt and a function to call
+   whenever a complete line of input is ready.  The user must then
+   call rl_callback_read_char() every time some input is available, and 
+   rl_callback_read_char() will call the user's function with the complete
+   text read in at each end of line.  The terminal is kept prepped
+   all the time, except during calls to the user's function.  Signal
+   handlers are only installed when the application calls back into
+   readline, so readline doesn't `steal' signals from the application.  */
+
+rl_vcpfunc_t *rl_linefunc;             /* user callback function */
+static int in_handler;         /* terminal_prepped and signals set? */
+
+/* Make sure the terminal is set up, initialize readline, and prompt. */
+static void
+_rl_callback_newline ()
+{
+  rl_initialize ();
+
+  if (in_handler == 0)
+    {
+      in_handler = 1;
+
+      if (rl_prep_term_function)
+       (*rl_prep_term_function) (_rl_meta_flag);
+    }
+
+  readline_internal_setup ();
+  RL_CHECK_SIGNALS ();
+}
+
+/* Install a readline handler, set up the terminal, and issue the prompt. */
+void
+rl_callback_handler_install (prompt, linefunc)
+     const char *prompt;
+     rl_vcpfunc_t *linefunc;
+{
+  rl_set_prompt (prompt);
+  RL_SETSTATE (RL_STATE_CALLBACK);
+  rl_linefunc = linefunc;
+  _rl_callback_newline ();
+}
+
+#if defined (HANDLE_SIGNALS)
+#define CALLBACK_READ_RETURN() \
+  do { \
+    rl_clear_signals (); \
+    return; \
+  } while (0)
+#else
+#define CALLBACK_READ_RETURN() return
+#endif
+
+/* Read one character, and dispatch to the handler if it ends the line. */
+void
+rl_callback_read_char ()
+{
+  char *line;
+  int eof, jcode;
+  static procenv_t olevel;
+
+  if (rl_linefunc == NULL)
+    {
+      _rl_errmsg ("readline_callback_read_char() called with no handler!");
+      abort ();
+    }
+
+  memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t));
+  jcode = setjmp (_rl_top_level);
+  if (jcode)
+    {
+      (*rl_redisplay_function) ();
+      _rl_want_redisplay = 0;
+      memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t));
+      CALLBACK_READ_RETURN ();
+    }
+
+#if defined (HANDLE_SIGNALS)
+  /* Install signal handlers only when readline has control. */
+  rl_set_signals ();
+#endif
+
+  do
+    {
+      RL_CHECK_SIGNALS ();
+      if  (RL_ISSTATE (RL_STATE_ISEARCH))
+       {
+         eof = _rl_isearch_callback (_rl_iscxt);
+         if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING))
+           rl_callback_read_char ();
+
+         CALLBACK_READ_RETURN ();
+       }
+      else if  (RL_ISSTATE (RL_STATE_NSEARCH))
+       {
+         eof = _rl_nsearch_callback (_rl_nscxt);
+
+         CALLBACK_READ_RETURN ();
+       }
+#if defined (VI_MODE)
+      else if (RL_ISSTATE (RL_STATE_VIMOTION))
+       {
+         eof = _rl_vi_domove_callback (_rl_vimvcxt);
+         /* Should handle everything, including cleanup, numeric arguments,
+            and turning off RL_STATE_VIMOTION */
+         if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
+           _rl_internal_char_cleanup ();
+
+         CALLBACK_READ_RETURN ();
+       }
+#endif
+      else if (RL_ISSTATE (RL_STATE_NUMERICARG))
+       {
+         eof = _rl_arg_callback (_rl_argcxt);
+         if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING))
+           rl_callback_read_char ();
+         /* XXX - this should handle _rl_last_command_was_kill better */
+         else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
+           _rl_internal_char_cleanup ();
+
+         CALLBACK_READ_RETURN ();
+       }
+      else if (RL_ISSTATE (RL_STATE_MULTIKEY))
+       {
+         eof = _rl_dispatch_callback (_rl_kscxt);      /* For now */
+         while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED))
+           eof = _rl_dispatch_callback (_rl_kscxt);
+         if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0)
+           {
+             _rl_internal_char_cleanup ();
+             _rl_want_redisplay = 1;
+           }
+       }
+      else if (_rl_callback_func)
+       {
+         /* This allows functions that simply need to read an additional
+            character (like quoted-insert) to register a function to be
+            called when input is available.  _rl_callback_data is simply a
+            pointer to a struct that has the argument count originally
+            passed to the registering function and space for any additional
+            parameters.  */
+         eof = (*_rl_callback_func) (_rl_callback_data);
+         /* If the function `deregisters' itself, make sure the data is
+            cleaned up. */
+         if (_rl_callback_func == 0)
+           {
+             if (_rl_callback_data)    
+               {
+                 _rl_callback_data_dispose (_rl_callback_data);
+                 _rl_callback_data = 0;
+               }
+             _rl_internal_char_cleanup ();
+           }
+       }
+      else
+       eof = readline_internal_char ();
+
+      RL_CHECK_SIGNALS ();
+      if (rl_done == 0 && _rl_want_redisplay)
+       {
+         (*rl_redisplay_function) ();
+         _rl_want_redisplay = 0;
+       }
+
+      if (rl_done)
+       {
+         line = readline_internal_teardown (eof);
+
+         if (rl_deprep_term_function)
+           (*rl_deprep_term_function) ();
+#if defined (HANDLE_SIGNALS)
+         rl_clear_signals ();
+#endif
+         in_handler = 0;
+         (*rl_linefunc) (line);
+
+         /* If the user did not clear out the line, do it for him. */
+         if (rl_line_buffer[0])
+           _rl_init_line_state ();
+
+         /* Redisplay the prompt if readline_handler_{install,remove}
+            not called. */
+         if (in_handler == 0 && rl_linefunc)
+           _rl_callback_newline ();
+       }
+    }
+  while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT));
+
+  CALLBACK_READ_RETURN ();
+}
+
+/* Remove the handler, and make sure the terminal is in its normal state. */
+void
+rl_callback_handler_remove ()
+{
+  rl_linefunc = NULL;
+  RL_UNSETSTATE (RL_STATE_CALLBACK);
+  RL_CHECK_SIGNALS ();
+  if (in_handler)
+    {
+      in_handler = 0;
+      if (rl_deprep_term_function)
+       (*rl_deprep_term_function) ();
+#if defined (HANDLE_SIGNALS)
+      rl_clear_signals ();
+#endif
+    }
+}
+
+_rl_callback_generic_arg *
+_rl_callback_data_alloc (count)
+     int count;
+{
+  _rl_callback_generic_arg *arg;
+
+  arg = (_rl_callback_generic_arg *)xmalloc (sizeof (_rl_callback_generic_arg));
+  arg->count = count;
+
+  arg->i1 = arg->i2 = 0;
+
+  return arg;
+}
+
+void _rl_callback_data_dispose (arg)
+     _rl_callback_generic_arg *arg;
+{
+  xfree (arg);
+}
+
+#endif
index aa89ec4f22b4f7e1b0349240790baff9c902d53f..393694ba9afece3289306dad98a1cc20e8b4dde8 100644 (file)
@@ -523,7 +523,11 @@ readline_internal_charloop ()
 #endif
       lk = _rl_last_command_was_kill;
 
+#if defined (HAVE_POSIX_SIGSETJMP)
+      code = sigsetjmp (_rl_top_level, 0);
+#else
       code = setjmp (_rl_top_level);
+#endif
 
       if (code)
        {
diff --git a/lib/readline/readline.c~ b/lib/readline/readline.c~
new file mode 100644 (file)
index 0000000..aa89ec4
--- /dev/null
@@ -0,0 +1,1317 @@
+/* readline.c -- a general facility for reading lines of input
+   with emacs style editing and completion. */
+
+/* Copyright (C) 1987-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include "posixstat.h"
+#include <fcntl.h>
+#if defined (HAVE_SYS_FILE_H)
+#  include <sys/file.h>
+#endif /* HAVE_SYS_FILE_H */
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#if defined (HAVE_STDLIB_H)
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif /* HAVE_STDLIB_H */
+
+#if defined (HAVE_LOCALE_H)
+#  include <locale.h>
+#endif
+
+#include <stdio.h>
+#include "posixjmp.h"
+#include <errno.h>
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+/* System-specific feature definitions and include files. */
+#include "rldefs.h"
+#include "rlmbutil.h"
+
+#if defined (__EMX__)
+#  define INCL_DOSPROCESS
+#  include <os2.h>
+#endif /* __EMX__ */
+
+/* Some standard library routines. */
+#include "readline.h"
+#include "history.h"
+
+#include "rlprivate.h"
+#include "rlshell.h"
+#include "xmalloc.h"
+
+#ifndef RL_LIBRARY_VERSION
+#  define RL_LIBRARY_VERSION "5.1"
+#endif
+
+#ifndef RL_READLINE_VERSION
+#  define RL_READLINE_VERSION  0x0501
+#endif
+
+extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
+
+/* Forward declarations used in this file. */
+static char *readline_internal PARAMS((void));
+static void readline_initialize_everything PARAMS((void));
+
+static void bind_arrow_keys_internal PARAMS((Keymap));
+static void bind_arrow_keys PARAMS((void));
+
+static void readline_default_bindings PARAMS((void));
+static void reset_default_bindings PARAMS((void));
+
+static int _rl_subseq_result PARAMS((int, Keymap, int, int));
+static int _rl_subseq_getchar PARAMS((int));
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Line editing input utility                  */
+/*                                                                 */
+/* **************************************************************** */
+
+const char *rl_library_version = RL_LIBRARY_VERSION;
+
+int rl_readline_version = RL_READLINE_VERSION;
+
+/* True if this is `real' readline as opposed to some stub substitute. */
+int rl_gnu_readline_p = 1;
+
+/* A pointer to the keymap that is currently in use.
+   By default, it is the standard emacs keymap. */
+Keymap _rl_keymap = emacs_standard_keymap;
+
+/* The current style of editing. */
+int rl_editing_mode = emacs_mode;
+
+/* The current insert mode:  input (the default) or overwrite */
+int rl_insert_mode = RL_IM_DEFAULT;
+
+/* Non-zero if we called this function from _rl_dispatch().  It's present
+   so functions can find out whether they were called from a key binding
+   or directly from an application. */
+int rl_dispatching;
+
+/* Non-zero if the previous command was a kill command. */
+int _rl_last_command_was_kill = 0;
+
+/* The current value of the numeric argument specified by the user. */
+int rl_numeric_arg = 1;
+
+/* Non-zero if an argument was typed. */
+int rl_explicit_arg = 0;
+
+/* Temporary value used while generating the argument. */
+int rl_arg_sign = 1;
+
+/* Non-zero means we have been called at least once before. */
+static int rl_initialized;
+
+#if 0
+/* If non-zero, this program is running in an EMACS buffer. */
+static int running_in_emacs;
+#endif
+
+/* Flags word encapsulating the current readline state. */
+int rl_readline_state = RL_STATE_NONE;
+
+/* The current offset in the current input line. */
+int rl_point;
+
+/* Mark in the current input line. */
+int rl_mark;
+
+/* Length of the current input line. */
+int rl_end;
+
+/* Make this non-zero to return the current input_line. */
+int rl_done;
+
+/* The last function executed by readline. */
+rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;
+
+/* Top level environment for readline_internal (). */
+procenv_t _rl_top_level;
+
+/* The streams we interact with. */
+FILE *_rl_in_stream, *_rl_out_stream;
+
+/* The names of the streams that we do input and output to. */
+FILE *rl_instream = (FILE *)NULL;
+FILE *rl_outstream = (FILE *)NULL;
+
+/* Non-zero means echo characters as they are read.  Defaults to no echo;
+   set to 1 if there is a controlling terminal, we can get its attributes,
+   and the attributes include `echo'.  Look at rltty.c:prepare_terminal_settings
+   for the code that sets it. */
+int _rl_echoing_p = 0;
+
+/* Current prompt. */
+char *rl_prompt = (char *)NULL;
+int rl_visible_prompt_length = 0;
+
+/* Set to non-zero by calling application if it has already printed rl_prompt
+   and does not want readline to do it the first time. */
+int rl_already_prompted = 0;
+
+/* The number of characters read in order to type this complete command. */
+int rl_key_sequence_length = 0;
+
+/* If non-zero, then this is the address of a function to call just
+   before readline_internal_setup () prints the first prompt. */
+rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL;
+
+/* If non-zero, this is the address of a function to call just before
+   readline_internal_setup () returns and readline_internal starts
+   reading input characters. */
+rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL;
+
+/* What we use internally.  You should always refer to RL_LINE_BUFFER. */
+static char *the_line;
+
+/* The character that can generate an EOF.  Really read from
+   the terminal driver... just defaulted here. */
+int _rl_eof_char = CTRL ('D');
+
+/* Non-zero makes this the next keystroke to read. */
+int rl_pending_input = 0;
+
+/* Pointer to a useful terminal name. */
+const char *rl_terminal_name = (const char *)NULL;
+
+/* Non-zero means to always use horizontal scrolling in line display. */
+int _rl_horizontal_scroll_mode = 0;
+
+/* Non-zero means to display an asterisk at the starts of history lines
+   which have been modified. */
+int _rl_mark_modified_lines = 0;  
+
+/* The style of `bell' notification preferred.  This can be set to NO_BELL,
+   AUDIBLE_BELL, or VISIBLE_BELL. */
+int _rl_bell_preference = AUDIBLE_BELL;
+     
+/* String inserted into the line by rl_insert_comment (). */
+char *_rl_comment_begin;
+
+/* Keymap holding the function currently being executed. */
+Keymap rl_executing_keymap;
+
+/* Keymap we're currently using to dispatch. */
+Keymap _rl_dispatching_keymap;
+
+/* Non-zero means to erase entire line, including prompt, on empty input lines. */
+int rl_erase_empty_line = 0;
+
+/* Non-zero means to read only this many characters rather than up to a
+   character bound to accept-line. */
+int rl_num_chars_to_read;
+
+/* Line buffer and maintenence. */
+char *rl_line_buffer = (char *)NULL;
+int rl_line_buffer_len = 0;
+
+/* Key sequence `contexts' */
+_rl_keyseq_cxt *_rl_kscxt = 0;
+
+int rl_executing_key;
+char *rl_executing_keyseq = 0;
+int _rl_executing_keyseq_size = 0;
+
+/* Timeout (specified in milliseconds) when reading characters making up an
+   ambiguous multiple-key sequence */
+int _rl_keyseq_timeout = 500;
+
+#define RESIZE_KEYSEQ_BUFFER() \
+  do \
+    { \
+      if (rl_key_sequence_length + 2 >= _rl_executing_keyseq_size) \
+       { \
+         _rl_executing_keyseq_size += 16; \
+         rl_executing_keyseq = xrealloc (rl_executing_keyseq, _rl_executing_keyseq_size); \
+       } \
+    } \
+  while (0);
+        
+/* Forward declarations used by the display, termcap, and history code. */
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     `Forward' declarations                      */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Non-zero means do not parse any lines other than comments and
+   parser directives. */
+unsigned char _rl_parsing_conditionalized_out = 0;
+
+/* Non-zero means to convert characters with the meta bit set to
+   escape-prefixed characters so we can indirect through
+   emacs_meta_keymap or vi_escape_keymap. */
+int _rl_convert_meta_chars_to_ascii = 1;
+
+/* Non-zero means to output characters with the meta bit set directly
+   rather than as a meta-prefixed escape sequence. */
+int _rl_output_meta_chars = 0;
+
+/* Non-zero means to look at the termios special characters and bind
+   them to equivalent readline functions at startup. */
+int _rl_bind_stty_chars = 1;
+
+/* Non-zero means to go through the history list at every newline (or
+   whenever rl_done is set and readline returns) and revert each line to
+   its initial state. */
+int _rl_revert_all_at_newline = 0;
+
+/* Non-zero means to honor the termios ECHOCTL bit and echo control
+   characters corresponding to keyboard-generated signals. */
+int _rl_echo_control_chars = 1;
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Top Level Functions                         */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Non-zero means treat 0200 bit in terminal input as Meta bit. */
+int _rl_meta_flag = 0; /* Forward declaration */
+
+/* Set up the prompt and expand it.  Called from readline() and
+   rl_callback_handler_install (). */
+int
+rl_set_prompt (prompt)
+     const char *prompt;
+{
+  FREE (rl_prompt);
+  rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
+  rl_display_prompt = rl_prompt ? rl_prompt : "";
+
+  rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
+  return 0;
+}
+  
+/* Read a line of input.  Prompt with PROMPT.  An empty PROMPT means
+   none.  A return value of NULL means that EOF was encountered. */
+char *
+readline (prompt)
+     const char *prompt;
+{
+  char *value;
+#if 0
+  int in_callback;
+#endif
+
+  /* If we are at EOF return a NULL string. */
+  if (rl_pending_input == EOF)
+    {
+      rl_clear_pending_input ();
+      return ((char *)NULL);
+    }
+
+#if 0
+  /* If readline() is called after installing a callback handler, temporarily
+     turn off the callback state to avoid ensuing messiness.  Patch supplied
+     by the gdb folks.  XXX -- disabled.  This can be fooled and readline
+     left in a strange state by a poorly-timed longjmp. */
+  if (in_callback = RL_ISSTATE (RL_STATE_CALLBACK))
+    RL_UNSETSTATE (RL_STATE_CALLBACK);
+#endif
+
+  rl_set_prompt (prompt);
+
+  rl_initialize ();
+  if (rl_prep_term_function)
+    (*rl_prep_term_function) (_rl_meta_flag);
+
+#if defined (HANDLE_SIGNALS)
+  rl_set_signals ();
+#endif
+
+  value = readline_internal ();
+  if (rl_deprep_term_function)
+    (*rl_deprep_term_function) ();
+
+#if defined (HANDLE_SIGNALS)
+  rl_clear_signals ();
+#endif
+
+#if 0
+  if (in_callback)
+    RL_SETSTATE (RL_STATE_CALLBACK);
+#endif
+
+#if HAVE_DECL_AUDIT_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT)
+  if (value)
+    _rl_audit_tty (value);
+#endif
+
+  return (value);
+}
+
+#if defined (READLINE_CALLBACKS)
+#  define STATIC_CALLBACK
+#else
+#  define STATIC_CALLBACK static
+#endif
+
+STATIC_CALLBACK void
+readline_internal_setup ()
+{
+  char *nprompt;
+
+  _rl_in_stream = rl_instream;
+  _rl_out_stream = rl_outstream;
+
+  /* Enable the meta key only for the duration of readline(), if this
+     terminal has one. */
+  if (_rl_enable_meta)
+    _rl_enable_meta_key ();
+
+  if (rl_startup_hook)
+    (*rl_startup_hook) ();
+
+  /* If we're not echoing, we still want to at least print a prompt, because
+     rl_redisplay will not do it for us.  If the calling application has a
+     custom redisplay function, though, let that function handle it. */
+  if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
+    {
+      if (rl_prompt && rl_already_prompted == 0)
+       {
+         nprompt = _rl_strip_prompt (rl_prompt);
+         fprintf (_rl_out_stream, "%s", nprompt);
+         fflush (_rl_out_stream);
+         xfree (nprompt);
+       }
+    }
+  else
+    {
+      if (rl_prompt && rl_already_prompted)
+       rl_on_new_line_with_prompt ();
+      else
+       rl_on_new_line ();
+      (*rl_redisplay_function) ();
+    }
+
+#if defined (VI_MODE)
+  if (rl_editing_mode == vi_mode)
+    rl_vi_insert_mode (1, 'i');
+#endif /* VI_MODE */
+
+  if (rl_pre_input_hook)
+    (*rl_pre_input_hook) ();
+
+  RL_CHECK_SIGNALS ();
+}
+
+STATIC_CALLBACK char *
+readline_internal_teardown (eof)
+     int eof;
+{
+  char *temp;
+  HIST_ENTRY *entry;
+
+  RL_CHECK_SIGNALS ();
+
+  /* Restore the original of this history line, iff the line that we
+     are editing was originally in the history, AND the line has changed. */
+  entry = current_history ();
+
+  if (entry && rl_undo_list)
+    {
+      temp = savestring (the_line);
+      rl_revert_line (1, 0);
+      entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL);
+      _rl_free_history_entry (entry);
+
+      strcpy (the_line, temp);
+      xfree (temp);
+    }
+
+  if (_rl_revert_all_at_newline)
+    _rl_revert_all_lines ();
+
+  /* At any rate, it is highly likely that this line has an undo list.  Get
+     rid of it now. */
+  if (rl_undo_list)
+    rl_free_undo_list ();
+
+  /* Disable the meta key, if this terminal has one. */
+  _rl_disable_meta_key ();
+
+  /* Restore normal cursor, if available. */
+  _rl_set_insert_mode (RL_IM_INSERT, 0);
+
+  return (eof ? (char *)NULL : savestring (the_line));
+}
+
+void
+_rl_internal_char_cleanup ()
+{
+#if defined (VI_MODE)
+  /* In vi mode, when you exit insert mode, the cursor moves back
+     over the previous character.  We explicitly check for that here. */
+  if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
+    rl_vi_check ();
+#endif /* VI_MODE */
+
+  if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read)
+    {
+      (*rl_redisplay_function) ();
+      _rl_want_redisplay = 0;
+      rl_newline (1, '\n');
+    }
+
+  if (rl_done == 0)
+    {
+      (*rl_redisplay_function) ();
+      _rl_want_redisplay = 0;
+    }
+
+  /* If the application writer has told us to erase the entire line if
+     the only character typed was something bound to rl_newline, do so. */
+  if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline &&
+      rl_point == 0 && rl_end == 0)
+    _rl_erase_entire_line ();
+}
+
+STATIC_CALLBACK int
+#if defined (READLINE_CALLBACKS)
+readline_internal_char ()
+#else
+readline_internal_charloop ()
+#endif
+{
+  static int lastc, eof_found;
+  int c, code, lk;
+
+  lastc = -1;
+  eof_found = 0;
+
+#if !defined (READLINE_CALLBACKS)
+  while (rl_done == 0)
+    {
+#endif
+      lk = _rl_last_command_was_kill;
+
+      code = setjmp (_rl_top_level);
+
+      if (code)
+       {
+         (*rl_redisplay_function) ();
+         _rl_want_redisplay = 0;
+         /* If we get here, we're not being called from something dispatched
+            from _rl_callback_read_char(), which sets up its own value of
+            _rl_top_level (saving and restoring the old, of course), so
+            we can just return here. */
+         if (RL_ISSTATE (RL_STATE_CALLBACK))
+           return (0);
+       }
+
+      if (rl_pending_input == 0)
+       {
+         /* Then initialize the argument and number of keys read. */
+         _rl_reset_argument ();
+         rl_key_sequence_length = 0;
+         rl_executing_keyseq[0] = 0;
+       }
+
+      RL_SETSTATE(RL_STATE_READCMD);
+      c = rl_read_key ();
+      RL_UNSETSTATE(RL_STATE_READCMD);
+
+      /* look at input.c:rl_getc() for the circumstances under which this will
+        be returned; punt immediately on read error without converting it to
+        a newline. */
+      if (c == READERR)
+       {
+#if defined (READLINE_CALLBACKS)
+         RL_SETSTATE(RL_STATE_DONE);
+         return (rl_done = 1);
+#else
+         eof_found = 1;
+         break;
+#endif
+       }
+
+      /* EOF typed to a non-blank line is a <NL>. */
+      if (c == EOF && rl_end)
+       c = NEWLINE;
+
+      /* The character _rl_eof_char typed to blank line, and not as the
+        previous character is interpreted as EOF. */
+      if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end)
+       {
+#if defined (READLINE_CALLBACKS)
+         RL_SETSTATE(RL_STATE_DONE);
+         return (rl_done = 1);
+#else
+         eof_found = 1;
+         break;
+#endif
+       }
+
+      lastc = c;
+      _rl_dispatch ((unsigned char)c, _rl_keymap);
+      RL_CHECK_SIGNALS ();
+
+      /* If there was no change in _rl_last_command_was_kill, then no kill
+        has taken place.  Note that if input is pending we are reading
+        a prefix command, so nothing has changed yet. */
+      if (rl_pending_input == 0 && lk == _rl_last_command_was_kill)
+       _rl_last_command_was_kill = 0;
+
+      _rl_internal_char_cleanup ();
+
+#if defined (READLINE_CALLBACKS)
+      return 0;
+#else
+    }
+
+  return (eof_found);
+#endif
+}
+
+#if defined (READLINE_CALLBACKS)
+static int
+readline_internal_charloop ()
+{
+  int eof = 1;
+
+  while (rl_done == 0)
+    eof = readline_internal_char ();
+  return (eof);
+}
+#endif /* READLINE_CALLBACKS */
+
+/* Read a line of input from the global rl_instream, doing output on
+   the global rl_outstream.
+   If rl_prompt is non-null, then that is our prompt. */
+static char *
+readline_internal ()
+{
+  int eof;
+
+  readline_internal_setup ();
+  eof = readline_internal_charloop ();
+  return (readline_internal_teardown (eof));
+}
+
+void
+_rl_init_line_state ()
+{
+  rl_point = rl_end = rl_mark = 0;
+  the_line = rl_line_buffer;
+  the_line[0] = 0;
+}
+
+void
+_rl_set_the_line ()
+{
+  the_line = rl_line_buffer;
+}
+
+#if defined (READLINE_CALLBACKS)
+_rl_keyseq_cxt *
+_rl_keyseq_cxt_alloc ()
+{
+  _rl_keyseq_cxt *cxt;
+
+  cxt = (_rl_keyseq_cxt *)xmalloc (sizeof (_rl_keyseq_cxt));
+
+  cxt->flags = cxt->subseq_arg = cxt->subseq_retval = 0;
+
+  cxt->okey = 0;
+  cxt->ocxt = _rl_kscxt;
+  cxt->childval = 42;          /* sentinel value */
+
+  return cxt;
+}
+
+void
+_rl_keyseq_cxt_dispose (cxt)
+    _rl_keyseq_cxt *cxt;
+{
+  xfree (cxt);
+}
+
+void
+_rl_keyseq_chain_dispose ()
+{
+  _rl_keyseq_cxt *cxt;
+
+  while (_rl_kscxt)
+    {
+      cxt = _rl_kscxt;
+      _rl_kscxt = _rl_kscxt->ocxt;
+      _rl_keyseq_cxt_dispose (cxt);
+    }
+}
+#endif
+
+static int
+_rl_subseq_getchar (key)
+     int key;
+{
+  int k;
+
+  if (key == ESC)
+    RL_SETSTATE(RL_STATE_METANEXT);
+  RL_SETSTATE(RL_STATE_MOREINPUT);
+  k = rl_read_key ();
+  RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  if (key == ESC)
+    RL_UNSETSTATE(RL_STATE_METANEXT);
+
+  return k;
+}
+
+#if defined (READLINE_CALLBACKS)
+int
+_rl_dispatch_callback (cxt)
+     _rl_keyseq_cxt *cxt;
+{
+  int nkey, r;
+
+  /* For now */
+  /* The first time this context is used, we want to read input and dispatch
+     on it.  When traversing the chain of contexts back `up', we want to use
+     the value from the next context down.  We're simulating recursion using
+     a chain of contexts. */
+  if ((cxt->flags & KSEQ_DISPATCHED) == 0)
+    {
+      nkey = _rl_subseq_getchar (cxt->okey);
+      if (nkey < 0)
+       {
+         _rl_abort_internal ();
+         return -1;
+       }
+      r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
+      cxt->flags |= KSEQ_DISPATCHED;
+    }
+  else
+    r = cxt->childval;
+
+  /* For now */
+  if (r != -3) /* don't do this if we indicate there will be other matches */
+    r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
+
+  RL_CHECK_SIGNALS ();
+  if (r == 0)                  /* success! */
+    {
+      _rl_keyseq_chain_dispose ();
+      RL_UNSETSTATE (RL_STATE_MULTIKEY);
+      return r;
+    }
+
+  if (r != -3)                 /* magic value that says we added to the chain */
+    _rl_kscxt = cxt->ocxt;
+  if (_rl_kscxt)
+    _rl_kscxt->childval = r;
+  if (r != -3)
+    _rl_keyseq_cxt_dispose (cxt);
+
+  return r;
+}
+#endif /* READLINE_CALLBACKS */
+  
+/* Do the command associated with KEY in MAP.
+   If the associated command is really a keymap, then read
+   another key, and dispatch into that map. */
+int
+_rl_dispatch (key, map)
+     register int key;
+     Keymap map;
+{
+  _rl_dispatching_keymap = map;
+  return _rl_dispatch_subseq (key, map, 0);
+}
+
+int
+_rl_dispatch_subseq (key, map, got_subseq)
+     register int key;
+     Keymap map;
+     int got_subseq;
+{
+  int r, newkey;
+  char *macro;
+  rl_command_func_t *func;
+#if defined (READLINE_CALLBACKS)
+  _rl_keyseq_cxt *cxt;
+#endif
+
+  if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
+    {
+      if (map[ESC].type == ISKMAP)
+       {
+         if (RL_ISSTATE (RL_STATE_MACRODEF))
+           _rl_add_macro_char (ESC);
+         RESIZE_KEYSEQ_BUFFER ();
+         rl_executing_keyseq[rl_key_sequence_length++] = ESC;
+         map = FUNCTION_TO_KEYMAP (map, ESC);
+         key = UNMETA (key);
+         return (_rl_dispatch (key, map));
+       }
+      else
+       rl_ding ();
+      return 0;
+    }
+
+  if (RL_ISSTATE (RL_STATE_MACRODEF))
+    _rl_add_macro_char (key);
+
+  r = 0;
+  switch (map[key].type)
+    {
+    case ISFUNC:
+      func = map[key].function;
+      if (func)
+       {
+         /* Special case rl_do_lowercase_version (). */
+         if (func == rl_do_lowercase_version)
+           return (_rl_dispatch (_rl_to_lower (key), map));
+
+         rl_executing_keymap = map;
+         rl_executing_key = key;
+
+         RESIZE_KEYSEQ_BUFFER();
+         rl_executing_keyseq[rl_key_sequence_length++] = key;
+         rl_executing_keyseq[rl_key_sequence_length] = '\0';
+
+         rl_dispatching = 1;
+         RL_SETSTATE(RL_STATE_DISPATCHING);
+         (*func) (rl_numeric_arg * rl_arg_sign, key);
+         RL_UNSETSTATE(RL_STATE_DISPATCHING);
+         rl_dispatching = 0;
+
+         /* If we have input pending, then the last command was a prefix
+            command.  Don't change the state of rl_last_func.  Otherwise,
+            remember the last command executed in this variable. */
+         if (rl_pending_input == 0 && map[key].function != rl_digit_argument)
+           rl_last_func = map[key].function;
+
+         RL_CHECK_SIGNALS ();
+       }
+      else if (map[ANYOTHERKEY].function)
+       {
+         /* OK, there's no function bound in this map, but there is a
+            shadow function that was overridden when the current keymap
+            was created.  Return -2 to note  that. */
+         _rl_unget_char  (key);
+         return -2;
+       }
+      else if (got_subseq)
+       {
+         /* Return -1 to note that we're in a subsequence, but  we don't
+            have a matching key, nor was one overridden.  This means
+            we need to back up the recursion chain and find the last
+            subsequence that is bound to a function. */
+         _rl_unget_char (key);
+         return -1;
+       }
+      else
+       {
+#if defined (READLINE_CALLBACKS)
+         RL_UNSETSTATE (RL_STATE_MULTIKEY);
+         _rl_keyseq_chain_dispose ();
+#endif
+         _rl_abort_internal ();
+         return -1;
+       }
+      break;
+
+    case ISKMAP:
+      if (map[key].function != 0)
+       {
+#if defined (VI_MODE)
+         /* The only way this test will be true is if a subsequence has been
+            bound starting with ESC, generally the arrow keys.  What we do is
+            check whether there's input in the queue, which there generally
+            will be if an arrow key has been pressed, and, if there's not,
+            just dispatch to (what we assume is) rl_vi_movement_mode right
+            away.  This is essentially an input test with a zero timeout (by
+            default) or a timeout determined by the value of `keyseq-timeout' */
+         /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued
+            takes microseconds, so multiply by 1000 */
+         if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap
+             && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0)
+           return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
+#endif
+
+         RESIZE_KEYSEQ_BUFFER ();
+         rl_executing_keyseq[rl_key_sequence_length++] = key;
+         _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key);
+
+         /* Allocate new context here.  Use linked contexts (linked through
+            cxt->ocxt) to simulate recursion */
+#if defined (READLINE_CALLBACKS)
+         if (RL_ISSTATE (RL_STATE_CALLBACK))
+           {
+             /* Return 0 only the first time, to indicate success to
+                _rl_callback_read_char.  The rest of the time, we're called
+                from _rl_dispatch_callback, so we return -3 to indicate
+                special handling is necessary. */
+             r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0;
+             cxt = _rl_keyseq_cxt_alloc ();
+
+             if (got_subseq)
+               cxt->flags |= KSEQ_SUBSEQ;
+             cxt->okey = key;
+             cxt->oldmap = map;
+             cxt->dmap = _rl_dispatching_keymap;
+             cxt->subseq_arg = got_subseq || cxt->dmap[ANYOTHERKEY].function;
+
+             RL_SETSTATE (RL_STATE_MULTIKEY);
+             _rl_kscxt = cxt;
+
+             return r;         /* don't indicate immediate success */
+           }
+#endif
+
+         /* Tentative inter-character timeout for potential multi-key
+            sequences?  If no input within timeout, abort sequence and
+            act as if we got non-matching input. */
+         /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued
+            takes microseconds, so multiply by 1000 */
+         if (_rl_keyseq_timeout > 0 &&
+               (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) &&
+               _rl_pushed_input_available () == 0 &&
+               _rl_dispatching_keymap[ANYOTHERKEY].function &&
+               _rl_input_queued (_rl_keyseq_timeout*1000) == 0)
+           return (_rl_subseq_result (-2, map, key, got_subseq));
+
+         newkey = _rl_subseq_getchar (key);
+         if (newkey < 0)
+           {
+             _rl_abort_internal ();
+             return -1;
+           }
+
+         r = _rl_dispatch_subseq (newkey, _rl_dispatching_keymap, got_subseq || map[ANYOTHERKEY].function);
+         return _rl_subseq_result (r, map, key, got_subseq);
+       }
+      else
+       {
+         _rl_abort_internal ();
+         return -1;
+       }
+      break;
+
+    case ISMACR:
+      if (map[key].function != 0)
+       {
+         rl_executing_keyseq[rl_key_sequence_length] = '\0';
+         macro = savestring ((char *)map[key].function);
+         _rl_with_macro_input (macro);
+         return 0;
+       }
+      break;
+    }
+#if defined (VI_MODE)
+  if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+      key != ANYOTHERKEY &&
+      _rl_vi_textmod_command (key))
+    _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+#endif
+
+  return (r);
+}
+
+static int
+_rl_subseq_result (r, map, key, got_subseq)
+     int r;
+     Keymap map;
+     int key, got_subseq;
+{
+  Keymap m;
+  int type, nt;
+  rl_command_func_t *func, *nf;
+
+  if (r == -2)
+    /* We didn't match anything, and the keymap we're indexed into
+       shadowed a function previously bound to that prefix.  Call
+       the function.  The recursive call to _rl_dispatch_subseq has
+       already taken care of pushing any necessary input back onto
+       the input queue with _rl_unget_char. */
+    {
+      m = _rl_dispatching_keymap;
+      type = m[ANYOTHERKEY].type;
+      func = m[ANYOTHERKEY].function;
+      if (type == ISFUNC && func == rl_do_lowercase_version)
+       r = _rl_dispatch (_rl_to_lower (key), map);
+      else if (type == ISFUNC && func == rl_insert)
+       {
+         /* If the function that was shadowed was self-insert, we
+            somehow need a keymap with map[key].func == self-insert.
+            Let's use this one. */
+         nt = m[key].type;
+         nf = m[key].function;
+
+         m[key].type = type;
+         m[key].function = func;
+         r = _rl_dispatch (key, m);
+         m[key].type = nt;
+         m[key].function = nf;
+       }
+      else
+       r = _rl_dispatch (ANYOTHERKEY, m);
+    }
+  else if (r && map[ANYOTHERKEY].function)
+    {
+      /* We didn't match (r is probably -1), so return something to
+        tell the caller that it should try ANYOTHERKEY for an
+        overridden function. */
+      _rl_unget_char (key);
+      _rl_dispatching_keymap = map;
+      return -2;
+    }
+  else if (r && got_subseq)
+    {
+      /* OK, back up the chain. */
+      _rl_unget_char (key);
+      _rl_dispatching_keymap = map;
+      return -1;
+    }
+
+  return r;
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Initializations                             */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Initialize readline (and terminal if not already). */
+int
+rl_initialize ()
+{
+  /* If we have never been called before, initialize the
+     terminal and data structures. */
+  if (!rl_initialized)
+    {
+      RL_SETSTATE(RL_STATE_INITIALIZING);
+      readline_initialize_everything ();
+      RL_UNSETSTATE(RL_STATE_INITIALIZING);
+      rl_initialized++;
+      RL_SETSTATE(RL_STATE_INITIALIZED);
+    }
+
+  /* Initalize the current line information. */
+  _rl_init_line_state ();
+
+  /* We aren't done yet.  We haven't even gotten started yet! */
+  rl_done = 0;
+  RL_UNSETSTATE(RL_STATE_DONE);
+
+  /* Tell the history routines what is going on. */
+  _rl_start_using_history ();
+
+  /* Make the display buffer match the state of the line. */
+  rl_reset_line_state ();
+
+  /* No such function typed yet. */
+  rl_last_func = (rl_command_func_t *)NULL;
+
+  /* Parsing of key-bindings begins in an enabled state. */
+  _rl_parsing_conditionalized_out = 0;
+
+#if defined (VI_MODE)
+  if (rl_editing_mode == vi_mode)
+    _rl_vi_initialize_line ();
+#endif
+
+  /* Each line starts in insert mode (the default). */
+  _rl_set_insert_mode (RL_IM_DEFAULT, 1);
+
+  return 0;
+}
+
+#if 0
+#if defined (__EMX__)
+static void
+_emx_build_environ ()
+{
+  TIB *tibp;
+  PIB *pibp;
+  char *t, **tp;
+  int c;
+
+  DosGetInfoBlocks (&tibp, &pibp);
+  t = pibp->pib_pchenv;
+  for (c = 1; *t; c++)
+    t += strlen (t) + 1;
+  tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *));
+  t = pibp->pib_pchenv;
+  while (*t)
+    {
+      *tp++ = t;
+      t += strlen (t) + 1;
+    }
+  *tp = 0;
+}
+#endif /* __EMX__ */
+#endif
+
+/* Initialize the entire state of the world. */
+static void
+readline_initialize_everything ()
+{
+#if 0
+#if defined (__EMX__)
+  if (environ == 0)
+    _emx_build_environ ();
+#endif
+#endif
+
+#if 0
+  /* Find out if we are running in Emacs -- UNUSED. */
+  running_in_emacs = sh_get_env_value ("EMACS") != (char *)0;
+#endif
+
+  /* Set up input and output if they are not already set up. */
+  if (!rl_instream)
+    rl_instream = stdin;
+
+  if (!rl_outstream)
+    rl_outstream = stdout;
+
+  /* Bind _rl_in_stream and _rl_out_stream immediately.  These values
+     may change, but they may also be used before readline_internal ()
+     is called. */
+  _rl_in_stream = rl_instream;
+  _rl_out_stream = rl_outstream;
+
+  /* Allocate data structures. */
+  if (rl_line_buffer == 0)
+    rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE);
+
+  /* Initialize the terminal interface. */
+  if (rl_terminal_name == 0)
+    rl_terminal_name = sh_get_env_value ("TERM");
+  _rl_init_terminal_io (rl_terminal_name);
+
+  /* Bind tty characters to readline functions. */
+  readline_default_bindings ();
+
+  /* Initialize the function names. */
+  rl_initialize_funmap ();
+
+  /* Decide whether we should automatically go into eight-bit mode. */
+  _rl_init_eightbit ();
+      
+  /* Read in the init file. */
+  rl_read_init_file ((char *)NULL);
+
+  /* XXX */
+  if (_rl_horizontal_scroll_mode && _rl_term_autowrap)
+    {
+      _rl_screenwidth--;
+      _rl_screenchars -= _rl_screenheight;
+    }
+
+  /* Override the effect of any `set keymap' assignments in the
+     inputrc file. */
+  rl_set_keymap_from_edit_mode ();
+
+  /* Try to bind a common arrow key prefix, if not already bound. */
+  bind_arrow_keys ();
+
+  /* If the completion parser's default word break characters haven't
+     been set yet, then do so now. */
+  if (rl_completer_word_break_characters == (char *)NULL)
+    rl_completer_word_break_characters = (char *)rl_basic_word_break_characters;
+
+#if defined (COLOR_SUPPORT)
+  if (_rl_colored_stats)
+    _rl_parse_colors ();
+#endif
+
+  rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16);
+  if (rl_executing_keyseq)
+    rl_executing_keyseq[0] = '\0';
+}
+
+/* If this system allows us to look at the values of the regular
+   input editing characters, then bind them to their readline
+   equivalents, iff the characters are not bound to keymaps. */
+static void
+readline_default_bindings ()
+{
+  if (_rl_bind_stty_chars)
+    rl_tty_set_default_bindings (_rl_keymap);
+}
+
+/* Reset the default bindings for the terminal special characters we're
+   interested in back to rl_insert and read the new ones. */
+static void
+reset_default_bindings ()
+{
+  if (_rl_bind_stty_chars)
+    {
+      rl_tty_unset_default_bindings (_rl_keymap);
+      rl_tty_set_default_bindings (_rl_keymap);
+    }
+}
+
+/* Bind some common arrow key sequences in MAP. */
+static void
+bind_arrow_keys_internal (map)
+     Keymap map;
+{
+  Keymap xkeymap;
+
+  xkeymap = _rl_keymap;
+  _rl_keymap = map;
+
+#if defined (__MSDOS__)
+  rl_bind_keyseq_if_unbound ("\033[0A", rl_get_previous_history);
+  rl_bind_keyseq_if_unbound ("\033[0B", rl_backward_char);
+  rl_bind_keyseq_if_unbound ("\033[0C", rl_forward_char);
+  rl_bind_keyseq_if_unbound ("\033[0D", rl_get_next_history);
+#endif
+
+  rl_bind_keyseq_if_unbound ("\033[A", rl_get_previous_history);
+  rl_bind_keyseq_if_unbound ("\033[B", rl_get_next_history);
+  rl_bind_keyseq_if_unbound ("\033[C", rl_forward_char);
+  rl_bind_keyseq_if_unbound ("\033[D", rl_backward_char);
+  rl_bind_keyseq_if_unbound ("\033[H", rl_beg_of_line);
+  rl_bind_keyseq_if_unbound ("\033[F", rl_end_of_line);
+
+  rl_bind_keyseq_if_unbound ("\033OA", rl_get_previous_history);
+  rl_bind_keyseq_if_unbound ("\033OB", rl_get_next_history);
+  rl_bind_keyseq_if_unbound ("\033OC", rl_forward_char);
+  rl_bind_keyseq_if_unbound ("\033OD", rl_backward_char);
+  rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line);
+  rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line);
+
+#if defined (__MINGW32__)
+  rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history);
+  rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history);
+  rl_bind_keyseq_if_unbound ("\340M", rl_forward_char);
+  rl_bind_keyseq_if_unbound ("\340K", rl_backward_char);
+#endif
+
+  _rl_keymap = xkeymap;
+}
+
+/* Try and bind the common arrow key prefixes after giving termcap and
+   the inputrc file a chance to bind them and create `real' keymaps
+   for the arrow key prefix. */
+static void
+bind_arrow_keys ()
+{
+  bind_arrow_keys_internal (emacs_standard_keymap);
+
+#if defined (VI_MODE)
+  bind_arrow_keys_internal (vi_movement_keymap);
+  /* Unbind vi_movement_keymap[ESC] to allow users to repeatedly hit ESC
+     in vi command mode while still allowing the arrow keys to work. */
+  if (vi_movement_keymap[ESC].type == ISKMAP)
+    rl_bind_keyseq_in_map ("\033", (rl_command_func_t *)NULL, vi_movement_keymap);
+  bind_arrow_keys_internal (vi_insertion_keymap);
+#endif
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*             Saving and Restoring Readline's state               */
+/*                                                                 */
+/* **************************************************************** */
+
+int
+rl_save_state (sp)
+     struct readline_state *sp;
+{
+  if (sp == 0)
+    return -1;
+
+  sp->point = rl_point;
+  sp->end = rl_end;
+  sp->mark = rl_mark;
+  sp->buffer = rl_line_buffer;
+  sp->buflen = rl_line_buffer_len;
+  sp->ul = rl_undo_list;
+  sp->prompt = rl_prompt;
+
+  sp->rlstate = rl_readline_state;
+  sp->done = rl_done;
+  sp->kmap = _rl_keymap;
+
+  sp->lastfunc = rl_last_func;
+  sp->insmode = rl_insert_mode;
+  sp->edmode = rl_editing_mode;
+  sp->kseqlen = rl_key_sequence_length;
+  sp->inf = rl_instream;
+  sp->outf = rl_outstream;
+  sp->pendingin = rl_pending_input;
+  sp->macro = rl_executing_macro;
+
+  sp->catchsigs = rl_catch_signals;
+  sp->catchsigwinch = rl_catch_sigwinch;
+
+  return (0);
+}
+
+int
+rl_restore_state (sp)
+     struct readline_state *sp;
+{
+  if (sp == 0)
+    return -1;
+
+  rl_point = sp->point;
+  rl_end = sp->end;
+  rl_mark = sp->mark;
+  the_line = rl_line_buffer = sp->buffer;
+  rl_line_buffer_len = sp->buflen;
+  rl_undo_list = sp->ul;
+  rl_prompt = sp->prompt;
+
+  rl_readline_state = sp->rlstate;
+  rl_done = sp->done;
+  _rl_keymap = sp->kmap;
+
+  rl_last_func = sp->lastfunc;
+  rl_insert_mode = sp->insmode;
+  rl_editing_mode = sp->edmode;
+  rl_key_sequence_length = sp->kseqlen;
+  rl_instream = sp->inf;
+  rl_outstream = sp->outf;
+  rl_pending_input = sp->pendingin;
+  rl_executing_macro = sp->macro;
+
+  rl_catch_signals = sp->catchsigs;
+  rl_catch_sigwinch = sp->catchsigwinch;
+
+  return (0);
+}
index 47574cf1dd17c249ce012367ea70c634740c0718..bd2c0eaa8fdbb67e88536e6e74e3ea2175901d5e 100644 (file)
@@ -528,10 +528,10 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
 
 #if defined (USE_XON_XOFF)
 #if defined (IXANY)
-  tiop->c_iflag &= ~(IXON | IXOFF | IXANY);
+  tiop->c_iflag &= ~(IXON | IXANY);
 #else
   /* `strict' Posix systems do not define IXANY. */
-  tiop->c_iflag &= ~(IXON | IXOFF);
+  tiop->c_iflag &= ~IXON;
 #endif /* IXANY */
 #endif /* USE_XON_XOFF */
 
diff --git a/lib/readline/rltty.c.save1 b/lib/readline/rltty.c.save1
new file mode 100644 (file)
index 0000000..81a1688
--- /dev/null
@@ -0,0 +1,976 @@
+/* rltty.c -- functions to prepare and restore the terminal for readline's
+   use. */
+
+/* Copyright (C) 1992-2005 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+#include <stdio.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include "rldefs.h"
+
+#if defined (GWINSZ_IN_SYS_IOCTL)
+#  include <sys/ioctl.h>
+#endif /* GWINSZ_IN_SYS_IOCTL */
+
+#include "rltty.h"
+#include "readline.h"
+#include "rlprivate.h"
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
+rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
+
+static void set_winsize PARAMS((int));
+
+/* **************************************************************** */
+/*                                                                 */
+/*                   Saving and Restoring the TTY                  */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Non-zero means that the terminal is in a prepped state. */
+static int terminal_prepped;
+
+static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;
+
+/* If non-zero, means that this process has called tcflow(fd, TCOOFF)
+   and output is suspended. */
+#if defined (__ksr1__)
+static int ksrflow;
+#endif
+
+/* Dummy call to force a backgrounded readline to stop before it tries
+   to get the tty settings. */
+static void
+set_winsize (tty)
+     int tty;
+{
+#if defined (TIOCGWINSZ)
+  struct winsize w;
+
+  if (ioctl (tty, TIOCGWINSZ, &w) == 0)
+      (void) ioctl (tty, TIOCSWINSZ, &w);
+#endif /* TIOCGWINSZ */
+}
+
+#if defined (NO_TTY_DRIVER)
+/* Nothing */
+#elif defined (NEW_TTY_DRIVER)
+
+/* Values for the `flags' field of a struct bsdtty.  This tells which
+   elements of the struct bsdtty have been fetched from the system and
+   are valid. */
+#define SGTTY_SET      0x01
+#define LFLAG_SET      0x02
+#define TCHARS_SET     0x04
+#define LTCHARS_SET    0x08
+
+struct bsdtty {
+  struct sgttyb sgttyb;        /* Basic BSD tty driver information. */
+  int lflag;           /* Local mode flags, like LPASS8. */
+#if defined (TIOCGETC)
+  struct tchars tchars;        /* Terminal special characters, including ^S and ^Q. */
+#endif
+#if defined (TIOCGLTC)
+  struct ltchars ltchars; /* 4.2 BSD editing characters */
+#endif
+  int flags;           /* Bitmap saying which parts of the struct are valid. */
+};
+
+#define TIOTYPE struct bsdtty
+
+static TIOTYPE otio;
+
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
+static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
+
+static void
+save_tty_chars (tiop)
+     TIOTYPE *tiop;
+{
+  _rl_last_tty_chars = _rl_tty_chars;
+
+  if (tiop->flags & SGTTY_SET)
+    {
+      _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase;
+      _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill;
+    }
+
+  if (tiop->flags & TCHARS_SET)
+    {
+      _rl_intr_char = _rl_tty_chars.t_intr = tiop->tchars.t_intrc;
+      _rl_quit_char = _rl_tty_chars.t_quit = tiop->tchars.t_quitc;
+
+      _rl_tty_chars.t_start = tiop->tchars.t_startc;
+      _rl_tty_chars.t_stop = tiop->tchars.t_stopc;
+      _rl_tty_chars.t_eof = tiop->tchars.t_eofc;
+      _rl_tty_chars.t_eol = '\n';
+      _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc;
+    }
+
+  if (tiop->flags & LTCHARS_SET)
+    {
+      _rl_susp_char = _rl_tty_chars.t_susp = tiop->ltchars.t_suspc;
+
+      _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc;
+      _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc;
+      _rl_tty_chars.t_flush = tiop->ltchars.t_flushc;
+      _rl_tty_chars.t_werase = tiop->ltchars.t_werasc;
+      _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc;
+    }
+
+  _rl_tty_chars.t_status = -1;
+}
+
+static int
+get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  set_winsize (tty);
+
+  tiop->flags = tiop->lflag = 0;
+
+  errno = 0;
+  if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0)
+    return -1;
+  tiop->flags |= SGTTY_SET;
+
+#if defined (TIOCLGET)
+  if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0)
+    tiop->flags |= LFLAG_SET;
+#endif
+
+#if defined (TIOCGETC)
+  if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0)
+    tiop->flags |= TCHARS_SET;
+#endif
+
+#if defined (TIOCGLTC)
+  if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0)
+    tiop->flags |= LTCHARS_SET;
+#endif
+
+  return 0;
+}
+
+static int
+set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  if (tiop->flags & SGTTY_SET)
+    {
+      ioctl (tty, TIOCSETN, &(tiop->sgttyb));
+      tiop->flags &= ~SGTTY_SET;
+    }
+  _rl_echoing_p = 1;
+
+#if defined (TIOCLSET)
+  if (tiop->flags & LFLAG_SET)
+    {
+      ioctl (tty, TIOCLSET, &(tiop->lflag));
+      tiop->flags &= ~LFLAG_SET;
+    }
+#endif
+
+#if defined (TIOCSETC)
+  if (tiop->flags & TCHARS_SET)
+    {
+      ioctl (tty, TIOCSETC, &(tiop->tchars));
+      tiop->flags &= ~TCHARS_SET;
+    }
+#endif
+
+#if defined (TIOCSLTC)
+  if (tiop->flags & LTCHARS_SET)
+    {
+      ioctl (tty, TIOCSLTC, &(tiop->ltchars));
+      tiop->flags &= ~LTCHARS_SET;
+    }
+#endif
+
+  return 0;
+}
+
+static void
+prepare_terminal_settings (meta_flag, oldtio, tiop)
+     int meta_flag;
+     TIOTYPE oldtio, *tiop;
+{
+  _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
+  _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL);
+
+  /* Copy the original settings to the structure we're going to use for
+     our settings. */
+  tiop->sgttyb = oldtio.sgttyb;
+  tiop->lflag = oldtio.lflag;
+#if defined (TIOCGETC)
+  tiop->tchars = oldtio.tchars;
+#endif
+#if defined (TIOCGLTC)
+  tiop->ltchars = oldtio.ltchars;
+#endif
+  tiop->flags = oldtio.flags;
+
+  /* First, the basic settings to put us into character-at-a-time, no-echo
+     input mode. */
+  tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD);
+  tiop->sgttyb.sg_flags |= CBREAK;
+
+  /* If this terminal doesn't care how the 8th bit is used, then we can
+     use it for the meta-key.  If only one of even or odd parity is
+     specified, then the terminal is using parity, and we cannot. */
+#if !defined (ANYP)
+#  define ANYP (EVENP | ODDP)
+#endif
+  if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) ||
+      ((oldtio.sgttyb.sg_flags & ANYP) == 0))
+    {
+      tiop->sgttyb.sg_flags |= ANYP;
+
+      /* Hack on local mode flags if we can. */
+#if defined (TIOCLGET)
+#  if defined (LPASS8)
+      tiop->lflag |= LPASS8;
+#  endif /* LPASS8 */
+#endif /* TIOCLGET */
+    }
+
+#if defined (TIOCGETC)
+#  if defined (USE_XON_XOFF)
+  /* Get rid of terminal output start and stop characters. */
+  tiop->tchars.t_stopc = -1; /* C-s */
+  tiop->tchars.t_startc = -1; /* C-q */
+
+  /* If there is an XON character, bind it to restart the output. */
+  if (oldtio.tchars.t_startc != -1)
+    rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
+#  endif /* USE_XON_XOFF */
+
+  /* If there is an EOF char, bind _rl_eof_char to it. */
+  if (oldtio.tchars.t_eofc != -1)
+    _rl_eof_char = oldtio.tchars.t_eofc;
+
+#  if defined (NO_KILL_INTR)
+  /* Get rid of terminal-generated SIGQUIT and SIGINT. */
+  tiop->tchars.t_quitc = -1; /* C-\ */
+  tiop->tchars.t_intrc = -1; /* C-c */
+#  endif /* NO_KILL_INTR */
+#endif /* TIOCGETC */
+
+#if defined (TIOCGLTC)
+  /* Make the interrupt keys go away.  Just enough to make people happy. */
+  tiop->ltchars.t_dsuspc = -1; /* C-y */
+  tiop->ltchars.t_lnextc = -1; /* C-v */
+#endif /* TIOCGLTC */
+}
+
+#else  /* !defined (NEW_TTY_DRIVER) */
+
+#if !defined (VMIN)
+#  define VMIN VEOF
+#endif
+
+#if !defined (VTIME)
+#  define VTIME VEOL
+#endif
+
+#if defined (TERMIOS_TTY_DRIVER)
+#  define TIOTYPE struct termios
+#  define DRAIN_OUTPUT(fd)     tcdrain (fd)
+#  define GETATTR(tty, tiop)   (tcgetattr (tty, tiop))
+#  ifdef M_UNIX
+#    define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop))
+#  else
+#    define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop))
+#  endif /* !M_UNIX */
+#else
+#  define TIOTYPE struct termio
+#  define DRAIN_OUTPUT(fd)
+#  define GETATTR(tty, tiop)   (ioctl (tty, TCGETA, tiop))
+#  define SETATTR(tty, tiop)   (ioctl (tty, TCSETAW, tiop))
+#endif /* !TERMIOS_TTY_DRIVER */
+
+static TIOTYPE otio;
+
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
+static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
+static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
+
+#if defined (FLUSHO)
+#  define OUTPUT_BEING_FLUSHED(tp)  (tp->c_lflag & FLUSHO)
+#else
+#  define OUTPUT_BEING_FLUSHED(tp)  0
+#endif
+
+static void
+save_tty_chars (tiop)
+     TIOTYPE *tiop;
+{
+  _rl_last_tty_chars = _rl_tty_chars;
+
+  _rl_tty_chars.t_eof = tiop->c_cc[VEOF];
+  _rl_tty_chars.t_eol = tiop->c_cc[VEOL];
+#ifdef VEOL2
+  _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2];
+#endif
+  _rl_tty_chars.t_erase = tiop->c_cc[VERASE];
+#ifdef VWERASE
+  _rl_tty_chars.t_werase = tiop->c_cc[VWERASE];
+#endif
+  _rl_tty_chars.t_kill = tiop->c_cc[VKILL];
+#ifdef VREPRINT
+  _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT];
+#endif
+  _rl_intr_char = _rl_tty_chars.t_intr = tiop->c_cc[VINTR];
+  _rl_quit_char = _rl_tty_chars.t_quit = tiop->c_cc[VQUIT];
+#ifdef VSUSP
+  _rl_susp_char = _rl_tty_chars.t_susp = tiop->c_cc[VSUSP];
+#endif
+#ifdef VDSUSP
+  _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP];
+#endif
+#ifdef VSTART
+  _rl_tty_chars.t_start = tiop->c_cc[VSTART];
+#endif
+#ifdef VSTOP
+  _rl_tty_chars.t_stop = tiop->c_cc[VSTOP];
+#endif
+#ifdef VLNEXT
+  _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT];
+#endif
+#ifdef VDISCARD
+  _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD];
+#endif
+#ifdef VSTATUS
+  _rl_tty_chars.t_status = tiop->c_cc[VSTATUS];
+#endif
+}
+
+#if defined (_AIX) || defined (_AIX41)
+/* Currently this is only used on AIX */
+static void
+rltty_warning (msg)
+     char *msg;
+{
+  _rl_errmsg ("warning: %s", msg);
+}
+#endif
+
+#if defined (_AIX)
+void
+setopost(tp)
+TIOTYPE *tp;
+{
+  if ((tp->c_oflag & OPOST) == 0)
+    {
+      _rl_errmsg ("warning: turning on OPOST for terminal\r");
+      tp->c_oflag |= OPOST|ONLCR;
+    }
+}
+#endif
+
+static int
+_get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  int ioctl_ret;
+
+  while (1)
+    {
+      ioctl_ret = GETATTR (tty, tiop);
+      if (ioctl_ret < 0)
+       {
+         if (errno != EINTR)
+           return -1;
+         else
+           continue;
+       }
+      if (OUTPUT_BEING_FLUSHED (tiop))
+       {
+_rl_errmsg("get_tty_settings: output is being flushed");
+#if defined (FLUSHO)
+         _rl_errmsg ("warning: turning off output flushing");
+         tiop->c_lflag &= ~FLUSHO;
+         break;
+#else
+         continue;
+#endif
+       }
+      break;
+    }
+
+  return 0;
+}
+
+static int
+get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  set_winsize (tty);
+
+  errno = 0;
+  if (_get_tty_settings (tty, tiop) < 0)
+    return -1;
+
+#if defined (_AIX)
+  setopost(tiop);
+#endif
+
+  return 0;
+}
+
+static int
+_set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  while (SETATTR (tty, tiop) < 0)
+    {
+      if (errno != EINTR)
+       return -1;
+      errno = 0;
+    }
+  return 0;
+}
+
+static int
+set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  if (_set_tty_settings (tty, tiop) < 0)
+    return -1;
+    
+#if 0
+
+#if defined (TERMIOS_TTY_DRIVER)
+#  if defined (__ksr1__)
+  if (ksrflow)
+    {
+      ksrflow = 0;
+      tcflow (tty, TCOON);
+    }
+#  else /* !ksr1 */
+  tcflow (tty, TCOON);         /* Simulate a ^Q. */
+#  endif /* !ksr1 */
+#else
+  ioctl (tty, TCXONC, 1);      /* Simulate a ^Q. */
+#endif /* !TERMIOS_TTY_DRIVER */
+
+#endif /* 0 */
+
+  return 0;
+}
+
+static void
+prepare_terminal_settings (meta_flag, oldtio, tiop)
+     int meta_flag;
+     TIOTYPE oldtio, *tiop;
+{
+  _rl_echoing_p = (oldtio.c_lflag & ECHO);
+#if defined (ECHOCTL)
+  _rl_echoctl = (oldtio.c_lflag & ECHOCTL);
+#endif
+
+  tiop->c_lflag &= ~(ICANON | ECHO);
+
+  if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE)
+    _rl_eof_char = oldtio.c_cc[VEOF];
+
+#if defined (USE_XON_XOFF)
+#if defined (IXANY)
+  tiop->c_iflag &= ~(IXON | IXOFF | IXANY);
+#else
+  /* `strict' Posix systems do not define IXANY. */
+  tiop->c_iflag &= ~(IXON | IXOFF);
+#endif /* IXANY */
+#endif /* USE_XON_XOFF */
+
+  /* Only turn this off if we are using all 8 bits. */
+  if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag)
+    tiop->c_iflag &= ~(ISTRIP | INPCK);
+
+  /* Make sure we differentiate between CR and NL on input. */
+  tiop->c_iflag &= ~(ICRNL | INLCR);
+
+#if !defined (HANDLE_SIGNALS)
+  tiop->c_lflag &= ~ISIG;
+#else
+  tiop->c_lflag |= ISIG;
+#endif
+
+  tiop->c_cc[VMIN] = 1;
+  tiop->c_cc[VTIME] = 0;
+
+#if defined (FLUSHO)
+  if (OUTPUT_BEING_FLUSHED (tiop))
+    {
+      tiop->c_lflag &= ~FLUSHO;
+      oldtio.c_lflag &= ~FLUSHO;
+    }
+#endif
+
+  /* Turn off characters that we need on Posix systems with job control,
+     just to be sure.  This includes ^Y and ^V.  This should not really
+     be necessary.  */
+#if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE)
+
+#if defined (VLNEXT)
+  tiop->c_cc[VLNEXT] = _POSIX_VDISABLE;
+#endif
+
+#if defined (VDSUSP)
+  tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
+#endif
+
+#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
+}
+#endif  /* !NEW_TTY_DRIVER */
+
+/* Put the terminal in CBREAK mode so that we can detect key presses. */
+#if defined (NO_TTY_DRIVER)
+void
+rl_prep_terminal (meta_flag)
+     int meta_flag;
+{
+  _rl_echoing_p = 1;
+}
+
+void
+rl_deprep_terminal ()
+{
+}
+
+#else /* ! NO_TTY_DRIVER */
+void
+rl_prep_terminal (meta_flag)
+     int meta_flag;
+{
+  int tty;
+  TIOTYPE tio;
+
+  if (terminal_prepped)
+    return;
+
+  /* Try to keep this function from being INTerrupted. */
+  _rl_block_sigint ();
+
+  tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
+
+  if (get_tty_settings (tty, &tio) < 0)
+    {
+#if defined (ENOTSUP)
+      /* MacOS X and Linux, at least, lie about the value of errno if
+        tcgetattr fails. */
+      if (errno == ENOTTY || errno == EINVAL || errno == ENOTSUP)
+#else
+      if (errno == ENOTTY || errno == EINVAL)
+#endif
+       _rl_echoing_p = 1;              /* XXX */
+
+      _rl_release_sigint ();
+      return;
+    }
+
+  otio = tio;
+
+  if (_rl_bind_stty_chars)
+    {
+#if defined (VI_MODE)
+      /* If editing in vi mode, make sure we restore the bindings in the
+        insertion keymap no matter what keymap we ended up in. */
+      if (rl_editing_mode == vi_mode)
+       rl_tty_unset_default_bindings (vi_insertion_keymap);
+      else
+#endif
+       rl_tty_unset_default_bindings (_rl_keymap);
+    }
+  save_tty_chars (&otio);
+  RL_SETSTATE(RL_STATE_TTYCSAVED);
+  if (_rl_bind_stty_chars)
+    {
+#if defined (VI_MODE)
+      /* If editing in vi mode, make sure we set the bindings in the
+        insertion keymap no matter what keymap we ended up in. */
+      if (rl_editing_mode == vi_mode)
+       _rl_bind_tty_special_chars (vi_insertion_keymap, tio);  
+      else
+#endif
+       _rl_bind_tty_special_chars (_rl_keymap, tio);
+    }
+
+  prepare_terminal_settings (meta_flag, otio, &tio);
+
+  if (set_tty_settings (tty, &tio) < 0)
+    {
+      _rl_release_sigint ();
+      return;
+    }
+
+  if (_rl_enable_keypad)
+    _rl_control_keypad (1);
+
+  fflush (rl_outstream);
+  terminal_prepped = 1;
+  RL_SETSTATE(RL_STATE_TERMPREPPED);
+
+  _rl_release_sigint ();
+}
+
+/* Restore the terminal's normal settings and modes. */
+void
+rl_deprep_terminal ()
+{
+  int tty;
+
+  if (!terminal_prepped)
+    return;
+
+  /* Try to keep this function from being interrupted. */
+  _rl_block_sigint ();
+
+  tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
+
+  if (_rl_enable_keypad)
+    _rl_control_keypad (0);
+
+  fflush (rl_outstream);
+
+  if (set_tty_settings (tty, &otio) < 0)
+    {
+      _rl_release_sigint ();
+      return;
+    }
+
+  terminal_prepped = 0;
+  RL_UNSETSTATE(RL_STATE_TERMPREPPED);
+
+  _rl_release_sigint ();
+}
+#endif /* !NO_TTY_DRIVER */
+\f
+/* **************************************************************** */
+/*                                                                 */
+/*                     Bogus Flow Control                          */
+/*                                                                 */
+/* **************************************************************** */
+
+int
+rl_restart_output (count, key)
+     int count, key;
+{
+#if defined (__MINGW32__)
+  return 0;
+#else /* !__MING32__ */
+
+  int fildes = fileno (rl_outstream);
+#if defined (TIOCSTART)
+#if defined (apollo)
+  ioctl (&fildes, TIOCSTART, 0);
+#else
+  ioctl (fildes, TIOCSTART, 0);
+#endif /* apollo */
+
+#else /* !TIOCSTART */
+#  if defined (TERMIOS_TTY_DRIVER)
+#    if defined (__ksr1__)
+  if (ksrflow)
+    {
+      ksrflow = 0;
+      tcflow (fildes, TCOON);
+    }
+#    else /* !ksr1 */
+  tcflow (fildes, TCOON);              /* Simulate a ^Q. */
+#    endif /* !ksr1 */
+#  else /* !TERMIOS_TTY_DRIVER */
+#    if defined (TCXONC)
+  ioctl (fildes, TCXONC, TCOON);
+#    endif /* TCXONC */
+#  endif /* !TERMIOS_TTY_DRIVER */
+#endif /* !TIOCSTART */
+
+  return 0;
+#endif /* !__MINGW32__ */
+}
+
+int
+rl_stop_output (count, key)
+     int count, key;
+{
+#if defined (__MINGW32__)
+  return 0;
+#else
+
+  int fildes = fileno (rl_instream);
+
+#if defined (TIOCSTOP)
+# if defined (apollo)
+  ioctl (&fildes, TIOCSTOP, 0);
+# else
+  ioctl (fildes, TIOCSTOP, 0);
+# endif /* apollo */
+#else /* !TIOCSTOP */
+# if defined (TERMIOS_TTY_DRIVER)
+#  if defined (__ksr1__)
+  ksrflow = 1;
+#  endif /* ksr1 */
+  tcflow (fildes, TCOOFF);
+# else
+#   if defined (TCXONC)
+  ioctl (fildes, TCXONC, TCOON);
+#   endif /* TCXONC */
+# endif /* !TERMIOS_TTY_DRIVER */
+#endif /* !TIOCSTOP */
+
+  return 0;
+#endif /* !__MINGW32__ */
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Default Key Bindings                        */
+/*                                                                 */
+/* **************************************************************** */
+
+#if !defined (NO_TTY_DRIVER)
+#define SET_SPECIAL(sc, func)  set_special_char(kmap, &ttybuff, sc, func)
+#endif
+
+#if defined (NO_TTY_DRIVER)
+
+#define SET_SPECIAL(sc, func)
+#define RESET_SPECIAL(c)
+
+#elif defined (NEW_TTY_DRIVER)
+static void
+set_special_char (kmap, tiop, sc, func)
+     Keymap kmap;
+     TIOTYPE *tiop;
+     int sc;
+     rl_command_func_t *func;
+{
+  if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC)
+    kmap[(unsigned char)sc].function = func;
+}
+
+#define RESET_SPECIAL(c) \
+  if (c != -1 && kmap[(unsigned char)c].type == ISFUNC) \
+    kmap[(unsigned char)c].function = rl_insert;
+
+static void
+_rl_bind_tty_special_chars (kmap, ttybuff)
+     Keymap kmap;
+     TIOTYPE ttybuff;
+{
+  if (ttybuff.flags & SGTTY_SET)
+    {
+      SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout);
+      SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard);
+    }
+
+#  if defined (TIOCGLTC)
+  if (ttybuff.flags & LTCHARS_SET)
+    {
+      SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout);
+      SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert);
+    }
+#  endif /* TIOCGLTC */
+}
+
+#else /* !NEW_TTY_DRIVER */
+static void
+set_special_char (kmap, tiop, sc, func)
+     Keymap kmap;
+     TIOTYPE *tiop;
+     int sc;
+     rl_command_func_t *func;
+{
+  unsigned char uc;
+
+  uc = tiop->c_cc[sc];
+  if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC)
+    kmap[uc].function = func;
+}
+
+/* used later */
+#define RESET_SPECIAL(uc) \
+  if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \
+    kmap[uc].function = rl_insert;
+
+static void
+_rl_bind_tty_special_chars (kmap, ttybuff)
+     Keymap kmap;
+     TIOTYPE ttybuff;
+{
+  SET_SPECIAL (VERASE, rl_rubout);
+  SET_SPECIAL (VKILL, rl_unix_line_discard);
+
+#  if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
+  SET_SPECIAL (VLNEXT, rl_quoted_insert);
+#  endif /* VLNEXT && TERMIOS_TTY_DRIVER */
+
+#  if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
+  SET_SPECIAL (VWERASE, rl_unix_word_rubout);
+#  endif /* VWERASE && TERMIOS_TTY_DRIVER */
+}
+
+#endif /* !NEW_TTY_DRIVER */
+
+/* Set the system's default editing characters to their readline equivalents
+   in KMAP.  Should be static, now that we have rl_tty_set_default_bindings. */
+void
+rltty_set_default_bindings (kmap)
+     Keymap kmap;
+{
+#if !defined (NO_TTY_DRIVER)
+  TIOTYPE ttybuff;
+  int tty;
+
+  tty = fileno (rl_instream);
+
+  if (get_tty_settings (tty, &ttybuff) == 0)
+    _rl_bind_tty_special_chars (kmap, ttybuff);
+#endif
+}
+
+/* New public way to set the system default editing chars to their readline
+   equivalents. */
+void
+rl_tty_set_default_bindings (kmap)
+     Keymap kmap;
+{
+  rltty_set_default_bindings (kmap);
+}
+
+/* Rebind all of the tty special chars that readline worries about back
+   to self-insert.  Call this before saving the current terminal special
+   chars with save_tty_chars().  This only works on POSIX termios or termio
+   systems. */
+void
+rl_tty_unset_default_bindings (kmap)
+     Keymap kmap;
+{
+  /* Don't bother before we've saved the tty special chars at least once. */
+  if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0)
+    return;
+
+  RESET_SPECIAL (_rl_tty_chars.t_erase);
+  RESET_SPECIAL (_rl_tty_chars.t_kill);
+
+#  if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
+  RESET_SPECIAL (_rl_tty_chars.t_lnext);
+#  endif /* VLNEXT && TERMIOS_TTY_DRIVER */
+
+#  if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
+  RESET_SPECIAL (_rl_tty_chars.t_werase);
+#  endif /* VWERASE && TERMIOS_TTY_DRIVER */
+}
+
+#if defined (HANDLE_SIGNALS)
+
+#if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER)
+int
+_rl_disable_tty_signals ()
+{
+  return 0;
+}
+
+int
+_rl_restore_tty_signals ()
+{
+  return 0;
+}
+#else
+
+static TIOTYPE sigstty, nosigstty;
+static int tty_sigs_disabled = 0;
+
+int
+_rl_disable_tty_signals ()
+{
+  if (tty_sigs_disabled)
+    return 0;
+
+  if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0)
+    return -1;
+
+  nosigstty = sigstty;
+
+  nosigstty.c_lflag &= ~ISIG;
+  nosigstty.c_iflag &= ~IXON;
+
+  if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0)
+    return (_set_tty_settings (fileno (rl_instream), &sigstty));
+
+  tty_sigs_disabled = 1;
+  return 0;
+}
+
+int
+_rl_restore_tty_signals ()
+{
+  int r;
+
+  if (tty_sigs_disabled == 0)
+    return 0;
+
+  r = _set_tty_settings (fileno (rl_instream), &sigstty);
+
+  if (r == 0)
+    tty_sigs_disabled = 0;
+
+  return r;
+}
+#endif /* !NEW_TTY_DRIVER */
+
+#endif /* HANDLE_SIGNALS */
diff --git a/lib/readline/rltty.c~ b/lib/readline/rltty.c~
new file mode 100644 (file)
index 0000000..dd0a5cb
--- /dev/null
@@ -0,0 +1,977 @@
+/* rltty.c -- functions to prepare and restore the terminal for readline's
+   use. */
+
+/* Copyright (C) 1992-2005 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+#include <stdio.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include "rldefs.h"
+
+#if defined (GWINSZ_IN_SYS_IOCTL)
+#  include <sys/ioctl.h>
+#endif /* GWINSZ_IN_SYS_IOCTL */
+
+#include "rltty.h"
+#include "readline.h"
+#include "rlprivate.h"
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
+rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
+
+static void set_winsize PARAMS((int));
+
+/* **************************************************************** */
+/*                                                                 */
+/*                   Saving and Restoring the TTY                  */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Non-zero means that the terminal is in a prepped state. */
+static int terminal_prepped;
+
+static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;
+
+/* If non-zero, means that this process has called tcflow(fd, TCOOFF)
+   and output is suspended. */
+#if defined (__ksr1__)
+static int ksrflow;
+#endif
+
+/* Dummy call to force a backgrounded readline to stop before it tries
+   to get the tty settings. */
+static void
+set_winsize (tty)
+     int tty;
+{
+#if defined (TIOCGWINSZ)
+  struct winsize w;
+
+  if (ioctl (tty, TIOCGWINSZ, &w) == 0)
+      (void) ioctl (tty, TIOCSWINSZ, &w);
+#endif /* TIOCGWINSZ */
+}
+
+#if defined (NO_TTY_DRIVER)
+/* Nothing */
+#elif defined (NEW_TTY_DRIVER)
+
+/* Values for the `flags' field of a struct bsdtty.  This tells which
+   elements of the struct bsdtty have been fetched from the system and
+   are valid. */
+#define SGTTY_SET      0x01
+#define LFLAG_SET      0x02
+#define TCHARS_SET     0x04
+#define LTCHARS_SET    0x08
+
+struct bsdtty {
+  struct sgttyb sgttyb;        /* Basic BSD tty driver information. */
+  int lflag;           /* Local mode flags, like LPASS8. */
+#if defined (TIOCGETC)
+  struct tchars tchars;        /* Terminal special characters, including ^S and ^Q. */
+#endif
+#if defined (TIOCGLTC)
+  struct ltchars ltchars; /* 4.2 BSD editing characters */
+#endif
+  int flags;           /* Bitmap saying which parts of the struct are valid. */
+};
+
+#define TIOTYPE struct bsdtty
+
+static TIOTYPE otio;
+
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
+static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
+
+static void
+save_tty_chars (tiop)
+     TIOTYPE *tiop;
+{
+  _rl_last_tty_chars = _rl_tty_chars;
+
+  if (tiop->flags & SGTTY_SET)
+    {
+      _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase;
+      _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill;
+    }
+
+  if (tiop->flags & TCHARS_SET)
+    {
+      _rl_intr_char = _rl_tty_chars.t_intr = tiop->tchars.t_intrc;
+      _rl_quit_char = _rl_tty_chars.t_quit = tiop->tchars.t_quitc;
+
+      _rl_tty_chars.t_start = tiop->tchars.t_startc;
+      _rl_tty_chars.t_stop = tiop->tchars.t_stopc;
+      _rl_tty_chars.t_eof = tiop->tchars.t_eofc;
+      _rl_tty_chars.t_eol = '\n';
+      _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc;
+    }
+
+  if (tiop->flags & LTCHARS_SET)
+    {
+      _rl_susp_char = _rl_tty_chars.t_susp = tiop->ltchars.t_suspc;
+
+      _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc;
+      _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc;
+      _rl_tty_chars.t_flush = tiop->ltchars.t_flushc;
+      _rl_tty_chars.t_werase = tiop->ltchars.t_werasc;
+      _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc;
+    }
+
+  _rl_tty_chars.t_status = -1;
+}
+
+static int
+get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  set_winsize (tty);
+
+  tiop->flags = tiop->lflag = 0;
+
+  errno = 0;
+  if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0)
+    return -1;
+  tiop->flags |= SGTTY_SET;
+
+#if defined (TIOCLGET)
+  if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0)
+    tiop->flags |= LFLAG_SET;
+#endif
+
+#if defined (TIOCGETC)
+  if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0)
+    tiop->flags |= TCHARS_SET;
+#endif
+
+#if defined (TIOCGLTC)
+  if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0)
+    tiop->flags |= LTCHARS_SET;
+#endif
+
+  return 0;
+}
+
+static int
+set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  if (tiop->flags & SGTTY_SET)
+    {
+      ioctl (tty, TIOCSETN, &(tiop->sgttyb));
+      tiop->flags &= ~SGTTY_SET;
+    }
+  _rl_echoing_p = 1;
+
+#if defined (TIOCLSET)
+  if (tiop->flags & LFLAG_SET)
+    {
+      ioctl (tty, TIOCLSET, &(tiop->lflag));
+      tiop->flags &= ~LFLAG_SET;
+    }
+#endif
+
+#if defined (TIOCSETC)
+  if (tiop->flags & TCHARS_SET)
+    {
+      ioctl (tty, TIOCSETC, &(tiop->tchars));
+      tiop->flags &= ~TCHARS_SET;
+    }
+#endif
+
+#if defined (TIOCSLTC)
+  if (tiop->flags & LTCHARS_SET)
+    {
+      ioctl (tty, TIOCSLTC, &(tiop->ltchars));
+      tiop->flags &= ~LTCHARS_SET;
+    }
+#endif
+
+  return 0;
+}
+
+static void
+prepare_terminal_settings (meta_flag, oldtio, tiop)
+     int meta_flag;
+     TIOTYPE oldtio, *tiop;
+{
+  _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
+  _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL);
+
+  /* Copy the original settings to the structure we're going to use for
+     our settings. */
+  tiop->sgttyb = oldtio.sgttyb;
+  tiop->lflag = oldtio.lflag;
+#if defined (TIOCGETC)
+  tiop->tchars = oldtio.tchars;
+#endif
+#if defined (TIOCGLTC)
+  tiop->ltchars = oldtio.ltchars;
+#endif
+  tiop->flags = oldtio.flags;
+
+  /* First, the basic settings to put us into character-at-a-time, no-echo
+     input mode. */
+  tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD);
+  tiop->sgttyb.sg_flags |= CBREAK;
+
+  /* If this terminal doesn't care how the 8th bit is used, then we can
+     use it for the meta-key.  If only one of even or odd parity is
+     specified, then the terminal is using parity, and we cannot. */
+#if !defined (ANYP)
+#  define ANYP (EVENP | ODDP)
+#endif
+  if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) ||
+      ((oldtio.sgttyb.sg_flags & ANYP) == 0))
+    {
+      tiop->sgttyb.sg_flags |= ANYP;
+
+      /* Hack on local mode flags if we can. */
+#if defined (TIOCLGET)
+#  if defined (LPASS8)
+      tiop->lflag |= LPASS8;
+#  endif /* LPASS8 */
+#endif /* TIOCLGET */
+    }
+
+#if defined (TIOCGETC)
+#  if defined (USE_XON_XOFF)
+  /* Get rid of terminal output start and stop characters. */
+  tiop->tchars.t_stopc = -1; /* C-s */
+  tiop->tchars.t_startc = -1; /* C-q */
+
+  /* If there is an XON character, bind it to restart the output. */
+  if (oldtio.tchars.t_startc != -1)
+    rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
+#  endif /* USE_XON_XOFF */
+
+  /* If there is an EOF char, bind _rl_eof_char to it. */
+  if (oldtio.tchars.t_eofc != -1)
+    _rl_eof_char = oldtio.tchars.t_eofc;
+
+#  if defined (NO_KILL_INTR)
+  /* Get rid of terminal-generated SIGQUIT and SIGINT. */
+  tiop->tchars.t_quitc = -1; /* C-\ */
+  tiop->tchars.t_intrc = -1; /* C-c */
+#  endif /* NO_KILL_INTR */
+#endif /* TIOCGETC */
+
+#if defined (TIOCGLTC)
+  /* Make the interrupt keys go away.  Just enough to make people happy. */
+  tiop->ltchars.t_dsuspc = -1; /* C-y */
+  tiop->ltchars.t_lnextc = -1; /* C-v */
+#endif /* TIOCGLTC */
+}
+
+#else  /* !defined (NEW_TTY_DRIVER) */
+
+#if !defined (VMIN)
+#  define VMIN VEOF
+#endif
+
+#if !defined (VTIME)
+#  define VTIME VEOL
+#endif
+
+#define USE_XON_XOFF
+
+#if defined (TERMIOS_TTY_DRIVER)
+#  define TIOTYPE struct termios
+#  define DRAIN_OUTPUT(fd)     tcdrain (fd)
+#  define GETATTR(tty, tiop)   (tcgetattr (tty, tiop))
+#  ifdef M_UNIX
+#    define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop))
+#  else
+#    define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop))
+#  endif /* !M_UNIX */
+#else
+#  define TIOTYPE struct termio
+#  define DRAIN_OUTPUT(fd)
+#  define GETATTR(tty, tiop)   (ioctl (tty, TCGETA, tiop))
+#  define SETATTR(tty, tiop)   (ioctl (tty, TCSETAW, tiop))
+#endif /* !TERMIOS_TTY_DRIVER */
+
+static TIOTYPE otio;
+
+static void save_tty_chars PARAMS((TIOTYPE *));
+static int _get_tty_settings PARAMS((int, TIOTYPE *));
+static int get_tty_settings PARAMS((int, TIOTYPE *));
+static int _set_tty_settings PARAMS((int, TIOTYPE *));
+static int set_tty_settings PARAMS((int, TIOTYPE *));
+
+static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+
+static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
+static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
+
+#if defined (FLUSHO)
+#  define OUTPUT_BEING_FLUSHED(tp)  (tp->c_lflag & FLUSHO)
+#else
+#  define OUTPUT_BEING_FLUSHED(tp)  0
+#endif
+
+static void
+save_tty_chars (tiop)
+     TIOTYPE *tiop;
+{
+  _rl_last_tty_chars = _rl_tty_chars;
+
+  _rl_tty_chars.t_eof = tiop->c_cc[VEOF];
+  _rl_tty_chars.t_eol = tiop->c_cc[VEOL];
+#ifdef VEOL2
+  _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2];
+#endif
+  _rl_tty_chars.t_erase = tiop->c_cc[VERASE];
+#ifdef VWERASE
+  _rl_tty_chars.t_werase = tiop->c_cc[VWERASE];
+#endif
+  _rl_tty_chars.t_kill = tiop->c_cc[VKILL];
+#ifdef VREPRINT
+  _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT];
+#endif
+  _rl_intr_char = _rl_tty_chars.t_intr = tiop->c_cc[VINTR];
+  _rl_quit_char = _rl_tty_chars.t_quit = tiop->c_cc[VQUIT];
+#ifdef VSUSP
+  _rl_susp_char = _rl_tty_chars.t_susp = tiop->c_cc[VSUSP];
+#endif
+#ifdef VDSUSP
+  _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP];
+#endif
+#ifdef VSTART
+  _rl_tty_chars.t_start = tiop->c_cc[VSTART];
+#endif
+#ifdef VSTOP
+  _rl_tty_chars.t_stop = tiop->c_cc[VSTOP];
+#endif
+#ifdef VLNEXT
+  _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT];
+#endif
+#ifdef VDISCARD
+  _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD];
+#endif
+#ifdef VSTATUS
+  _rl_tty_chars.t_status = tiop->c_cc[VSTATUS];
+#endif
+}
+
+#if defined (_AIX) || defined (_AIX41)
+/* Currently this is only used on AIX */
+static void
+rltty_warning (msg)
+     char *msg;
+{
+  _rl_errmsg ("warning: %s", msg);
+}
+#endif
+
+#if defined (_AIX)
+void
+setopost(tp)
+TIOTYPE *tp;
+{
+  if ((tp->c_oflag & OPOST) == 0)
+    {
+      _rl_errmsg ("warning: turning on OPOST for terminal\r");
+      tp->c_oflag |= OPOST|ONLCR;
+    }
+}
+#endif
+
+static int
+_get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  int ioctl_ret;
+
+  while (1)
+    {
+      ioctl_ret = GETATTR (tty, tiop);
+      if (ioctl_ret < 0)
+       {
+         if (errno != EINTR)
+           return -1;
+         else
+           continue;
+       }
+      if (OUTPUT_BEING_FLUSHED (tiop))
+       {
+#if defined (FLUSHO)
+         _rl_errmsg ("warning: turning off output flushing");
+         tiop->c_lflag &= ~FLUSHO;
+         break;
+#else
+         continue;
+#endif
+       }
+      break;
+    }
+
+  return 0;
+}
+
+static int
+get_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  set_winsize (tty);
+
+  errno = 0;
+  if (_get_tty_settings (tty, tiop) < 0)
+    return -1;
+
+#if defined (_AIX)
+  setopost(tiop);
+#endif
+
+  return 0;
+}
+
+static int
+_set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  while (SETATTR (tty, tiop) < 0)
+    {
+      if (errno != EINTR)
+       return -1;
+      errno = 0;
+    }
+  return 0;
+}
+
+static int
+set_tty_settings (tty, tiop)
+     int tty;
+     TIOTYPE *tiop;
+{
+  if (_set_tty_settings (tty, tiop) < 0)
+    return -1;
+    
+#if 0
+
+#if defined (TERMIOS_TTY_DRIVER)
+#  if defined (__ksr1__)
+  if (ksrflow)
+    {
+      ksrflow = 0;
+      tcflow (tty, TCOON);
+    }
+#  else /* !ksr1 */
+  tcflow (tty, TCOON);         /* Simulate a ^Q. */
+#  endif /* !ksr1 */
+#else
+  ioctl (tty, TCXONC, 1);      /* Simulate a ^Q. */
+#endif /* !TERMIOS_TTY_DRIVER */
+
+#endif /* 0 */
+
+  return 0;
+}
+
+static void
+prepare_terminal_settings (meta_flag, oldtio, tiop)
+     int meta_flag;
+     TIOTYPE oldtio, *tiop;
+{
+  _rl_echoing_p = (oldtio.c_lflag & ECHO);
+#if defined (ECHOCTL)
+  _rl_echoctl = (oldtio.c_lflag & ECHOCTL);
+#endif
+
+  tiop->c_lflag &= ~(ICANON | ECHO);
+
+  if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE)
+    _rl_eof_char = oldtio.c_cc[VEOF];
+
+#if defined (USE_XON_XOFF)
+#if defined (IXANY)
+  tiop->c_iflag &= ~(IXON | IXANY);
+#else
+  /* `strict' Posix systems do not define IXANY. */
+  tiop->c_iflag &= ~IXON;
+#endif /* IXANY */
+#endif /* USE_XON_XOFF */
+
+  /* Only turn this off if we are using all 8 bits. */
+  if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag)
+    tiop->c_iflag &= ~(ISTRIP | INPCK);
+
+  /* Make sure we differentiate between CR and NL on input. */
+  tiop->c_iflag &= ~(ICRNL | INLCR);
+
+#if !defined (HANDLE_SIGNALS)
+  tiop->c_lflag &= ~ISIG;
+#else
+  tiop->c_lflag |= ISIG;
+#endif
+
+  tiop->c_cc[VMIN] = 1;
+  tiop->c_cc[VTIME] = 0;
+
+#if defined (FLUSHO)
+  if (OUTPUT_BEING_FLUSHED (tiop))
+    {
+      tiop->c_lflag &= ~FLUSHO;
+      oldtio.c_lflag &= ~FLUSHO;
+    }
+#endif
+
+  /* Turn off characters that we need on Posix systems with job control,
+     just to be sure.  This includes ^Y and ^V.  This should not really
+     be necessary.  */
+#if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE)
+
+#if defined (VLNEXT)
+  tiop->c_cc[VLNEXT] = _POSIX_VDISABLE;
+#endif
+
+#if defined (VDSUSP)
+  tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
+#endif
+
+#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
+}
+#endif  /* !NEW_TTY_DRIVER */
+
+/* Put the terminal in CBREAK mode so that we can detect key presses. */
+#if defined (NO_TTY_DRIVER)
+void
+rl_prep_terminal (meta_flag)
+     int meta_flag;
+{
+  _rl_echoing_p = 1;
+}
+
+void
+rl_deprep_terminal ()
+{
+}
+
+#else /* ! NO_TTY_DRIVER */
+void
+rl_prep_terminal (meta_flag)
+     int meta_flag;
+{
+  int tty;
+  TIOTYPE tio;
+
+  if (terminal_prepped)
+    return;
+
+  /* Try to keep this function from being INTerrupted. */
+  _rl_block_sigint ();
+
+  tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
+
+  if (get_tty_settings (tty, &tio) < 0)
+    {
+#if defined (ENOTSUP)
+      /* MacOS X and Linux, at least, lie about the value of errno if
+        tcgetattr fails. */
+      if (errno == ENOTTY || errno == EINVAL || errno == ENOTSUP)
+#else
+      if (errno == ENOTTY || errno == EINVAL)
+#endif
+       _rl_echoing_p = 1;              /* XXX */
+
+      _rl_release_sigint ();
+      return;
+    }
+
+  otio = tio;
+
+  if (_rl_bind_stty_chars)
+    {
+#if defined (VI_MODE)
+      /* If editing in vi mode, make sure we restore the bindings in the
+        insertion keymap no matter what keymap we ended up in. */
+      if (rl_editing_mode == vi_mode)
+       rl_tty_unset_default_bindings (vi_insertion_keymap);
+      else
+#endif
+       rl_tty_unset_default_bindings (_rl_keymap);
+    }
+  save_tty_chars (&otio);
+  RL_SETSTATE(RL_STATE_TTYCSAVED);
+  if (_rl_bind_stty_chars)
+    {
+#if defined (VI_MODE)
+      /* If editing in vi mode, make sure we set the bindings in the
+        insertion keymap no matter what keymap we ended up in. */
+      if (rl_editing_mode == vi_mode)
+       _rl_bind_tty_special_chars (vi_insertion_keymap, tio);  
+      else
+#endif
+       _rl_bind_tty_special_chars (_rl_keymap, tio);
+    }
+
+  prepare_terminal_settings (meta_flag, otio, &tio);
+
+  if (set_tty_settings (tty, &tio) < 0)
+    {
+      _rl_release_sigint ();
+      return;
+    }
+
+  if (_rl_enable_keypad)
+    _rl_control_keypad (1);
+
+  fflush (rl_outstream);
+  terminal_prepped = 1;
+  RL_SETSTATE(RL_STATE_TERMPREPPED);
+
+  _rl_release_sigint ();
+}
+
+/* Restore the terminal's normal settings and modes. */
+void
+rl_deprep_terminal ()
+{
+  int tty;
+
+  if (!terminal_prepped)
+    return;
+
+  /* Try to keep this function from being interrupted. */
+  _rl_block_sigint ();
+
+  tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
+
+  if (_rl_enable_keypad)
+    _rl_control_keypad (0);
+
+  fflush (rl_outstream);
+
+  if (set_tty_settings (tty, &otio) < 0)
+    {
+      _rl_release_sigint ();
+      return;
+    }
+
+  terminal_prepped = 0;
+  RL_UNSETSTATE(RL_STATE_TERMPREPPED);
+
+  _rl_release_sigint ();
+}
+#endif /* !NO_TTY_DRIVER */
+\f
+/* **************************************************************** */
+/*                                                                 */
+/*                     Bogus Flow Control                          */
+/*                                                                 */
+/* **************************************************************** */
+
+int
+rl_restart_output (count, key)
+     int count, key;
+{
+#if defined (__MINGW32__)
+  return 0;
+#else /* !__MING32__ */
+
+  int fildes = fileno (rl_outstream);
+#if defined (TIOCSTART)
+#if defined (apollo)
+  ioctl (&fildes, TIOCSTART, 0);
+#else
+  ioctl (fildes, TIOCSTART, 0);
+#endif /* apollo */
+
+#else /* !TIOCSTART */
+#  if defined (TERMIOS_TTY_DRIVER)
+#    if defined (__ksr1__)
+  if (ksrflow)
+    {
+      ksrflow = 0;
+      tcflow (fildes, TCOON);
+    }
+#    else /* !ksr1 */
+  tcflow (fildes, TCOON);              /* Simulate a ^Q. */
+#    endif /* !ksr1 */
+#  else /* !TERMIOS_TTY_DRIVER */
+#    if defined (TCXONC)
+  ioctl (fildes, TCXONC, TCOON);
+#    endif /* TCXONC */
+#  endif /* !TERMIOS_TTY_DRIVER */
+#endif /* !TIOCSTART */
+
+  return 0;
+#endif /* !__MINGW32__ */
+}
+
+int
+rl_stop_output (count, key)
+     int count, key;
+{
+#if defined (__MINGW32__)
+  return 0;
+#else
+
+  int fildes = fileno (rl_instream);
+
+#if defined (TIOCSTOP)
+# if defined (apollo)
+  ioctl (&fildes, TIOCSTOP, 0);
+# else
+  ioctl (fildes, TIOCSTOP, 0);
+# endif /* apollo */
+#else /* !TIOCSTOP */
+# if defined (TERMIOS_TTY_DRIVER)
+#  if defined (__ksr1__)
+  ksrflow = 1;
+#  endif /* ksr1 */
+  tcflow (fildes, TCOOFF);
+# else
+#   if defined (TCXONC)
+  ioctl (fildes, TCXONC, TCOON);
+#   endif /* TCXONC */
+# endif /* !TERMIOS_TTY_DRIVER */
+#endif /* !TIOCSTOP */
+
+  return 0;
+#endif /* !__MINGW32__ */
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Default Key Bindings                        */
+/*                                                                 */
+/* **************************************************************** */
+
+#if !defined (NO_TTY_DRIVER)
+#define SET_SPECIAL(sc, func)  set_special_char(kmap, &ttybuff, sc, func)
+#endif
+
+#if defined (NO_TTY_DRIVER)
+
+#define SET_SPECIAL(sc, func)
+#define RESET_SPECIAL(c)
+
+#elif defined (NEW_TTY_DRIVER)
+static void
+set_special_char (kmap, tiop, sc, func)
+     Keymap kmap;
+     TIOTYPE *tiop;
+     int sc;
+     rl_command_func_t *func;
+{
+  if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC)
+    kmap[(unsigned char)sc].function = func;
+}
+
+#define RESET_SPECIAL(c) \
+  if (c != -1 && kmap[(unsigned char)c].type == ISFUNC) \
+    kmap[(unsigned char)c].function = rl_insert;
+
+static void
+_rl_bind_tty_special_chars (kmap, ttybuff)
+     Keymap kmap;
+     TIOTYPE ttybuff;
+{
+  if (ttybuff.flags & SGTTY_SET)
+    {
+      SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout);
+      SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard);
+    }
+
+#  if defined (TIOCGLTC)
+  if (ttybuff.flags & LTCHARS_SET)
+    {
+      SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout);
+      SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert);
+    }
+#  endif /* TIOCGLTC */
+}
+
+#else /* !NEW_TTY_DRIVER */
+static void
+set_special_char (kmap, tiop, sc, func)
+     Keymap kmap;
+     TIOTYPE *tiop;
+     int sc;
+     rl_command_func_t *func;
+{
+  unsigned char uc;
+
+  uc = tiop->c_cc[sc];
+  if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC)
+    kmap[uc].function = func;
+}
+
+/* used later */
+#define RESET_SPECIAL(uc) \
+  if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \
+    kmap[uc].function = rl_insert;
+
+static void
+_rl_bind_tty_special_chars (kmap, ttybuff)
+     Keymap kmap;
+     TIOTYPE ttybuff;
+{
+  SET_SPECIAL (VERASE, rl_rubout);
+  SET_SPECIAL (VKILL, rl_unix_line_discard);
+
+#  if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
+  SET_SPECIAL (VLNEXT, rl_quoted_insert);
+#  endif /* VLNEXT && TERMIOS_TTY_DRIVER */
+
+#  if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
+  SET_SPECIAL (VWERASE, rl_unix_word_rubout);
+#  endif /* VWERASE && TERMIOS_TTY_DRIVER */
+}
+
+#endif /* !NEW_TTY_DRIVER */
+
+/* Set the system's default editing characters to their readline equivalents
+   in KMAP.  Should be static, now that we have rl_tty_set_default_bindings. */
+void
+rltty_set_default_bindings (kmap)
+     Keymap kmap;
+{
+#if !defined (NO_TTY_DRIVER)
+  TIOTYPE ttybuff;
+  int tty;
+
+  tty = fileno (rl_instream);
+
+  if (get_tty_settings (tty, &ttybuff) == 0)
+    _rl_bind_tty_special_chars (kmap, ttybuff);
+#endif
+}
+
+/* New public way to set the system default editing chars to their readline
+   equivalents. */
+void
+rl_tty_set_default_bindings (kmap)
+     Keymap kmap;
+{
+  rltty_set_default_bindings (kmap);
+}
+
+/* Rebind all of the tty special chars that readline worries about back
+   to self-insert.  Call this before saving the current terminal special
+   chars with save_tty_chars().  This only works on POSIX termios or termio
+   systems. */
+void
+rl_tty_unset_default_bindings (kmap)
+     Keymap kmap;
+{
+  /* Don't bother before we've saved the tty special chars at least once. */
+  if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0)
+    return;
+
+  RESET_SPECIAL (_rl_tty_chars.t_erase);
+  RESET_SPECIAL (_rl_tty_chars.t_kill);
+
+#  if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
+  RESET_SPECIAL (_rl_tty_chars.t_lnext);
+#  endif /* VLNEXT && TERMIOS_TTY_DRIVER */
+
+#  if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
+  RESET_SPECIAL (_rl_tty_chars.t_werase);
+#  endif /* VWERASE && TERMIOS_TTY_DRIVER */
+}
+
+#if defined (HANDLE_SIGNALS)
+
+#if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER)
+int
+_rl_disable_tty_signals ()
+{
+  return 0;
+}
+
+int
+_rl_restore_tty_signals ()
+{
+  return 0;
+}
+#else
+
+static TIOTYPE sigstty, nosigstty;
+static int tty_sigs_disabled = 0;
+
+int
+_rl_disable_tty_signals ()
+{
+  if (tty_sigs_disabled)
+    return 0;
+
+  if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0)
+    return -1;
+
+  nosigstty = sigstty;
+
+  nosigstty.c_lflag &= ~ISIG;
+  nosigstty.c_iflag &= ~IXON;
+
+  if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0)
+    return (_set_tty_settings (fileno (rl_instream), &sigstty));
+
+  tty_sigs_disabled = 1;
+  return 0;
+}
+
+int
+_rl_restore_tty_signals ()
+{
+  int r;
+
+  if (tty_sigs_disabled == 0)
+    return 0;
+
+  r = _set_tty_settings (fileno (rl_instream), &sigstty);
+
+  if (r == 0)
+    tty_sigs_disabled = 0;
+
+  return r;
+}
+#endif /* !NEW_TTY_DRIVER */
+
+#endif /* HANDLE_SIGNALS */
index 688c249a0bbd527cc716ac999cbfbd5a9446a336..3d65dbb73cfec26c32229fb97f6cdcd8e98110ca 100644 (file)
@@ -585,21 +585,6 @@ _rl_block_sigint ()
   if (sigint_blocked)
     return;
 
-#if defined (HAVE_POSIX_SIGNALS)
-  sigemptyset (&sigint_set);
-  sigemptyset (&sigint_oset);
-  sigaddset (&sigint_set, SIGINT);
-  sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset);
-#else /* !HAVE_POSIX_SIGNALS */
-#  if defined (HAVE_BSD_SIGNALS)
-  sigint_oldmask = sigblock (sigmask (SIGINT));
-#  else /* !HAVE_BSD_SIGNALS */
-#    if defined (HAVE_USG_SIGHOLD)
-  sighold (SIGINT);
-#    endif /* HAVE_USG_SIGHOLD */
-#  endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
   sigint_blocked = 1;
 }
 
@@ -610,19 +595,8 @@ _rl_release_sigint ()
   if (sigint_blocked == 0)
     return;
 
-#if defined (HAVE_POSIX_SIGNALS)
-  sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL);
-#else
-#  if defined (HAVE_BSD_SIGNALS)
-  sigsetmask (sigint_oldmask);
-#  else /* !HAVE_BSD_SIGNALS */
-#    if defined (HAVE_USG_SIGHOLD)
-  sigrelse (SIGINT);
-#    endif /* HAVE_USG_SIGHOLD */
-#  endif /* !HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-
   sigint_blocked = 0;
+  RL_CHECK_SIGNALS ();
 }
 
 /* Cause SIGWINCH to not be delivered until the corresponding call to
diff --git a/lib/readline/signals.c~ b/lib/readline/signals.c~
new file mode 100644 (file)
index 0000000..688c249
--- /dev/null
@@ -0,0 +1,724 @@
+/* signals.c -- signal handling support for readline. */
+
+/* Copyright (C) 1987-2011 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <stdio.h>             /* Just for NULL.  Yuck. */
+#include <sys/types.h>
+#include <signal.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+/* System-specific feature definitions and include files. */
+#include "rldefs.h"
+
+#if defined (GWINSZ_IN_SYS_IOCTL)
+#  include <sys/ioctl.h>
+#endif /* GWINSZ_IN_SYS_IOCTL */
+
+/* Some standard library routines. */
+#include "readline.h"
+#include "history.h"
+
+#include "rlprivate.h"
+
+#if defined (HANDLE_SIGNALS)
+
+#if !defined (RETSIGTYPE)
+#  if defined (VOID_SIGHANDLER)
+#    define RETSIGTYPE void
+#  else
+#    define RETSIGTYPE int
+#  endif /* !VOID_SIGHANDLER */
+#endif /* !RETSIGTYPE */
+
+#if defined (VOID_SIGHANDLER)
+#  define SIGHANDLER_RETURN return
+#else
+#  define SIGHANDLER_RETURN return (0)
+#endif
+
+/* This typedef is equivalent to the one for Function; it allows us
+   to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */
+typedef RETSIGTYPE SigHandler ();
+
+#if defined (HAVE_POSIX_SIGNALS)
+typedef struct sigaction sighandler_cxt;
+#  define rl_sigaction(s, nh, oh)      sigaction(s, nh, oh)
+#else
+typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;
+#  define sigemptyset(m)
+#endif /* !HAVE_POSIX_SIGNALS */
+
+#ifndef SA_RESTART
+#  define SA_RESTART 0
+#endif
+
+static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
+static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
+static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *));
+
+static RETSIGTYPE rl_signal_handler PARAMS((int));
+static RETSIGTYPE _rl_handle_signal PARAMS((int));
+     
+/* Exported variables for use by applications. */
+
+/* If non-zero, readline will install its own signal handlers for
+   SIGINT, SIGTERM, SIGHUP, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
+int rl_catch_signals = 1;
+
+/* If non-zero, readline will install a signal handler for SIGWINCH. */
+#ifdef SIGWINCH
+int rl_catch_sigwinch = 1;
+#else
+int rl_catch_sigwinch = 0;     /* for the readline state struct in readline.c */
+#endif
+
+/* Private variables. */
+int _rl_interrupt_immediately = 0;
+int volatile _rl_caught_signal = 0;    /* should be sig_atomic_t, but that requires including <signal.h> everywhere */
+
+/* If non-zero, print characters corresponding to received signals as long as
+   the user has indicated his desire to do so (_rl_echo_control_chars). */
+int _rl_echoctl = 0;
+
+int _rl_intr_char = 0;
+int _rl_quit_char = 0;
+int _rl_susp_char = 0;
+
+static int signals_set_flag;
+static int sigwinch_set_flag;
+
+/* **************************************************************** */
+/*                                                                 */
+/*                        Signal Handling                          */
+/*                                                                 */
+/* **************************************************************** */
+
+static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;
+#if defined (SIGTSTP)
+static sighandler_cxt old_tstp, old_ttou, old_ttin;
+#endif
+#if defined (SIGWINCH)
+static sighandler_cxt old_winch;
+#endif
+
+_rl_sigcleanup_func_t *_rl_sigcleanup;
+void *_rl_sigcleanarg;
+
+/* Readline signal handler functions. */
+
+/* Called from RL_CHECK_SIGNALS() macro */
+RETSIGTYPE
+_rl_signal_handler (sig)
+     int sig;
+{
+  _rl_caught_signal = 0;       /* XXX */
+
+#if defined (SIGWINCH)
+  if (sig == SIGWINCH)
+    rl_resize_terminal ();
+  else
+#endif
+    _rl_handle_signal (sig);
+  SIGHANDLER_RETURN;
+}
+
+static RETSIGTYPE
+rl_signal_handler (sig)
+     int sig;
+{
+  if (_rl_interrupt_immediately)
+    {
+      _rl_interrupt_immediately = 0;
+      _rl_handle_signal (sig);
+    }
+  else
+    _rl_caught_signal = sig;
+
+  SIGHANDLER_RETURN;
+}
+
+static RETSIGTYPE
+_rl_handle_signal (sig)
+     int sig;
+{
+#if defined (HAVE_POSIX_SIGNALS)
+  sigset_t set;
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+  long omask;
+#  else /* !HAVE_BSD_SIGNALS */
+  sighandler_cxt dummy_cxt;    /* needed for rl_set_sighandler call */
+#  endif /* !HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+  RL_SETSTATE(RL_STATE_SIGHANDLER);
+
+#if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS)
+  /* Since the signal will not be blocked while we are in the signal
+     handler, ignore it until rl_clear_signals resets the catcher. */
+#  if defined (SIGALRM)
+  if (sig == SIGINT || sig == SIGALRM)
+#  else
+  if (sig == SIGINT)
+#  endif
+    rl_set_sighandler (sig, SIG_IGN, &dummy_cxt);
+#endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */
+
+  /* If there's a sig cleanup function registered, call it and `deregister'
+     the cleanup function to avoid multiple calls */
+  if (_rl_sigcleanup)
+    {
+      (*_rl_sigcleanup) (sig, _rl_sigcleanarg);
+      _rl_sigcleanup = 0;
+      _rl_sigcleanarg = 0;
+    }
+    
+  switch (sig)
+    {
+    case SIGINT:
+      _rl_reset_completion_state ();
+      rl_free_line_state ();
+      /* FALLTHROUGH */
+
+    case SIGTERM:
+    case SIGHUP:
+#if defined (SIGTSTP)
+    case SIGTSTP:
+    case SIGTTOU:
+    case SIGTTIN:
+#endif /* SIGTSTP */
+#if defined (SIGALRM)
+    case SIGALRM:
+#endif
+#if defined (SIGQUIT)
+    case SIGQUIT:
+#endif
+      rl_echo_signal_char (sig);
+      rl_cleanup_after_signal ();
+
+#if defined (HAVE_POSIX_SIGNALS)
+      sigemptyset (&set);
+      sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
+      sigdelset (&set, sig);
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+      omask = sigblock (0);
+#  endif /* HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+#if defined (__EMX__)
+      signal (sig, SIG_ACK);
+#endif
+
+#if defined (HAVE_KILL)
+      kill (getpid (), sig);
+#else
+      raise (sig);             /* assume we have raise */
+#endif
+
+      /* Let the signal that we just sent through.  */
+#if defined (HAVE_POSIX_SIGNALS)
+      sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL);
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+      sigsetmask (omask & ~(sigmask (sig)));
+#  endif /* HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+      rl_reset_after_signal ();
+    }
+
+  RL_UNSETSTATE(RL_STATE_SIGHANDLER);
+  SIGHANDLER_RETURN;
+}
+
+#if defined (SIGWINCH)
+static RETSIGTYPE
+rl_sigwinch_handler (sig)
+     int sig;
+{
+  SigHandler *oh;
+
+#if defined (MUST_REINSTALL_SIGHANDLERS)
+  sighandler_cxt dummy_winch;
+
+  /* We don't want to change old_winch -- it holds the state of SIGWINCH
+     disposition set by the calling application.  We need this state
+     because we call the application's SIGWINCH handler after updating
+     our own idea of the screen size. */
+  rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch);
+#endif
+
+  RL_SETSTATE(RL_STATE_SIGHANDLER);
+  _rl_caught_signal = sig;
+
+  /* If another sigwinch handler has been installed, call it. */
+  oh = (SigHandler *)old_winch.sa_handler;
+  if (oh &&  oh != (SigHandler *)SIG_IGN && oh != (SigHandler *)SIG_DFL)
+    (*oh) (sig);
+
+  RL_UNSETSTATE(RL_STATE_SIGHANDLER);
+  SIGHANDLER_RETURN;
+}
+#endif  /* SIGWINCH */
+
+/* Functions to manage signal handling. */
+
+#if !defined (HAVE_POSIX_SIGNALS)
+static int
+rl_sigaction (sig, nh, oh)
+     int sig;
+     sighandler_cxt *nh, *oh;
+{
+  oh->sa_handler = signal (sig, nh->sa_handler);
+  return 0;
+}
+#endif /* !HAVE_POSIX_SIGNALS */
+
+/* Set up a readline-specific signal handler, saving the old signal
+   information in OHANDLER.  Return the old signal handler, like
+   signal(). */
+static SigHandler *
+rl_set_sighandler (sig, handler, ohandler)
+     int sig;
+     SigHandler *handler;
+     sighandler_cxt *ohandler;
+{
+  sighandler_cxt old_handler;
+#if defined (HAVE_POSIX_SIGNALS)
+  struct sigaction act;
+
+  act.sa_handler = handler;
+#  if defined (SIGWINCH)
+  act.sa_flags = (sig == SIGWINCH) ? SA_RESTART : 0;
+#  else
+  act.sa_flags = 0;
+#  endif /* SIGWINCH */
+  sigemptyset (&act.sa_mask);
+  sigemptyset (&ohandler->sa_mask);
+  sigaction (sig, &act, &old_handler);
+#else
+  old_handler.sa_handler = (SigHandler *)signal (sig, handler);
+#endif /* !HAVE_POSIX_SIGNALS */
+
+  /* XXX -- assume we have memcpy */
+  /* If rl_set_signals is called twice in a row, don't set the old handler to
+     rl_signal_handler, because that would cause infinite recursion. */
+  if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler)
+    memcpy (ohandler, &old_handler, sizeof (sighandler_cxt));
+
+  return (ohandler->sa_handler);
+}
+
+/* Set disposition of SIG to HANDLER, returning old state in OHANDLER.  Don't
+   change disposition if OHANDLER indicates the signal was ignored. */
+static void
+rl_maybe_set_sighandler (sig, handler, ohandler)
+     int sig;
+     SigHandler *handler;
+     sighandler_cxt *ohandler;
+{
+  sighandler_cxt dummy;
+  SigHandler *oh;
+
+  sigemptyset (&dummy.sa_mask);
+  oh = rl_set_sighandler (sig, handler, ohandler);
+  if (oh == (SigHandler *)SIG_IGN)
+    rl_sigaction (sig, ohandler, &dummy);
+}
+
+/* Set the disposition of SIG to HANDLER, if HANDLER->sa_handler indicates the
+   signal was not being ignored.  MUST only be called for signals whose
+   disposition was changed using rl_maybe_set_sighandler or for which the
+   SIG_IGN check was performed inline (e.g., SIGALRM below). */
+static void
+rl_maybe_restore_sighandler (sig, handler)
+     int sig;
+     sighandler_cxt *handler;
+{
+  sighandler_cxt dummy;
+
+  sigemptyset (&dummy.sa_mask);
+  if (handler->sa_handler != SIG_IGN)
+    rl_sigaction (sig, handler, &dummy);
+}
+
+int
+rl_set_signals ()
+{
+  sighandler_cxt dummy;
+  SigHandler *oh;
+#if defined (HAVE_POSIX_SIGNALS)
+  static int sigmask_set = 0;
+  static sigset_t bset, oset;
+#endif
+
+#if defined (HAVE_POSIX_SIGNALS)
+  if (rl_catch_signals && sigmask_set == 0)
+    {
+      sigemptyset (&bset);
+
+      sigaddset (&bset, SIGINT);
+      sigaddset (&bset, SIGTERM);
+      sigaddset (&bset, SIGHUP);
+#if defined (SIGQUIT)
+      sigaddset (&bset, SIGQUIT);
+#endif
+#if defined (SIGALRM)
+      sigaddset (&bset, SIGALRM);
+#endif
+#if defined (SIGTSTP)
+      sigaddset (&bset, SIGTSTP);
+#endif
+#if defined (SIGTTIN)
+      sigaddset (&bset, SIGTTIN);
+#endif
+#if defined (SIGTTOU)
+      sigaddset (&bset, SIGTTOU);
+#endif
+      sigmask_set = 1;
+    }      
+#endif /* HAVE_POSIX_SIGNALS */
+
+  if (rl_catch_signals && signals_set_flag == 0)
+    {
+#if defined (HAVE_POSIX_SIGNALS)
+      sigemptyset (&oset);
+      sigprocmask (SIG_BLOCK, &bset, &oset);
+#endif
+
+      rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
+      rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term);
+      rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup);
+#if defined (SIGQUIT)
+      rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit);
+#endif
+
+#if defined (SIGALRM)
+      oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm);
+      if (oh == (SigHandler *)SIG_IGN)
+       rl_sigaction (SIGALRM, &old_alrm, &dummy);
+#if defined (HAVE_POSIX_SIGNALS) && defined (SA_RESTART)
+      /* If the application using readline has already installed a signal
+        handler with SA_RESTART, SIGALRM will cause reads to be restarted
+        automatically, so readline should just get out of the way.  Since
+        we tested for SIG_IGN above, we can just test for SIG_DFL here. */
+      if (oh != (SigHandler *)SIG_DFL && (old_alrm.sa_flags & SA_RESTART))
+       rl_sigaction (SIGALRM, &old_alrm, &dummy);
+#endif /* HAVE_POSIX_SIGNALS */
+#endif /* SIGALRM */
+
+#if defined (SIGTSTP)
+      rl_maybe_set_sighandler (SIGTSTP, rl_signal_handler, &old_tstp);
+#endif /* SIGTSTP */
+
+#if defined (SIGTTOU)
+      rl_maybe_set_sighandler (SIGTTOU, rl_signal_handler, &old_ttou);
+#endif /* SIGTTOU */
+
+#if defined (SIGTTIN)
+      rl_maybe_set_sighandler (SIGTTIN, rl_signal_handler, &old_ttin);
+#endif /* SIGTTIN */
+
+      signals_set_flag = 1;
+
+#if defined (HAVE_POSIX_SIGNALS)
+      sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+#endif
+    }
+
+#if defined (SIGWINCH)
+  if (rl_catch_sigwinch && sigwinch_set_flag == 0)
+    {
+      rl_maybe_set_sighandler (SIGWINCH, rl_sigwinch_handler, &old_winch);
+      sigwinch_set_flag = 1;
+    }
+#endif /* SIGWINCH */
+
+  return 0;
+}
+
+int
+rl_clear_signals ()
+{
+  sighandler_cxt dummy;
+
+  if (rl_catch_signals && signals_set_flag == 1)
+    {
+      sigemptyset (&dummy.sa_mask);
+
+      /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler,
+        we should in theory not have to restore a handler where
+        old_xxx.sa_handler == SIG_IGN.  That's what rl_maybe_restore_sighandler
+        does.  Fewer system calls should reduce readline's per-line
+        overhead */
+      rl_maybe_restore_sighandler (SIGINT, &old_int);
+      rl_maybe_restore_sighandler (SIGTERM, &old_term);
+      rl_maybe_restore_sighandler (SIGHUP, &old_hup);
+#if defined (SIGQUIT)
+      rl_maybe_restore_sighandler (SIGQUIT, &old_quit);
+#endif
+#if defined (SIGALRM)
+      rl_maybe_restore_sighandler (SIGALRM, &old_alrm);
+#endif
+
+#if defined (SIGTSTP)
+      rl_maybe_restore_sighandler (SIGTSTP, &old_tstp);
+#endif /* SIGTSTP */
+
+#if defined (SIGTTOU)
+      rl_maybe_restore_sighandler (SIGTTOU, &old_ttou);
+#endif /* SIGTTOU */
+
+#if defined (SIGTTIN)
+      rl_maybe_restore_sighandler (SIGTTIN, &old_ttin);
+#endif /* SIGTTIN */
+
+      signals_set_flag = 0;
+    }
+
+#if defined (SIGWINCH)
+  if (rl_catch_sigwinch && sigwinch_set_flag == 1)
+    {
+      sigemptyset (&dummy.sa_mask);
+      rl_sigaction (SIGWINCH, &old_winch, &dummy);
+      sigwinch_set_flag = 0;
+    }
+#endif
+
+  return 0;
+}
+
+/* Clean up the terminal and readline state after catching a signal, before
+   resending it to the calling application. */
+void
+rl_cleanup_after_signal ()
+{
+  _rl_clean_up_for_exit ();
+  if (rl_deprep_term_function)
+    (*rl_deprep_term_function) ();
+  rl_clear_pending_input ();
+  rl_clear_signals ();
+}
+
+/* Reset the terminal and readline state after a signal handler returns. */
+void
+rl_reset_after_signal ()
+{
+  if (rl_prep_term_function)
+    (*rl_prep_term_function) (_rl_meta_flag);
+  rl_set_signals ();
+}
+
+/* Free up the readline variable line state for the current line (undo list,
+   any partial history entry, any keyboard macros in progress, and any
+   numeric arguments in process) after catching a signal, before calling
+   rl_cleanup_after_signal(). */ 
+void
+rl_free_line_state ()
+{
+  register HIST_ENTRY *entry;
+
+  rl_free_undo_list ();
+
+  entry = current_history ();
+  if (entry)
+    entry->data = (char *)NULL;
+
+  _rl_kill_kbd_macro ();
+  rl_clear_message ();
+  _rl_reset_argument ();
+}
+
+#endif  /* HANDLE_SIGNALS */
+
+/* **************************************************************** */
+/*                                                                 */
+/*                        SIGINT Management                        */
+/*                                                                 */
+/* **************************************************************** */
+
+#if defined (HAVE_POSIX_SIGNALS)
+static sigset_t sigint_set, sigint_oset;
+static sigset_t sigwinch_set, sigwinch_oset;
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+static int sigint_oldmask;
+static int sigwinch_oldmask;
+#  endif /* HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+static int sigint_blocked;
+static int sigwinch_blocked;
+
+/* Cause SIGINT to not be delivered until the corresponding call to
+   release_sigint(). */
+void
+_rl_block_sigint ()
+{
+  if (sigint_blocked)
+    return;
+
+#if defined (HAVE_POSIX_SIGNALS)
+  sigemptyset (&sigint_set);
+  sigemptyset (&sigint_oset);
+  sigaddset (&sigint_set, SIGINT);
+  sigprocmask (SIG_BLOCK, &sigint_set, &sigint_oset);
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+  sigint_oldmask = sigblock (sigmask (SIGINT));
+#  else /* !HAVE_BSD_SIGNALS */
+#    if defined (HAVE_USG_SIGHOLD)
+  sighold (SIGINT);
+#    endif /* HAVE_USG_SIGHOLD */
+#  endif /* !HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+  sigint_blocked = 1;
+}
+
+/* Allow SIGINT to be delivered. */
+void
+_rl_release_sigint ()
+{
+  if (sigint_blocked == 0)
+    return;
+
+#if defined (HAVE_POSIX_SIGNALS)
+  sigprocmask (SIG_SETMASK, &sigint_oset, (sigset_t *)NULL);
+#else
+#  if defined (HAVE_BSD_SIGNALS)
+  sigsetmask (sigint_oldmask);
+#  else /* !HAVE_BSD_SIGNALS */
+#    if defined (HAVE_USG_SIGHOLD)
+  sigrelse (SIGINT);
+#    endif /* HAVE_USG_SIGHOLD */
+#  endif /* !HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+  sigint_blocked = 0;
+}
+
+/* Cause SIGWINCH to not be delivered until the corresponding call to
+   release_sigwinch(). */
+void
+_rl_block_sigwinch ()
+{
+  if (sigwinch_blocked)
+    return;
+
+#if defined (SIGWINCH)
+
+#if defined (HAVE_POSIX_SIGNALS)
+  sigemptyset (&sigwinch_set);
+  sigemptyset (&sigwinch_oset);
+  sigaddset (&sigwinch_set, SIGWINCH);
+  sigprocmask (SIG_BLOCK, &sigwinch_set, &sigwinch_oset);
+#else /* !HAVE_POSIX_SIGNALS */
+#  if defined (HAVE_BSD_SIGNALS)
+  sigwinch_oldmask = sigblock (sigmask (SIGWINCH));
+#  else /* !HAVE_BSD_SIGNALS */
+#    if defined (HAVE_USG_SIGHOLD)
+  sighold (SIGWINCH);
+#    endif /* HAVE_USG_SIGHOLD */
+#  endif /* !HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+#endif /* SIGWINCH */
+
+  sigwinch_blocked = 1;
+}
+
+/* Allow SIGWINCH to be delivered. */
+void
+_rl_release_sigwinch ()
+{
+  if (sigwinch_blocked == 0)
+    return;
+
+#if defined (SIGWINCH)
+
+#if defined (HAVE_POSIX_SIGNALS)
+  sigprocmask (SIG_SETMASK, &sigwinch_oset, (sigset_t *)NULL);
+#else
+#  if defined (HAVE_BSD_SIGNALS)
+  sigsetmask (sigwinch_oldmask);
+#  else /* !HAVE_BSD_SIGNALS */
+#    if defined (HAVE_USG_SIGHOLD)
+  sigrelse (SIGWINCH);
+#    endif /* HAVE_USG_SIGHOLD */
+#  endif /* !HAVE_BSD_SIGNALS */
+#endif /* !HAVE_POSIX_SIGNALS */
+
+#endif /* SIGWINCH */
+
+  sigwinch_blocked = 0;
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*             Echoing special control characters                  */
+/*                                                                 */
+/* **************************************************************** */
+void
+rl_echo_signal_char (sig)
+     int sig;
+{
+  char cstr[3];
+  int cslen, c;
+
+  if (_rl_echoctl == 0 || _rl_echo_control_chars == 0)
+    return;
+
+  switch (sig)
+    {
+    case SIGINT:  c = _rl_intr_char; break;
+#if defined (SIGQUIT)
+    case SIGQUIT: c = _rl_quit_char; break;
+#endif
+#if defined (SIGTSTP)
+    case SIGTSTP: c = _rl_susp_char; break;
+#endif
+    default: return;
+    }
+
+  if (CTRL_CHAR (c) || c == RUBOUT)
+    {
+      cstr[0] = '^';
+      cstr[1] = CTRL_CHAR (c) ? UNCTRL (c) : '?';
+      cstr[cslen = 2] = '\0';
+    }
+  else
+    {
+      cstr[0] = c;
+      cstr[cslen = 1] = '\0';
+    }
+
+  _rl_output_some_chars (cstr, cslen);
+}
index 5882371a7f650249b79637176b73e4fca51fe5c0..f43e02387997361847b96c891b60c4beb7566e1c 100644 (file)
@@ -108,7 +108,11 @@ _rl_abort_internal ()
     _rl_pop_executing_macro ();
 
   rl_last_func = (rl_command_func_t *)NULL;
+#if defined (HAVE_POSIX_SIGSETJMP)
+  siglongjmp (_rl_top_level, 1);
+#else
   longjmp (_rl_top_level, 1);
+#endif
   return (0);
 }
 
diff --git a/lib/readline/util.c~ b/lib/readline/util.c~
new file mode 100644 (file)
index 0000000..5882371
--- /dev/null
@@ -0,0 +1,583 @@
+/* util.c -- readline utility functions */
+
+/* Copyright (C) 1987-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
+
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <fcntl.h>
+#include "posixjmp.h"
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>           /* for _POSIX_VERSION */
+#endif /* HAVE_UNISTD_H */
+
+#if defined (HAVE_STDLIB_H)
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif /* HAVE_STDLIB_H */
+
+#include <stdio.h>
+#include <ctype.h>
+
+/* System-specific feature definitions and include files. */
+#include "rldefs.h"
+#include "rlmbutil.h"
+
+#if defined (TIOCSTAT_IN_SYS_IOCTL)
+#  include <sys/ioctl.h>
+#endif /* TIOCSTAT_IN_SYS_IOCTL */
+
+/* Some standard library routines. */
+#include "readline.h"
+
+#include "rlprivate.h"
+#include "xmalloc.h"
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Utility Functions                           */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Return 0 if C is not a member of the class of characters that belong
+   in words, or 1 if it is. */
+
+int _rl_allow_pathname_alphabetic_chars = 0;
+static const char * const pathname_alphabetic_chars = "/-_=~.#$";
+
+int
+rl_alphabetic (c)
+     int c;
+{
+  if (ALPHABETIC (c))
+    return (1);
+
+  return (_rl_allow_pathname_alphabetic_chars &&
+           strchr (pathname_alphabetic_chars, c) != NULL);
+}
+
+#if defined (HANDLE_MULTIBYTE)
+int
+_rl_walphabetic (wchar_t wc)
+{
+  int c;
+
+  if (iswalnum (wc))
+    return (1);     
+
+  c = wc & 0177;
+  return (_rl_allow_pathname_alphabetic_chars &&
+           strchr (pathname_alphabetic_chars, c) != NULL);
+}
+#endif
+
+/* How to abort things. */
+int
+_rl_abort_internal ()
+{
+  rl_ding ();
+  rl_clear_message ();
+  _rl_reset_argument ();
+  rl_clear_pending_input ();
+
+  RL_UNSETSTATE (RL_STATE_MACRODEF);
+  while (rl_executing_macro)
+    _rl_pop_executing_macro ();
+
+  rl_last_func = (rl_command_func_t *)NULL;
+  longjmp (_rl_top_level, 1);
+  return (0);
+}
+
+int
+rl_abort (count, key)
+     int count, key;
+{
+  return (_rl_abort_internal ());
+}
+
+int
+_rl_null_function (count, key)
+     int count, key;
+{
+  return 0;
+}
+
+int
+rl_tty_status (count, key)
+     int count, key;
+{
+#if defined (TIOCSTAT)
+  ioctl (1, TIOCSTAT, (char *)0);
+  rl_refresh_line (count, key);
+#else
+  rl_ding ();
+#endif
+  return 0;
+}
+
+/* Return a copy of the string between FROM and TO.
+   FROM is inclusive, TO is not. */
+char *
+rl_copy_text (from, to)
+     int from, to;
+{
+  register int length;
+  char *copy;
+
+  /* Fix it if the caller is confused. */
+  if (from > to)
+    SWAP (from, to);
+
+  length = to - from;
+  copy = (char *)xmalloc (1 + length);
+  strncpy (copy, rl_line_buffer + from, length);
+  copy[length] = '\0';
+  return (copy);
+}
+
+/* Increase the size of RL_LINE_BUFFER until it has enough space to hold
+   LEN characters. */
+void
+rl_extend_line_buffer (len)
+     int len;
+{
+  while (len >= rl_line_buffer_len)
+    {
+      rl_line_buffer_len += DEFAULT_BUFFER_SIZE;
+      rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len);
+    }
+
+  _rl_set_the_line ();
+}
+
+
+/* A function for simple tilde expansion. */
+int
+rl_tilde_expand (ignore, key)
+     int ignore, key;
+{
+  register int start, end;
+  char *homedir, *temp;
+  int len;
+
+  end = rl_point;
+  start = end - 1;
+
+  if (rl_point == rl_end && rl_line_buffer[rl_point] == '~')
+    {
+      homedir = tilde_expand ("~");
+      _rl_replace_text (homedir, start, end);
+      xfree (homedir);
+      return (0);
+    }
+  else if (rl_line_buffer[start] != '~')
+    {
+      for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
+        ;
+      start++;
+    }
+
+  end = start;
+  do
+    end++;
+  while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end);
+
+  if (whitespace (rl_line_buffer[end]) || end >= rl_end)
+    end--;
+
+  /* If the first character of the current word is a tilde, perform
+     tilde expansion and insert the result.  If not a tilde, do
+     nothing. */
+  if (rl_line_buffer[start] == '~')
+    {
+      len = end - start + 1;
+      temp = (char *)xmalloc (len + 1);
+      strncpy (temp, rl_line_buffer + start, len);
+      temp[len] = '\0';
+      homedir = tilde_expand (temp);
+      xfree (temp);
+
+      _rl_replace_text (homedir, start, end);
+      xfree (homedir);
+    }
+
+  return (0);
+}
+
+#if defined (USE_VARARGS)
+void
+#if defined (PREFER_STDARG)
+_rl_ttymsg (const char *format, ...)
+#else
+_rl_ttymsg (va_alist)
+     va_dcl
+#endif
+{
+  va_list args;
+#if defined (PREFER_VARARGS)
+  char *format;
+#endif
+
+#if defined (PREFER_STDARG)
+  va_start (args, format);
+#else
+  va_start (args);
+  format = va_arg (args, char *);
+#endif
+
+  fprintf (stderr, "readline: ");
+  vfprintf (stderr, format, args);
+  fprintf (stderr, "\n");
+  fflush (stderr);
+
+  va_end (args);
+
+  rl_forced_update_display ();
+}
+
+void
+#if defined (PREFER_STDARG)
+_rl_errmsg (const char *format, ...)
+#else
+_rl_errmsg (va_alist)
+     va_dcl
+#endif
+{
+  va_list args;
+#if defined (PREFER_VARARGS)
+  char *format;
+#endif
+
+#if defined (PREFER_STDARG)
+  va_start (args, format);
+#else
+  va_start (args);
+  format = va_arg (args, char *);
+#endif
+
+  fprintf (stderr, "readline: ");
+  vfprintf (stderr, format, args);
+  fprintf (stderr, "\n");
+  fflush (stderr);
+
+  va_end (args);
+}
+
+#else /* !USE_VARARGS */
+void
+_rl_ttymsg (format, arg1, arg2)
+     char *format;
+{
+  fprintf (stderr, "readline: ");
+  fprintf (stderr, format, arg1, arg2);
+  fprintf (stderr, "\n");
+
+  rl_forced_update_display ();
+}
+
+void
+_rl_errmsg (format, arg1, arg2)
+     char *format;
+{
+  fprintf (stderr, "readline: ");
+  fprintf (stderr, format, arg1, arg2);
+  fprintf (stderr, "\n");
+}
+#endif /* !USE_VARARGS */
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     String Utility Functions                    */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Determine if s2 occurs in s1.  If so, return a pointer to the
+   match in s1.  The compare is case insensitive. */
+char *
+_rl_strindex (s1, s2)
+     register const char *s1, *s2;
+{
+  register int i, l, len;
+
+  for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++)
+    if (_rl_strnicmp (s1 + i, s2, l) == 0)
+      return ((char *) (s1 + i));
+  return ((char *)NULL);
+}
+
+#ifndef HAVE_STRPBRK
+/* Find the first occurrence in STRING1 of any character from STRING2.
+   Return a pointer to the character in STRING1. */
+char *
+_rl_strpbrk (string1, string2)
+     const char *string1, *string2;
+{
+  register const char *scan;
+#if defined (HANDLE_MULTIBYTE)
+  mbstate_t ps;
+  register int i, v;
+
+  memset (&ps, 0, sizeof (mbstate_t));
+#endif
+
+  for (; *string1; string1++)
+    {
+      for (scan = string2; *scan; scan++)
+       {
+         if (*string1 == *scan)
+           return ((char *)string1);
+       }
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         v = _rl_get_char_len (string1, &ps);
+         if (v > 1)
+           string1 += v - 1;   /* -1 to account for auto-increment in loop */
+       }
+#endif
+    }
+  return ((char *)NULL);
+}
+#endif
+
+#if !defined (HAVE_STRCASECMP)
+/* Compare at most COUNT characters from string1 to string2.  Case
+   doesn't matter (strncasecmp). */
+int
+_rl_strnicmp (string1, string2, count)
+     char *string1, *string2;
+     int count;
+{
+  register char *s1, *s2;
+  int d;
+
+  if (count <= 0 || (string1 == string2))
+    return 0;
+
+  s1 = string1;
+  s2 = string2;
+  do
+    {
+      d = _rl_to_lower (*s1) - _rl_to_lower (*s2);     /* XXX - cast to unsigned char? */
+      if (d != 0)
+       return d;
+      if (*s1++ == '\0')
+        break;
+      s2++;
+    }
+  while (--count != 0)
+
+  return (0);
+}
+
+/* strcmp (), but caseless (strcasecmp). */
+int
+_rl_stricmp (string1, string2)
+     char *string1, *string2;
+{
+  register char *s1, *s2;
+  int d;
+
+  s1 = string1;
+  s2 = string2;
+
+  if (s1 == s2)
+    return 0;
+
+  while ((d = _rl_to_lower (*s1) - _rl_to_lower (*s2)) == 0)
+    {
+      if (*s1++ == '\0')
+        return 0;
+      s2++;
+    }
+
+  return (d);
+}
+#endif /* !HAVE_STRCASECMP */
+
+/* Stupid comparison routine for qsort () ing strings. */
+int
+_rl_qsort_string_compare (s1, s2)
+  char **s1, **s2;
+{
+#if defined (HAVE_STRCOLL)
+  return (strcoll (*s1, *s2));
+#else
+  int result;
+
+  result = **s1 - **s2;
+  if (result == 0)
+    result = strcmp (*s1, *s2);
+
+  return result;
+#endif
+}
+
+/* Function equivalents for the macros defined in chardefs.h. */
+#define FUNCTION_FOR_MACRO(f)  int (f) (c) int c; { return f (c); }
+
+FUNCTION_FOR_MACRO (_rl_digit_p)
+FUNCTION_FOR_MACRO (_rl_digit_value)
+FUNCTION_FOR_MACRO (_rl_lowercase_p)
+FUNCTION_FOR_MACRO (_rl_pure_alphabetic)
+FUNCTION_FOR_MACRO (_rl_to_lower)
+FUNCTION_FOR_MACRO (_rl_to_upper)
+FUNCTION_FOR_MACRO (_rl_uppercase_p)
+
+/* A convenience function, to force memory deallocation to be performed
+   by readline.  DLLs on Windows apparently require this. */
+void
+rl_free (mem)
+     void *mem;
+{
+  if (mem)
+    free (mem);
+}
+
+/* Backwards compatibility, now that savestring has been removed from
+   all `public' readline header files. */
+#undef _rl_savestring
+char *
+_rl_savestring (s)
+     const char *s;
+{
+  return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
+}
+
+#if defined (USE_VARARGS)
+static FILE *_rl_tracefp;
+
+void
+#if defined (PREFER_STDARG)
+_rl_trace (const char *format, ...)
+#else
+_rl_trace (va_alist)
+     va_dcl
+#endif
+{
+  va_list args;
+#if defined (PREFER_VARARGS)
+  char *format;
+#endif
+
+#if defined (PREFER_STDARG)
+  va_start (args, format);
+#else
+  va_start (args);
+  format = va_arg (args, char *);
+#endif
+
+  if (_rl_tracefp == 0)
+    _rl_tropen ();
+  vfprintf (_rl_tracefp, format, args);
+  fprintf (_rl_tracefp, "\n");
+  fflush (_rl_tracefp);
+
+  va_end (args);
+}
+
+int
+_rl_tropen ()
+{
+  char fnbuf[128];
+
+  if (_rl_tracefp)
+    fclose (_rl_tracefp);
+  sprintf (fnbuf, "/var/tmp/rltrace.%ld", (long)getpid());
+  unlink(fnbuf);
+  _rl_tracefp = fopen (fnbuf, "w+");
+  return _rl_tracefp != 0;
+}
+
+int
+_rl_trclose ()
+{
+  int r;
+
+  r = fclose (_rl_tracefp);
+  _rl_tracefp = 0;
+  return r;
+}
+
+void
+_rl_settracefp (fp)
+     FILE *fp;
+{
+  _rl_tracefp = fp;
+}
+#endif
+
+
+#if HAVE_DECL_AUDIT_USER_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT)
+#include <sys/socket.h>
+#include <linux/audit.h>
+#include <linux/netlink.h>
+
+/* Report STRING to the audit system. */
+void
+_rl_audit_tty (string)
+     char *string;
+{
+  struct sockaddr_nl addr;
+  struct msghdr msg;
+  struct nlmsghdr nlm;
+  struct iovec iov[2];
+  size_t size;
+  int fd;
+
+  fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
+  if (fd < 0)
+    return;
+  size = strlen (string) + 1;
+
+  nlm.nlmsg_len = NLMSG_LENGTH (size);
+  nlm.nlmsg_type = AUDIT_USER_TTY;
+  nlm.nlmsg_flags = NLM_F_REQUEST;
+  nlm.nlmsg_seq = 0;
+  nlm.nlmsg_pid = 0;
+
+  iov[0].iov_base = &nlm;
+  iov[0].iov_len = sizeof (nlm);
+  iov[1].iov_base = string;
+  iov[1].iov_len = size;
+
+  addr.nl_family = AF_NETLINK;
+  addr.nl_pid = 0;
+  addr.nl_groups = 0;
+
+  msg.msg_name = &addr;
+  msg.msg_namelen = sizeof (addr);
+  msg.msg_iov = iov;
+  msg.msg_iovlen = 2;
+  msg.msg_control = NULL;
+  msg.msg_controllen = 0;
+  msg.msg_flags = 0;
+
+  (void)sendmsg (fd, &msg, 0);
+  close (fd);
+}
+#endif
index 3127d8c4d3083efca9fa23a207e379c2765a5df7..5edc08aa0e661b73c88fc6f1b61dce3089bd54b0 100644 (file)
@@ -36,6 +36,7 @@
 #include <ctype.h>
 #include <xmalloc.h>
 
+#include <shmbchar.h>
 #include <shmbutil.h>
 #include <chartypes.h>
 
@@ -78,7 +79,7 @@ cval (s, i)
   int l;
   mbstate_t mps;  
 
-  if (MB_CUR_MAX == 1)
+  if (MB_CUR_MAX == 1 || is_basic (s[i]))
     return ((wchar_t)s[i]);
   l = strlen (s);
   if (i >= (l - 1))
@@ -202,7 +203,7 @@ sh_modcase (string, pat, flags)
       else
        nop = flags;
 
-      if (MB_CUR_MAX == 1 || isascii (wc))
+      if (MB_CUR_MAX == 1 || is_basic ((int)wc))
        {
          switch (nop)
          {
@@ -227,8 +228,8 @@ sh_modcase (string, pat, flags)
          {
          default:
          case CASE_NOOP:  nwc = wc; break;
-         case CASE_UPPER:  nwc = TOUPPER (wc); break;
-         case CASE_LOWER:  nwc = TOLOWER (wc); break;
+         case CASE_UPPER:  nwc = _to_wupper (wc); break;
+         case CASE_LOWER:  nwc = _to_wlower (wc); break;
          case CASE_TOGGLEALL:
          case CASE_TOGGLE: nwc = TOGGLE (wc); break;
          }
index e224d7fd7f2673edc66185d13597e4c630924faf..7bb60b3b5b39b559457e95d7e89e2a7060f8e2bd 100644 (file)
--- a/nojobs.c
+++ b/nojobs.c
@@ -520,6 +520,7 @@ make_child (command, async_p)
   if (pid < 0)
     {
       sys_error ("fork");
+      last_command_exit_value = EX_NOEXEC;
       throw_to_top_level ();
     }
 
index 18b76ac2cde4dcf554663c3cc77b1641cd133074..a01ad6ee18cfd873f12541760356e565044049e9 100644 (file)
@@ -25,6 +25,6 @@
    regexp `^#define[   ]*PATCHLEVEL', since that's what support/mkversion.sh
    looks for to find the patch level (for the sccs version string). */
 
-#define PATCHLEVEL 29
+#define PATCHLEVEL 36
 
 #endif /* _PATCHLEVEL_H_ */
index e82be7e38a2333fe80630cac73d1a43746124fed..3bce9c40b01a8899377d81e19102e23db8f7ac10 100644 (file)
@@ -211,7 +211,7 @@ darwin*|macosx*)
        SHLIB_LIBS='-lncurses'  # see if -lcurses works on MacOS X 10.1 
        ;;
 
-openbsd*|netbsd*)
+openbsd*|netbsd*|mirbsd*)
        SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared'