]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
Imported from ../bash-2.01.1.tar.gz.
authorJari Aalto <jari.aalto@cante.net>
Mon, 22 Sep 1997 20:22:27 +0000 (20:22 +0000)
committerJari Aalto <jari.aalto@cante.net>
Sat, 12 Sep 2009 16:46:51 +0000 (16:46 +0000)
50 files changed:
CHANGES
aclocal.m4
bashline.c
bracecomp.c
builtins/Makefile.in
builtins/declare.def
builtins/evalstring.c
builtins/read.def
builtins/setattr.def
builtins/trap.def
config.h.in
configure
configure.in
doc/Makefile.in
doc/bashref.info
doc/bashref.texi
doc/texinfo.tex
execute_cmd.c
externs.h
flags.c
general.c
jobs.c
lib/glob/Makefile.in
lib/malloc/Makefile.in
lib/readline/Makefile.in
lib/readline/complete.c
lib/readline/display.c
lib/readline/histfile.c
lib/readline/isearch.c
lib/readline/readline.h
lib/readline/tilde.c
lib/tilde/Makefile.in
lib/tilde/tilde.c
locale.c
mailcheck.c
oslib.c
parse.y
print_cmd.c
shell.c
sig.c
sig.h
siglist.c
subst.c
support/config.guess
test.c
tests/array.right
trap.c
variables.c
version.c
y.tab.c

diff --git a/CHANGES b/CHANGES
index a6f7472e6b380fd97aa219d31d52a2cc98a92245..830dafe443a839bf09c681507c7c6489fba957a8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,106 @@
+This document details the changes between this version, bash-2.01.1-release,
+and the previous version, bash-2.01-release.
+
+1.  Changes to Bash
+
+a.  The select command was fixed to check the validity of the user's
+    input more strenuously.
+
+b.  A bug was fixed that prevented `time' from timing commands correctly
+    when supplied as an argument to `bash -c'.
+
+c.  A fix was made to the mail checking code to keep from adding the same
+    mail file to the list of files to check multiple times when parsing
+    $MAILPATH.
+
+d.  Fixed an off-by-one error in the tilde expansion library.
+
+e.  When using the compound array assignment syntax, the old value of
+    the array is cleared before assigning the new value.
+
+f.  Fixed a bug that could cause a core dump when a trap handler was reset
+    to the default in the trap command associated with that signal.
+
+g.  Fixed a bug in the locale code that occurred when assigning a value
+    to LC_ALL.
+
+h.  A change was made to the parser so that words of the form xxx=(...)
+    are not considered compound assignment statements unless there are
+    characters before the `='.
+
+i.  A fix was made to the command tracing code to correctly quote each
+    word of output.
+
+j.  Some changes were made to the bash-specific autoconf tests to make them
+    more portable.
+
+k.  Completion of words with globbing characters now correctly quotes the
+    result.
+
+l.  The directory /var/spool/mail is now preferred to /usr/spool/mail when
+    configure is deciding on the default mail directory.
+
+m.  The brace completion code was fixed to not quote the `{' and `}'.
+
+n.  Some fixes were made to make $RANDOM more random in subshells.
+
+o.  System-specific changes were made to configure for: SVR4.2
+
+p.  Changes were made so that completion of words containing globbing chars
+    substitutes the result only if a single filename was matched.
+
+q.  The window size is now recomputed after a job is stopped with SIGTSTP if
+    the user has set `checkwinsize' with `shopt'.
+
+r.  When doing substring expansion, out-of-range substring specifiers now
+    cause nothing to be substituted rather than an expansion error.
+
+s.  A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' --
+    only `EXIT' and `DEBUG' are accepted.
+
+t.  The display of trapped signals now uses the signal number if signals
+    for which bash does not know the name are trapped.
+
+u.  A fix was made so that `bash -r' does not turn on restricted mode until
+    after the startup files are executed.
+
+v.  A bug was fixed that occasionally caused a core dump when a variable
+    found in the temporary environment of export/declare/readonly had a
+    null value.
+
+w.  A bug that occasionally caused unallocated memory to be passed to free()
+    when doing arithmetic substitution was fixed.
+
+x.  A bug that caused a buffer overrun when expanding a prompt string
+    containing `\w' and ${#PWD} exceeded PATH_MAX was fixed.
+
+y.  A problem with the completion code that occasionally caused it to
+    refer to a character before the beginning of the readline line buffer
+    was fixed.
+
+z.  A bug was fixed so that the `read' builtin restarts reads when
+    interrupted by signals other than SIGINT.
+
+aa. Fixed a bug that caused a command to be freed twice when there was
+    an evaluation error in the `eval' command.
+
+2.  Changes to Readline
+
+a.  Added a missing `extern' to a declaration in readline.h that kept
+    readline from compiling cleanly on some systems.
+
+b.  The history file is now opened with mode 0600 when it is written for
+    better security.
+
+c.  Changes were made to the SIGWINCH handling code so that prompt redisplay
+    is done better.
+
+d.  ^G now interrupts incremental searches correctly.
+
+e.  A bug that caused a core dump when the set of characters to be quoted
+    when completing words was empty was fixed.
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-2.01-release,
 and the previous version, bash-2.01-beta2.
 
index b852ac0239edc7ed4dd1b73211a66ec771745e9f..85fbb74aaefa6895b46d92353f1c3905dff1d223 100644 (file)
@@ -197,8 +197,26 @@ fi
 dnl
 dnl Check for sys_siglist[] or _sys_siglist[]
 dnl
+AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,
+[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
+AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
+[AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <signal.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif], [ char *msg = _sys_siglist[2]; ],
+  bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
+AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling))])dnl
+AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
+if test $bash_cv_decl_under_sys_siglist = yes; then
+AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED)
+fi
+])
+
 AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
-[AC_MSG_CHECKING([for _sys_siglist in system C library])
+[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
+AC_MSG_CHECKING([for _sys_siglist in system C library])
 AC_CACHE_VAL(bash_cv_under_sys_siglist,
 [AC_TRY_RUN([
 #include <sys/types.h>
@@ -206,12 +224,12 @@ AC_CACHE_VAL(bash_cv_under_sys_siglist,
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#ifndef _sys_siglist
+#ifndef UNDER_SYS_SIGLIST_DECLARED
 extern char *_sys_siglist[];
 #endif
 main()
 {
-char *msg = _sys_siglist[2];
+char *msg = (char *)_sys_siglist[2];
 exit(msg == 0);
 }],
 bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
@@ -434,7 +452,7 @@ typedef int (*_bashfunc)();
 main()
 {
 _bashfunc pf;
-pf = printf;
+pf = (_bashfunc) printf;
 exit(pf == 0);
 }
 ],bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
@@ -911,7 +929,10 @@ AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
 AC_CACHE_VAL(bash_cv_can_redecl_getpw,
 [AC_TRY_COMPILE([#include <sys/types.h>
 #include <pwd.h>
-extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();],
+extern struct passwd *getpwent();
+extern struct passwd *getpwuid();
+extern struct passwd *getpwnam();],
+[struct passwd *z; z = getpwent(); z = getpwuid(0); z = getpwnam("root");],
   bash_cv_can_redecl_getpw=yes,bash_cv_can_redecl_getpw=no)])
 AC_MSG_RESULT($bash_cv_can_redecl_getpw)
 if test $bash_cv_can_redecl_getpw = no; then
@@ -994,10 +1015,10 @@ AC_CACHE_VAL(bash_cv_mail_dir,
    bash_cv_mail_dir=/var/mail
  elif test -d /usr/mail; then
    bash_cv_mail_dir=/usr/mail
- elif test -d /usr/spool/mail; then
-   bash_cv_mail_dir=/usr/spool/mail
  elif test -d /var/spool/mail; then
    bash_cv_mail_dir=/var/spool/mail
+ elif test -d /usr/spool/mail; then
+   bash_cv_mail_dir=/usr/spool/mail
  else
    bash_cv_mail_dir=unknown
  fi
index fbd196a718c24a622986cf5301b787132eb74be7..4feb7be8584c164b21d7d8086b4353e4a38917ca 100644 (file)
@@ -700,8 +700,8 @@ attempt_shell_completion (text, start, end)
 
   /* Check that we haven't incorrectly flagged a closed command substitution
      as indicating we're in a command position. */
-  if (in_command_position && rl_line_buffer[ti] == '`' && *text != '`' && 
-       unclosed_pair (rl_line_buffer, 0, "`") == 0)
+  if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' &&
+       *text != '`' && unclosed_pair (rl_line_buffer, 0, "`") == 0)
     in_command_position = 0;
 
   /* Special handling for command substitution.  If *TEXT is a backquote,
@@ -744,7 +744,16 @@ attempt_shell_completion (text, start, end)
   /* This could be a globbing pattern, so try to expand it using pathname
      expansion. */
   if (!matches && glob_pattern_p (text))
-    matches = completion_matches (text, glob_complete_word);
+    {
+      matches = 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])
+       {
+         free_array (matches);
+         matches = (char **)0;
+       }
+    }
 
   return (matches);
 }
@@ -1801,6 +1810,7 @@ glob_complete_word (text, state)
 
   if (state == 0)
     {
+      rl_filename_completion_desired = 1;
       if (matches)
         free (matches);
       matches = shell_glob_filename (text);
index 47f6bc39d805e303c7d353efea8080b5bf7544d0..cca8d6ca630b5f9e642558eb5e59f735fac245df 100644 (file)
@@ -36,6 +36,8 @@
 #include "shell.h"
 #include <readline/readline.h>
 
+extern char *backslash_quote ();
+
 /* Find greatest common prefix of two strings. */
 static int
 string_gcd (s1, s2)
@@ -61,20 +63,19 @@ really_munge_braces (array, real_start, real_end, gcd_zero)
      int real_start, real_end, gcd_zero;
 {
   int start, end, gcd;
-  char *result, *subterm;
-  int result_size, flag;
+  char *result, *subterm, *x;
+  int result_size, flag, tlen;
 
   flag = 0;
 
   if (real_start == real_end)
     {
-      if (array[real_start])
-        return (savestring (array[real_start] + gcd_zero));
-      else
-        return (savestring (array[0]));
+      x = array[real_start] ? backslash_quote (array[real_start] + gcd_zero)
+                           : backslash_quote (array[0]);
+      return x;
     }
 
-  result = xmalloc (result_size = 1);
+  result = xmalloc (result_size = 16);
   *result = '\0';
 
   for (start = real_start; start < real_end; start = end + 1)
@@ -103,15 +104,29 @@ really_munge_braces (array, real_start, real_end, gcd_zero)
          flag++;
        }
 
+      /* Make sure we backslash quote every substring we insert into the
+        resultant brace expression.  This is so the default filename
+        quoting function won't inappropriately quote the braces. */
       if (start == end)
-       subterm = savestring (array[start] + gcd_zero);
+       {
+         x = savestring (array[start] + gcd_zero);
+         subterm = backslash_quote (x);
+         free (x);
+       }
       else
        {
          /* If there is more than one element in the subarray,
-            insert the prefix and an opening brace. */
-         result_size += gcd - gcd_zero + 1;
+            insert the (quoted) prefix and an opening brace. */
+         tlen = gcd - gcd_zero;
+         x = xmalloc (tlen + 1);
+         strncpy (x, array[start] + gcd_zero, tlen);
+         x[tlen] = '\0';
+         subterm = backslash_quote (x);
+         free (x);
+         result_size += strlen (subterm) + 1;
          result = xrealloc (result, result_size);
-         strncat (result, array[start] + gcd_zero, gcd - gcd_zero);
+         strcat (result, subterm);
+         free (subterm);
          strcat (result, "{");
          subterm = really_munge_braces (array, start, end + 1, gcd);
          subterm[strlen (subterm) - 1] = '}';
@@ -146,25 +161,35 @@ hack_braces_completion (names)
   names[0] = temp;
 }
 
+/* We handle quoting ourselves within hack_braces_completion, so we turn off
+   rl_filename_quoting_desired and rl_filename_quoting_function. */
 void
 bash_brace_completion ()
 {
   Function *orig_ignore_func;
   Function *orig_entry_func;
+  CPFunction *orig_quoting_func;
   CPPFunction *orig_attempt_func;
+  int orig_quoting_desired;
 
   orig_ignore_func = rl_ignore_some_completions_function;
   orig_attempt_func = rl_attempted_completion_function;
   orig_entry_func = rl_completion_entry_function;
+  orig_quoting_func = rl_filename_quoting_function;
+  orig_quoting_desired = rl_filename_quoting_desired;
 
   rl_completion_entry_function = (Function *) filename_completion_function;
   rl_attempted_completion_function = NULL;
   rl_ignore_some_completions_function = (Function *) hack_braces_completion;
+  rl_filename_quoting_function = NULL;
+  rl_filename_quoting_desired = 0;
 
   rl_complete_internal (TAB);
 
   rl_ignore_some_completions_function = orig_ignore_func;
   rl_attempted_completion_function = orig_attempt_func;
   rl_completion_entry_function = orig_entry_func;
+  rl_filename_quoting_function = orig_quoting_func;
+  rl_filename_quoting_desired = orig_quoting_desired;
 }
 #endif /* BRACE_EXPANSION && READLINE */
index 205f4fc49a1adc76a522cc898a7081a533f4d590..73e719d9c174b826ab90d137f380e29924605552 100644 (file)
@@ -97,8 +97,11 @@ mkbuiltins: $(srcdir)/mkbuiltins.c ../config.h
 common.o: common.c
 bashgetopt.o: bashgetopt.c
 getopt.o: getopt.c
+evalstring.o: evalstring.c
+evalfile.o: evalfile.c
 
-ulimit.o: ulimit.def pipesize.h
+ulimit.o: ulimit.def
+ulimit.o: pipesize.h
 
 pipesize.h:    psize.aux
        $(SHELL) $(srcdir)/psize.sh > pipesize.h
@@ -149,6 +152,7 @@ return.o: return.def
 set.o: set.def
 setattr.o: setattr.def
 shift.o: shift.def
+shopt.o: shopt.def
 source.o: source.def
 suspend.o: suspend.def
 test.o: test.def
index 10a314654bebe448faa9871a1af04401e160f8d4..ae49b66bfb144a986437cea92bb69e304172b580 100644 (file)
@@ -369,8 +369,10 @@ declare_internal (list, local_var)
            assign_array_var_from_string (var, value);
          else
 #endif
+         /* This essentially duplicates the internals of bind_variable() */
          if (offset)
            {
+             var->attributes &= ~att_invisible;
              t = make_variable_value (var, value);
              FREE (var->value);
              var->value = t;
index bf4a8a5b311489136e088ad07501fc7c78d2e1c0..1a22887dafb58b64be85f8d7b1bb518c5bad6091 100644 (file)
@@ -160,7 +160,9 @@ parse_and_execute (string, from_file, flags)
                }
              else
                {
-                 dispose_command (command);    /* XXX */
+#if 0
+                 dispose_command (command);    /* pe_dispose does this */
+#endif
                  continue;
                }
 
@@ -192,7 +194,8 @@ parse_and_execute (string, from_file, flags)
 #if defined (ONESHOT)
              if (startup_state == 2 && *bash_input.location.string == '\0' &&
                  command->type == cm_simple && !command->redirects &&
-                 !command->value.Simple->redirects)
+                 !command->value.Simple->redirects &&
+                 ((command->flags & CMD_TIME_PIPELINE) == 0))
                {
                  command->flags |= CMD_NO_FORK;
                  command->value.Simple->flags |= CMD_NO_FORK;
index 64a4a11a4a4723feaec3d89a98be2d45812f9162..e1e63541deadd4bb37972594d87280246e0b8ea6 100644 (file)
@@ -46,6 +46,8 @@ $END
 #  include <unistd.h>
 #endif
 
+#include <errno.h>
+
 #include "../shell.h"
 #include "common.h"
 #include "bashgetopt.h"
@@ -55,6 +57,10 @@ $END
 #include <readline/readline.h>
 #endif
 
+#if !defined(errno)
+extern int errno;
+#endif
+
 #define issep(c)       (strchr (ifs_chars, (c)))
 
 extern int interrupt_immediately;
@@ -180,8 +186,11 @@ read_builtin (list)
          c = rlbuf[rlind++];
        }
       else
-#endif   
-      if (read (0, &c, 1) != 1)
+#endif
+
+      while (((retval = read (0, &c, 1)) < 0) && errno == EINTR)
+        ;
+      if (retval <= 0)
        {
          eof = 1;
          break;
index e465eecb5cd76d4f1c897f70e110fd38338a06b0..d4068a33190453dbaf11a358ae9f3fc5122a0bbd 100644 (file)
@@ -326,7 +326,7 @@ show_var_attributes (var, pattr, nodefs)
     printf ("%s\n", named_function_string (var->name, function_cell (var), 1));
   else
     {
-      x = double_quote (value_cell (var));
+      x = double_quote (value_cell (var) ? value_cell (var) : "");
       printf ("%s=%s\n", var->name, x);
       free (x);
     }
@@ -366,7 +366,7 @@ set_var_attribute (name, attribute, undo)
     {
       if (tv = find_tempenv_variable (name))
        {
-         var = bind_variable (tv->name, tv->value);
+         var = bind_variable (tv->name, tv->value ? tv->value : "");
          dispose_variable (tv);
        }
       else
index 2d5daca7c60c290a57503e62efedb77bde4b4ae0..252a1dbeb51380ad79cd979d50987d5dc99b7e94 100644 (file)
@@ -191,7 +191,7 @@ static void
 showtrap (i)
      int i;
 {
-  char *t, *p;
+  char *t, *p, *sn;
 
   p = trap_list[i];
 
@@ -199,9 +199,15 @@ showtrap (i)
     return;
 
   t = (p == (char *)IGNORE_SIG) ? (char *)NULL : single_quote (p);
-  printf ("trap -- %s %s\n", t ? t : "''", signal_name (i));
-  if (t)
-    free (t);
+  sn = signal_name (i);
+  /* Make sure that signals whose names are unknown (for whatever reason)
+     are printed as signal numbers. */
+  if (STREQN (sn, "SIGJUNK", 7) || STREQN (sn, "unknown", 7))
+    printf ("trap -- %s %d\n", t ? t : "''", i);
+  else
+    printf ("trap -- %s %s\n", t ? t : "''", sn);
+
+  FREE (t);
 }
 
 static int
index 6a85ad78fa0453b8bbef745f1db4559716fd471f..cd1ef954ceffa69b3468a2651fc8a95c2ddaf6c9 100644 (file)
 /* Define if `sys_siglist' is declared by <signal.h>.  */
 #undef SYS_SIGLIST_DECLARED
 
+/* Define if `_sys_siglist' is declared by <signal.h> or <unistd.h>.  */
+#undef UNDER_SYS_SIGLIST_DECLARED
+
 /* Define to `int' if <sys/types.h> doesn't define.  */
 #undef uid_t
 
 #include "config.h.bot"
 
 #endif /* _CONFIG_H_ */
-
index 705c5afc5dfb5a3fd22e83c77562698905dab225..220b2e6c53c7baa3d1d2ad725bee2dd431bb2be1 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,8 @@
 #! /bin/sh
 
-# From configure.in for Bash 2.01, version 1.26, from autoconf version 2.12
+# From configure.in for Bash 2.01, version 1.28, from autoconf version 2.12
+
+
 
 
 
@@ -671,7 +673,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:675: checking host system type" >&5
+echo "configure:677: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -705,7 +707,7 @@ alpha-*)    opt_gnu_malloc=no ;;    # alpha running osf/1 or linux
 *-osf1*)       opt_gnu_malloc=no ;;    # other osf/1 machines
 sparc-svr4*)   opt_gnu_malloc=no ;;    # sparc SVR4, SVR4.2
 sparc-netbsd*) opt_gnu_malloc=no ;;    # needs 8-byte alignment
-*-sgi-irix6*)  opt_gnu_malloc=no ;;    # needs 8-byte alignment
+sgi-irix6*)    opt_gnu_malloc=no ;;    # needs 8-byte alignment
 sparc-linux*)  opt_gnu_malloc=no ;;    # sparc running linux; requires ELF
 *-freebsd*)    opt_gnu_malloc=no ;;    # they claim it's better
 *-aix*)                opt_gnu_malloc=no ;;    # AIX machines
@@ -713,7 +715,7 @@ sparc-linux*)       opt_gnu_malloc=no ;;    # sparc running linux; requires ELF
 *-dgux*)       opt_gnu_malloc=no ;;    # DG/UX machines
 *-qnx*)                opt_gnu_malloc=no ;;    # QNX 4.2
 *-machten4)    opt_gnu_malloc=no ;;    # MachTen 4.x
-*-bsdi2.1)     opt_gnu_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
+*-bsdi2.1|*-bsdi3.0)   opt_gnu_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
 esac
 
 # Check whether --with-afs or --without-afs was given.
@@ -1049,14 +1051,14 @@ fi
 
 
 BASHVERS=2.01
-BASHPATCH=0
+BASHPATCH=1
 
 echo "Beginning configuration for bash-$BASHVERS"
 
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1060: checking for $ac_word" >&5
+echo "configure:1062: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1085,7 +1087,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1089: checking for $ac_word" >&5
+echo "configure:1091: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1133,7 +1135,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1137: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1139: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1143,11 +1145,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 1147 "configure"
+#line 1149 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1167,12 +1169,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1171: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1173: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1176: checking whether we are using GNU C" >&5
+echo "configure:1178: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1181,7 +1183,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1196,7 +1198,7 @@ if test $ac_cv_prog_gcc = yes; then
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1200: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1202: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1224,7 +1226,7 @@ else
 fi
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1228: checking for POSIXized ISC" >&5
+echo "configure:1230: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1245,7 +1247,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1249: checking how to run the C preprocessor" >&5
+echo "configure:1251: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1260,13 +1262,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1264 "configure"
+#line 1266 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1277,13 +1279,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1281 "configure"
+#line 1283 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1289: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1307,17 +1309,17 @@ echo "$ac_t""$CPP" 1>&6
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1311: checking for minix/config.h" >&5
+echo "configure:1313: checking for minix/config.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1316 "configure"
+#line 1318 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1365,13 +1367,13 @@ test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2"
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:1369: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:1371: checking whether ${CC-cc} needs -traditional" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     ac_pattern="Autoconf.*'x'"
   cat > conftest.$ac_ext <<EOF
-#line 1375 "configure"
+#line 1377 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -1389,7 +1391,7 @@ rm -f conftest*
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 1393 "configure"
+#line 1395 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -1422,7 +1424,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1426: checking for a BSD compatible install" >&5
+echo "configure:1428: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1474,7 +1476,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1478: checking for $ac_word" >&5
+echo "configure:1480: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1502,7 +1504,7 @@ fi
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1506: checking for $ac_word" >&5
+echo "configure:1508: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1533,7 +1535,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1537: checking for $ac_word" >&5
+echo "configure:1539: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1563,7 +1565,7 @@ done
 test -n "$YACC" || YACC="yacc"
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1567: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1569: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1593,19 +1595,19 @@ fi
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1597: checking for working alloca.h" >&5
+echo "configure:1599: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1602 "configure"
+#line 1604 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:1609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -1626,12 +1628,12 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1630: checking for alloca" >&5
+echo "configure:1632: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1635 "configure"
+#line 1637 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -1654,7 +1656,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:1658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -1686,12 +1688,12 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1690: checking whether alloca needs Cray hooks" >&5
+echo "configure:1692: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1695 "configure"
+#line 1697 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -1716,12 +1718,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1720: checking for $ac_func" >&5
+echo "configure:1722: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1725 "configure"
+#line 1727 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1744,7 +1746,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -1771,7 +1773,7 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1775: checking stack direction for C alloca" >&5
+echo "configure:1777: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1779,7 +1781,7 @@ else
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 1783 "configure"
+#line 1785 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -1798,7 +1800,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:1802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -1820,7 +1822,7 @@ EOF
 fi
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:1824: checking whether getpgrp takes no argument" >&5
+echo "configure:1826: checking whether getpgrp takes no argument" >&5
 if eval "test \"`echo '$''{'ac_cv_func_getpgrp_void'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1828,7 +1830,7 @@ else
   { echo "configure: error: cannot check getpgrp if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 1832 "configure"
+#line 1834 "configure"
 #include "confdefs.h"
 
 /*
@@ -1883,7 +1885,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:1887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_getpgrp_void=yes
 else
@@ -1907,7 +1909,7 @@ EOF
 fi
 
 echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:1911: checking whether setvbuf arguments are reversed" >&5
+echo "configure:1913: checking whether setvbuf arguments are reversed" >&5
 if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1915,7 +1917,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 1919 "configure"
+#line 1921 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 /* If setvbuf has the reversed format, exit 0. */
@@ -1929,7 +1931,7 @@ main () {
   exit(0);                     /* Non-reversed systems segv here.  */
 }
 EOF
-if { (eval echo configure:1933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_setvbuf_reversed=yes
 else
@@ -1953,12 +1955,12 @@ EOF
 fi
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:1957: checking for vprintf" >&5
+echo "configure:1959: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1962 "configure"
+#line 1964 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -1981,7 +1983,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -2005,12 +2007,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2009: checking for _doprnt" >&5
+echo "configure:2011: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2014 "configure"
+#line 2016 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -2033,7 +2035,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -2058,7 +2060,7 @@ fi
 fi
 
 echo $ac_n "checking for wait3 that fills in rusage""... $ac_c" 1>&6
-echo "configure:2062: checking for wait3 that fills in rusage" >&5
+echo "configure:2064: checking for wait3 that fills in rusage" >&5
 if eval "test \"`echo '$''{'ac_cv_func_wait3_rusage'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2066,7 +2068,7 @@ else
   ac_cv_func_wait3_rusage=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2070 "configure"
+#line 2072 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2097,7 +2099,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:2101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_wait3_rusage=yes
 else
@@ -2120,7 +2122,7 @@ EOF
 fi
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:2124: checking for working strcoll" >&5
+echo "configure:2126: checking for working strcoll" >&5
 if eval "test \"`echo '$''{'ac_cv_func_strcoll_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2128,7 +2130,7 @@ else
   ac_cv_func_strcoll_works=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2132 "configure"
+#line 2134 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -2138,7 +2140,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:2142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_strcoll_works=yes
 else
@@ -2163,9 +2165,9 @@ fi
 
 if test "$ac_cv_func_vprintf" = no; then
     echo $ac_n "checking for declaration of vprintf in stdio.h""... $ac_c" 1>&6
-echo "configure:2167: checking for declaration of vprintf in stdio.h" >&5
+echo "configure:2169: checking for declaration of vprintf in stdio.h" >&5
     cat > conftest.$ac_ext <<EOF
-#line 2169 "configure"
+#line 2171 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 EOF
@@ -2186,12 +2188,12 @@ EOF
 fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2190: checking return type of signal handlers" >&5
+echo "configure:2192: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2195 "configure"
+#line 2197 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2208,7 +2210,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:2212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -2228,12 +2230,12 @@ EOF
 
 
 echo $ac_n "checking for __setostype""... $ac_c" 1>&6
-echo "configure:2232: checking for __setostype" >&5
+echo "configure:2234: checking for __setostype" >&5
 if eval "test \"`echo '$''{'ac_cv_func___setostype'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2237 "configure"
+#line 2239 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char __setostype(); below.  */
@@ -2256,7 +2258,7 @@ __setostype();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func___setostype=yes"
 else
@@ -2279,12 +2281,12 @@ else
 fi
 
 echo $ac_n "checking for wait3""... $ac_c" 1>&6
-echo "configure:2283: checking for wait3" >&5
+echo "configure:2285: checking for wait3" >&5
 if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2288 "configure"
+#line 2290 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char wait3(); below.  */
@@ -2307,7 +2309,7 @@ wait3();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_wait3=yes"
 else
@@ -2331,12 +2333,12 @@ fi
 
 
 echo $ac_n "checking for mkfifo""... $ac_c" 1>&6
-echo "configure:2335: checking for mkfifo" >&5
+echo "configure:2337: checking for mkfifo" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mkfifo'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2340 "configure"
+#line 2342 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char mkfifo(); below.  */
@@ -2359,7 +2361,7 @@ mkfifo();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_mkfifo=yes"
 else
@@ -2391,12 +2393,12 @@ for ac_func in dup2 select getdtablesize getgroups gethostname \
                getrlimit getrusage gettimeofday waitpid tcgetpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2395: checking for $ac_func" >&5
+echo "configure:2397: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2400 "configure"
+#line 2402 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2419,7 +2421,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2449,12 +2451,12 @@ for ac_func in bcopy bzero confstr getcwd strcasecmp setenv putenv \
                sysconf ulimit times tzset siginterrupt memmove
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2453: checking for $ac_func" >&5
+echo "configure:2455: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2458 "configure"
+#line 2460 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2477,7 +2479,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2506,17 +2508,17 @@ for ac_hdr in libintl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2510: checking for $ac_hdr" >&5
+echo "configure:2512: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2515 "configure"
+#line 2517 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2545,12 +2547,12 @@ done
 for ac_func in gettext textdomain bindtextdomain
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2549: checking for $ac_func" >&5
+echo "configure:2551: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2554 "configure"
+#line 2556 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2573,7 +2575,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2600,7 +2602,7 @@ done
 
 if test "$ac_cv_func_bindtextdomain" = "no"; then
     echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2604: checking for bindtextdomain in -lintl" >&5
+echo "configure:2606: checking for bindtextdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2608,7 +2610,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2612 "configure"
+#line 2614 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2619,7 +2621,7 @@ int main() {
 bindtextdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:2623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2650,12 +2652,12 @@ fi
        for ac_func in gettext textdomain bindtextdomain
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2654: checking for $ac_func" >&5
+echo "configure:2656: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2659 "configure"
+#line 2661 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2678,7 +2680,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2706,7 +2708,7 @@ done
 fi
 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2710: checking for dlopen in -ldl" >&5
+echo "configure:2712: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2714,7 +2716,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2718 "configure"
+#line 2720 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2725,7 +2727,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:2729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2755,12 +2757,12 @@ fi
 for ac_func in dlopen dlclose dlsym
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2759: checking for $ac_func" >&5
+echo "configure:2761: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2764 "configure"
+#line 2766 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2783,7 +2785,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2809,12 +2811,12 @@ done
 
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:2813: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:2815: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2818 "configure"
+#line 2820 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2826,7 +2828,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:2830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -2852,12 +2854,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:2856: checking for $ac_hdr that defines DIR" >&5
+echo "configure:2858: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2863 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -2865,7 +2867,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:2869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -2890,7 +2892,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2894: checking for opendir in -ldir" >&5
+echo "configure:2896: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2898,7 +2900,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2902 "configure"
+#line 2904 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2909,7 +2911,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2931,7 +2933,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2935: checking for opendir in -lx" >&5
+echo "configure:2937: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2939,7 +2941,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2943 "configure"
+#line 2945 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2950,7 +2952,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2973,12 +2975,12 @@ fi
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2977: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2979: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2982 "configure"
+#line 2984 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2987,7 +2989,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:2991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3013,17 +3015,17 @@ for ac_hdr in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3017: checking for $ac_hdr" >&5
+echo "configure:3019: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3022 "configure"
+#line 3024 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3055,17 +3057,17 @@ for ac_hdr in sys/ptem.h sys/pte.h sys/stream.h sys/select.h sys/file.h \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3059: checking for $ac_hdr" >&5
+echo "configure:3061: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3064 "configure"
+#line 3066 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3069: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3071: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3098,14 +3100,14 @@ if test "X$bash_cv_have_socklib" = "X"; then
 _bash_needmsg=
 else
 echo $ac_n "checking for socket library""... $ac_c" 1>&6
-echo "configure:3102: checking for socket library" >&5
+echo "configure:3104: checking for socket library" >&5
 _bash_needmsg=yes
 fi
 if eval "test \"`echo '$''{'bash_cv_have_socklib'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo $ac_n "checking for getpeername in -lsocket""... $ac_c" 1>&6
-echo "configure:3109: checking for getpeername in -lsocket" >&5
+echo "configure:3111: checking for getpeername in -lsocket" >&5
 ac_lib_var=`echo socket'_'getpeername | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3113,7 +3115,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket -lnsl $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3117 "configure"
+#line 3119 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3124,7 +3126,7 @@ int main() {
 getpeername()
 ; return 0; }
 EOF
-if { (eval echo configure:3128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3157,14 +3159,14 @@ if test $bash_cv_have_socklib = yes; then
     _bash_needmsg=
   else
     echo $ac_n "checking for libnsl""... $ac_c" 1>&6
-echo "configure:3161: checking for libnsl" >&5
+echo "configure:3163: checking for libnsl" >&5
     _bash_needmsg=yes
   fi
   if eval "test \"`echo '$''{'bash_cv_have_libnsl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo $ac_n "checking for t_open in -lnsl""... $ac_c" 1>&6
-echo "configure:3168: checking for t_open in -lnsl" >&5
+echo "configure:3170: checking for t_open in -lnsl" >&5
 ac_lib_var=`echo nsl'_'t_open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3172,7 +3174,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3176 "configure"
+#line 3178 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3183,7 +3185,7 @@ int main() {
 t_open()
 ; return 0; }
 EOF
-if { (eval echo configure:3187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3228,12 +3230,12 @@ fi
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3232: checking for uid_t in sys/types.h" >&5
+echo "configure:3234: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3237 "configure"
+#line 3239 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3262,7 +3264,7 @@ EOF
 fi
 
 echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:3266: checking type of array argument to getgroups" >&5
+echo "configure:3268: checking type of array argument to getgroups" >&5
 if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3270,7 +3272,7 @@ else
   ac_cv_type_getgroups=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 3274 "configure"
+#line 3276 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Rendell for this test.  */
@@ -3295,7 +3297,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
     ac_cv_type_getgroups=gid_t
 else
@@ -3309,7 +3311,7 @@ fi
 
 if test $ac_cv_type_getgroups = cross; then
         cat > conftest.$ac_ext <<EOF
-#line 3313 "configure"
+#line 3315 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 EOF
@@ -3333,12 +3335,12 @@ EOF
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3337: checking for ANSI C header files" >&5
+echo "configure:3339: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3342 "configure"
+#line 3344 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3346,7 +3348,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3363,7 +3365,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3367 "configure"
+#line 3369 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3381,7 +3383,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3385 "configure"
+#line 3387 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3402,7 +3404,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3406 "configure"
+#line 3408 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3413,7 +3415,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -3437,12 +3439,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3441: checking for off_t" >&5
+echo "configure:3443: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3446 "configure"
+#line 3448 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3470,12 +3472,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3474: checking for mode_t" >&5
+echo "configure:3476: checking for mode_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3479 "configure"
+#line 3481 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3503,12 +3505,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3507: checking for uid_t in sys/types.h" >&5
+echo "configure:3509: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3512 "configure"
+#line 3514 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3537,12 +3539,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3541: checking for pid_t" >&5
+echo "configure:3543: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3546 "configure"
+#line 3548 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3570,12 +3572,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3574: checking for size_t" >&5
+echo "configure:3576: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3579 "configure"
+#line 3581 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3603,12 +3605,12 @@ EOF
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:3607: checking for time_t" >&5
+echo "configure:3609: checking for time_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_time_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3612 "configure"
+#line 3614 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3637,12 +3639,12 @@ fi
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3641: checking return type of signal handlers" >&5
+echo "configure:3643: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3646 "configure"
+#line 3648 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3659,7 +3661,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3679,12 +3681,12 @@ EOF
 
 
 echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:3683: checking whether stat file-mode macros are broken" >&5
+echo "configure:3685: checking whether stat file-mode macros are broken" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3688 "configure"
+#line 3690 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -3735,7 +3737,7 @@ EOF
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 3739 "configure"
+#line 3741 "configure"
 #include "confdefs.h"
 #include <sys/time.h>
 EOF
@@ -3748,7 +3750,7 @@ rm -f conftest*
 
 if test -z "$bash_cv_struct_timeval"; then
 cat > conftest.$ac_ext <<EOF
-#line 3752 "configure"
+#line 3754 "configure"
 #include "confdefs.h"
 #include <time.h>
 EOF
@@ -3771,14 +3773,14 @@ EOF
 fi
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3775: checking whether byte ordering is bigendian" >&5
+echo "configure:3777: checking whether byte ordering is bigendian" >&5
 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 3782 "configure"
+#line 3784 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3789,11 +3791,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 3797 "configure"
+#line 3799 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3804,7 +3806,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -3824,7 +3826,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3828 "configure"
+#line 3830 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -3837,7 +3839,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:3841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
@@ -3864,7 +3866,7 @@ fi
 # Pull the hash mark out of the macro call to avoid m4 problems.
 ac_msg="whether #! works in shell scripts"
 echo $ac_n "checking $ac_msg""... $ac_c" 1>&6
-echo "configure:3868: checking $ac_msg" >&5
+echo "configure:3870: checking $ac_msg" >&5
 if eval "test \"`echo '$''{'ac_cv_sys_interpreter'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3890,7 +3892,7 @@ EOF
 
 fi
 echo $ac_n "checking for restartable system calls""... $ac_c" 1>&6
-echo "configure:3894: checking for restartable system calls" >&5
+echo "configure:3896: checking for restartable system calls" >&5
 if eval "test \"`echo '$''{'ac_cv_sys_restartable_syscalls'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3898,7 +3900,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3902 "configure"
+#line 3904 "configure"
 #include "confdefs.h"
 /* Exit 0 (true) if wait returns something other than -1,
    i.e. the pid of the child, which means that wait was restarted
@@ -3916,7 +3918,7 @@ main () {
 }
 
 EOF
-if { (eval echo configure:3920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sys_restartable_syscalls=yes
 else
@@ -3941,12 +3943,12 @@ fi
 
 if test "$ac_cv_func_lstat" = "no"; then
 echo $ac_n "checking for lstat""... $ac_c" 1>&6
-echo "configure:3945: checking for lstat" >&5
+echo "configure:3947: checking for lstat" >&5
 if eval "test \"`echo '$''{'bash_cv_func_lstat'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3950 "configure"
+#line 3952 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3956,7 +3958,7 @@ int main() {
  lstat("",(struct stat *)0); 
 ; return 0; }
 EOF
-if { (eval echo configure:3960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_func_lstat=yes
 else
@@ -3979,7 +3981,7 @@ fi
 fi
 
 echo $ac_n "checking if dup2 fails to clear the close-on-exec flag""... $ac_c" 1>&6
-echo "configure:3983: checking if dup2 fails to clear the close-on-exec flag" >&5
+echo "configure:3985: checking if dup2 fails to clear the close-on-exec flag" >&5
 if eval "test \"`echo '$''{'bash_cv_dup2_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3987,7 +3989,7 @@ else
   { echo "configure: error: cannot check dup2 if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3991 "configure"
+#line 3993 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4007,7 +4009,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:4011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_dup2_broken=yes
 else
@@ -4032,7 +4034,7 @@ fi
 
 
 echo $ac_n "checking whether pgrps need synchronization""... $ac_c" 1>&6
-echo "configure:4036: checking whether pgrps need synchronization" >&5
+echo "configure:4038: checking whether pgrps need synchronization" >&5
 if eval "test \"`echo '$''{'bash_cv_pgrp_pipe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4040,7 +4042,7 @@ else
   { echo "configure: error: cannot check pgrp synchronization if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4044 "configure"
+#line 4046 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_UNISTD_H
@@ -4092,7 +4094,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:4096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_pgrp_pipe=no
 else
@@ -4117,13 +4119,13 @@ fi
 
 
 echo $ac_n "checking for type of signal functions""... $ac_c" 1>&6
-echo "configure:4121: checking for type of signal functions" >&5
+echo "configure:4123: checking for type of signal functions" >&5
 if eval "test \"`echo '$''{'bash_cv_signal_vintage'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
   cat > conftest.$ac_ext <<EOF
-#line 4127 "configure"
+#line 4129 "configure"
 #include "confdefs.h"
 #include <signal.h>
 int main() {
@@ -4136,7 +4138,7 @@ int main() {
   
 ; return 0; }
 EOF
-if { (eval echo configure:4140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_signal_vintage=posix
 else
@@ -4145,7 +4147,7 @@ else
   rm -rf conftest*
   
     cat > conftest.$ac_ext <<EOF
-#line 4149 "configure"
+#line 4151 "configure"
 #include "confdefs.h"
 #include <signal.h>
 int main() {
@@ -4155,7 +4157,7 @@ int main() {
     
 ; return 0; }
 EOF
-if { (eval echo configure:4159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_signal_vintage=4.2bsd
 else
@@ -4164,7 +4166,7 @@ else
   rm -rf conftest*
   
       cat > conftest.$ac_ext <<EOF
-#line 4168 "configure"
+#line 4170 "configure"
 #include "confdefs.h"
 
        #include <signal.h>
@@ -4177,7 +4179,7 @@ int main() {
         
 ; return 0; }
 EOF
-if { (eval echo configure:4181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_signal_vintage=svr3
 else
@@ -4217,12 +4219,12 @@ fi
 
 
 echo $ac_n "checking for sys_errlist and sys_nerr""... $ac_c" 1>&6
-echo "configure:4221: checking for sys_errlist and sys_nerr" >&5
+echo "configure:4223: checking for sys_errlist and sys_nerr" >&5
 if eval "test \"`echo '$''{'bash_cv_sys_errlist'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4226 "configure"
+#line 4228 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
@@ -4231,7 +4233,7 @@ extern char *sys_errlist[];
  char *msg = sys_errlist[sys_nerr - 1];
 ; return 0; }
 EOF
-if { (eval echo configure:4235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_sys_errlist=yes
 else
@@ -4252,7 +4254,7 @@ fi
 
 
 echo $ac_n "checking for sys_siglist in system C library""... $ac_c" 1>&6
-echo "configure:4256: checking for sys_siglist in system C library" >&5
+echo "configure:4258: checking for sys_siglist in system C library" >&5
 if eval "test \"`echo '$''{'bash_cv_sys_siglist'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4260,7 +4262,7 @@ else
   { echo "configure: error: cannot check for sys_siglist if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4264 "configure"
+#line 4266 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4277,7 +4279,7 @@ char *msg = sys_siglist[2];
 exit(msg == 0);
 }
 EOF
-if { (eval echo configure:4281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_sys_siglist=yes
 else
@@ -4298,8 +4300,46 @@ EOF
 
 fi
 
+echo $ac_n "checking for _sys_siglist in signal.h or unistd.h""... $ac_c" 1>&6
+echo "configure:4305: checking for _sys_siglist in signal.h or unistd.h" >&5
+if eval "test \"`echo '$''{'bash_cv_decl_under_sys_siglist'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4310 "configure"
+#include "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; }
+EOF
+if { (eval echo configure:4322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  bash_cv_decl_under_sys_siglist=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  bash_cv_decl_under_sys_siglist=no
+fi
+rm -f conftest*
+fi
+echo "$ac_t""$bash_cv_decl_under_sys_siglist" 1>&6
+if test $bash_cv_decl_under_sys_siglist = yes; then
+cat >> confdefs.h <<\EOF
+#define UNDER_SYS_SIGLIST_DECLARED 1
+EOF
+
+fi
+
+
 echo $ac_n "checking for _sys_siglist in system C library""... $ac_c" 1>&6
-echo "configure:4303: checking for _sys_siglist in system C library" >&5
+echo "configure:4343: checking for _sys_siglist in system C library" >&5
 if eval "test \"`echo '$''{'bash_cv_under_sys_siglist'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4307,7 +4347,7 @@ else
   { echo "configure: error: cannot check for _sys_siglist if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4311 "configure"
+#line 4351 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4315,16 +4355,16 @@ else
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#ifndef _sys_siglist
+#ifndef UNDER_SYS_SIGLIST_DECLARED
 extern char *_sys_siglist[];
 #endif
 main()
 {
-char *msg = _sys_siglist[2];
+char *msg = (char *)_sys_siglist[2];
 exit(msg == 0);
 }
 EOF
-if { (eval echo configure:4328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_under_sys_siglist=yes
 else
@@ -4347,12 +4387,12 @@ fi
 
 
 echo $ac_n "checking whether signal handlers are of type void""... $ac_c" 1>&6
-echo "configure:4351: checking whether signal handlers are of type void" >&5
+echo "configure:4391: checking whether signal handlers are of type void" >&5
 if eval "test \"`echo '$''{'bash_cv_void_sighandler'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4356 "configure"
+#line 4396 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -4367,7 +4407,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:4371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_void_sighandler=yes
 else
@@ -4387,12 +4427,12 @@ EOF
 fi
 
 echo $ac_n "checking for clock_t""... $ac_c" 1>&6
-echo "configure:4391: checking for clock_t" >&5
+echo "configure:4431: checking for clock_t" >&5
 if eval "test \"`echo '$''{'bash_cv_type_clock_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4396 "configure"
+#line 4436 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4423,12 +4463,12 @@ EOF
 fi
 
 echo $ac_n "checking for sigset_t""... $ac_c" 1>&6
-echo "configure:4427: checking for sigset_t" >&5
+echo "configure:4467: checking for sigset_t" >&5
 if eval "test \"`echo '$''{'bash_cv_type_sigset_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4432 "configure"
+#line 4472 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4459,12 +4499,12 @@ EOF
 fi
 
 echo $ac_n "checking for quad_t""... $ac_c" 1>&6
-echo "configure:4463: checking for quad_t" >&5
+echo "configure:4503: checking for quad_t" >&5
 if eval "test \"`echo '$''{'bash_cv_type_quad_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4468 "configure"
+#line 4508 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4500,19 +4540,19 @@ EOF
 fi
 
 echo $ac_n "checking for size and type of struct rlimit fields""... $ac_c" 1>&6
-echo "configure:4504: checking for size and type of struct rlimit fields" >&5
+echo "configure:4544: checking for size and type of struct rlimit fields" >&5
 if eval "test \"`echo '$''{'bash_cv_type_rlimit'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4509 "configure"
+#line 4549 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
 rlim_t xxx;
 ; return 0; }
 EOF
-if { (eval echo configure:4516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_type_rlimit=rlim_t
 else
@@ -4524,7 +4564,7 @@ if test "$cross_compiling" = yes; then
   { echo "configure: error: cannot check quad_t if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4528 "configure"
+#line 4568 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4540,7 +4580,7 @@ main()
   exit(1);
 }
 EOF
-if { (eval echo configure:4544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_type_rlimit=quad_t
 else
@@ -4572,12 +4612,12 @@ fi
 
 
 echo $ac_n "checking for a c_line member of struct termios""... $ac_c" 1>&6
-echo "configure:4576: checking for a c_line member of struct termios" >&5
+echo "configure:4616: checking for a c_line member of struct termios" >&5
 if eval "test \"`echo '$''{'bash_cv_termios_ldisc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4581 "configure"
+#line 4621 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <termios.h>
@@ -4585,7 +4625,7 @@ int main() {
 struct termios t; int i; i = t.c_line;
 ; return 0; }
 EOF
-if { (eval echo configure:4589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_termios_ldisc=yes
 else
@@ -4605,12 +4645,12 @@ EOF
 fi
 
 echo $ac_n "checking for a c_line member of struct termio""... $ac_c" 1>&6
-echo "configure:4609: checking for a c_line member of struct termio" >&5
+echo "configure:4649: checking for a c_line member of struct termio" >&5
 if eval "test \"`echo '$''{'bash_cv_termio_ldisc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4614 "configure"
+#line 4654 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <termio.h>
@@ -4618,7 +4658,7 @@ int main() {
 struct termio t; int i; i = t.c_line;
 ; return 0; }
 EOF
-if { (eval echo configure:4622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_termio_ldisc=yes
 else
@@ -4639,12 +4679,12 @@ fi
 
 
 echo $ac_n "checking if struct dirent has a d_ino member""... $ac_c" 1>&6
-echo "configure:4643: checking if struct dirent has a d_ino member" >&5
+echo "configure:4683: checking if struct dirent has a d_ino member" >&5
 if eval "test \"`echo '$''{'bash_cv_dirent_has_dino'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4648 "configure"
+#line 4688 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4673,7 +4713,7 @@ struct dirent d; int z; z = d.d_ino;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4717: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_dirent_has_dino=yes
 else
@@ -4695,12 +4735,12 @@ fi
 
 
 echo $ac_n "checking if struct dirent has a d_fileno member""... $ac_c" 1>&6
-echo "configure:4699: checking if struct dirent has a d_fileno member" >&5
+echo "configure:4739: checking if struct dirent has a d_fileno member" >&5
 if eval "test \"`echo '$''{'bash_cv_dirent_has_d_fileno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4704 "configure"
+#line 4744 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4729,7 +4769,7 @@ struct dirent d; int z; z = d.d_fileno;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_dirent_has_d_fileno=yes
 else
@@ -4750,12 +4790,12 @@ EOF
 fi
 
 echo $ac_n "checking for struct winsize in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:4754: checking for struct winsize in sys/ioctl.h" >&5
+echo "configure:4794: checking for struct winsize in sys/ioctl.h" >&5
 if eval "test \"`echo '$''{'bash_cv_struct_winsize_in_ioctl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4759 "configure"
+#line 4799 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
@@ -4763,7 +4803,7 @@ int main() {
 struct winsize x;
 ; return 0; }
 EOF
-if { (eval echo configure:4767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_struct_winsize_in_ioctl=yes
 else
@@ -4785,12 +4825,12 @@ fi
 
 
 echo $ac_n "checking for the existance of strsignal""... $ac_c" 1>&6
-echo "configure:4789: checking for the existance of strsignal" >&5
+echo "configure:4829: checking for the existance of strsignal" >&5
 if eval "test \"`echo '$''{'bash_cv_have_strsignal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4794 "configure"
+#line 4834 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -4798,7 +4838,7 @@ int main() {
 char *s = (char *)strsignal(2);
 ; return 0; }
 EOF
-if { (eval echo configure:4802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   bash_cv_have_strsignal=yes
 else
@@ -4819,7 +4859,7 @@ EOF
 fi
 
 echo $ac_n "checking if opendir() opens non-directories""... $ac_c" 1>&6
-echo "configure:4823: checking if opendir() opens non-directories" >&5
+echo "configure:4863: checking if opendir() opens non-directories" >&5
 if eval "test \"`echo '$''{'bash_cv_opendir_not_robust'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4827,7 +4867,7 @@ else
   { echo "configure: error: cannot check opendir if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4831 "configure"
+#line 4871 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4863,7 +4903,7 @@ unlink("/tmp/not_a_directory");
 exit (dir == 0);
 }
 EOF
-if { (eval echo configure:4867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_opendir_not_robust=yes
 else
@@ -4886,7 +4926,7 @@ EOF
 fi
 
 echo $ac_n "checking for declaration of printf in <stdio.h>""... $ac_c" 1>&6
-echo "configure:4890: checking for declaration of printf in <stdio.h>" >&5
+echo "configure:4930: checking for declaration of printf in <stdio.h>" >&5
 if eval "test \"`echo '$''{'bash_cv_printf_declared'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4894,7 +4934,7 @@ else
   { echo "configure: error: cannot check printf declaration if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4898 "configure"
+#line 4938 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4906,12 +4946,12 @@ typedef int (*_bashfunc)();
 main()
 {
 _bashfunc pf;
-pf = printf;
+pf = (_bashfunc) printf;
 exit(pf == 0);
 }
 
 EOF
-if { (eval echo configure:4915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_printf_declared=yes
 else
@@ -4934,7 +4974,7 @@ EOF
 fi
 
 echo $ac_n "checking whether ulimit can substitute for getdtablesize""... $ac_c" 1>&6
-echo "configure:4938: checking whether ulimit can substitute for getdtablesize" >&5
+echo "configure:4978: checking whether ulimit can substitute for getdtablesize" >&5
 if eval "test \"`echo '$''{'bash_cv_ulimit_maxfds'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4942,7 +4982,7 @@ else
   { echo "configure: error: cannot check ulimit if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4946 "configure"
+#line 4986 "configure"
 #include "confdefs.h"
 
 main()
@@ -4952,7 +4992,7 @@ exit (maxfds == -1L);
 }
 
 EOF
-if { (eval echo configure:4956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_ulimit_maxfds=yes
 else
@@ -4975,7 +5015,7 @@ EOF
 fi
 
 echo $ac_n "checking to see if getenv can be redefined""... $ac_c" 1>&6
-echo "configure:4979: checking to see if getenv can be redefined" >&5
+echo "configure:5019: checking to see if getenv can be redefined" >&5
 if eval "test \"`echo '$''{'bash_cv_getenv_redef'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4983,7 +5023,7 @@ else
   { echo "configure: error: cannot check getenv redefinition if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4987 "configure"
+#line 5027 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_UNISTD_H
@@ -5018,7 +5058,7 @@ exit(s == 0);     /* force optimizer to leave getenv in */
 }
 
 EOF
-if { (eval echo configure:5022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_getenv_redef=yes
 else
@@ -5041,7 +5081,7 @@ EOF
 fi
 
 echo $ac_n "checking if getcwd() calls popen()""... $ac_c" 1>&6
-echo "configure:5045: checking if getcwd() calls popen()" >&5
+echo "configure:5085: checking if getcwd() calls popen()" >&5
 if eval "test \"`echo '$''{'bash_cv_getcwd_calls_popen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5049,7 +5089,7 @@ else
   { echo "configure: error: cannot check whether getcwd calls popen if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5053 "configure"
+#line 5093 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -5104,7 +5144,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:5108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_getcwd_calls_popen=no
 else
@@ -5127,12 +5167,12 @@ EOF
 fi
 
 echo $ac_n "checking for declaration of sbrk in <unistd.h>""... $ac_c" 1>&6
-echo "configure:5131: checking for declaration of sbrk in <unistd.h>" >&5
+echo "configure:5171: checking for declaration of sbrk in <unistd.h>" >&5
 if eval "test \"`echo '$''{'bash_cv_sbrk_declared'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5136 "configure"
+#line 5176 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 EOF
@@ -5158,7 +5198,7 @@ fi
 
 
 echo $ac_n "checking for presence of POSIX-style sigsetjmp/siglongjmp""... $ac_c" 1>&6
-echo "configure:5162: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
+echo "configure:5202: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
 if eval "test \"`echo '$''{'bash_cv_func_sigsetjmp'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5166,7 +5206,7 @@ else
   { echo "configure: error: cannot check for sigsetjmp/siglongjmp if cross-compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5170 "configure"
+#line 5210 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_UNISTD_H
@@ -5207,7 +5247,7 @@ exit(1);
 #endif
 }
 EOF
-if { (eval echo configure:5211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_func_sigsetjmp=present
 else
@@ -5232,7 +5272,7 @@ fi
 
 
 echo $ac_n "checking whether or not strcoll and strcmp differ""... $ac_c" 1>&6
-echo "configure:5236: checking whether or not strcoll and strcmp differ" >&5
+echo "configure:5276: checking whether or not strcoll and strcmp differ" >&5
 if eval "test \"`echo '$''{'bash_cv_func_strcoll_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5240,7 +5280,7 @@ else
   { echo "configure: error: cannot check strcoll if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5244 "configure"
+#line 5284 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -5279,7 +5319,7 @@ char    *v[];
 }
 
 EOF
-if { (eval echo configure:5283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_func_strcoll_broken=yes
 else
@@ -5306,7 +5346,7 @@ fi
 
 
 echo $ac_n "checking if signal handlers must be reinstalled when invoked""... $ac_c" 1>&6
-echo "configure:5310: checking if signal handlers must be reinstalled when invoked" >&5
+echo "configure:5350: checking if signal handlers must be reinstalled when invoked" >&5
 if eval "test \"`echo '$''{'bash_cv_must_reinstall_sighandlers'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5314,7 +5354,7 @@ else
   { echo "configure: error: cannot check signal handling if cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5318 "configure"
+#line 5358 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
@@ -5361,7 +5401,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:5365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_must_reinstall_sighandlers=no
 else
@@ -5385,7 +5425,7 @@ fi
 
 
 echo $ac_n "checking for presence of necessary job control definitions""... $ac_c" 1>&6
-echo "configure:5389: checking for presence of necessary job control definitions" >&5
+echo "configure:5429: checking for presence of necessary job control definitions" >&5
 if eval "test \"`echo '$''{'bash_cv_job_control_missing'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5393,7 +5433,7 @@ else
   { echo "configure: error: cannot check job control if cross-compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5397 "configure"
+#line 5437 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -5440,7 +5480,7 @@ exit(1);
 exit(0);
 }
 EOF
-if { (eval echo configure:5444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_job_control_missing=present
 else
@@ -5464,7 +5504,7 @@ EOF
 fi
 
 echo $ac_n "checking for presence of named pipes""... $ac_c" 1>&6
-echo "configure:5468: checking for presence of named pipes" >&5
+echo "configure:5508: checking for presence of named pipes" >&5
 if eval "test \"`echo '$''{'bash_cv_sys_named_pipes'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5472,7 +5512,7 @@ else
   { echo "configure: error: cannot check for named pipes if cross-compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5476 "configure"
+#line 5516 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -5506,7 +5546,7 @@ unlink ("/tmp/sh-np-autoconf");
 exit(0);
 }
 EOF
-if { (eval echo configure:5510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   bash_cv_sys_named_pipes=present
 else
@@ -5531,12 +5571,12 @@ fi
 
 
 echo $ac_n "checking for TIOCGWINSZ in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:5535: checking for TIOCGWINSZ in sys/ioctl.h" >&5
+echo "configure:5575: checking for TIOCGWINSZ in sys/ioctl.h" >&5
 if eval "test \"`echo '$''{'bash_cv_tiocgwinsz_in_ioctl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5540 "configure"
+#line 5580 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
@@ -5544,7 +5584,7 @@ int main() {
 int x = TIOCGWINSZ;
 ; return 0; }
 EOF
-if { (eval echo configure:5548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_tiocgwinsz_in_ioctl=yes
 else
@@ -5565,12 +5605,12 @@ EOF
 fi
 
 echo $ac_n "checking for TIOCSTAT in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:5569: checking for TIOCSTAT in sys/ioctl.h" >&5
+echo "configure:5609: checking for TIOCSTAT in sys/ioctl.h" >&5
 if eval "test \"`echo '$''{'bash_cv_tiocstat_in_ioctl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5574 "configure"
+#line 5614 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
@@ -5578,7 +5618,7 @@ int main() {
 int x = TIOCSTAT;
 ; return 0; }
 EOF
-if { (eval echo configure:5582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_tiocstat_in_ioctl=yes
 else
@@ -5599,12 +5639,12 @@ EOF
 fi
 
 echo $ac_n "checking for FIONREAD in sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:5603: checking for FIONREAD in sys/ioctl.h" >&5
+echo "configure:5643: checking for FIONREAD in sys/ioctl.h" >&5
 if eval "test \"`echo '$''{'bash_cv_fionread_in_ioctl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5608 "configure"
+#line 5648 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/ioctl.h>
@@ -5612,7 +5652,7 @@ int main() {
 int x = FIONREAD;
 ; return 0; }
 EOF
-if { (eval echo configure:5616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_fionread_in_ioctl=yes
 else
@@ -5634,19 +5674,19 @@ fi
 
 
 echo $ac_n "checking for speed_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:5638: checking for speed_t in sys/types.h" >&5
+echo "configure:5678: checking for speed_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'bash_cv_speed_t_in_sys_types'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5643 "configure"
+#line 5683 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
 speed_t x;
 ; return 0; }
 EOF
-if { (eval echo configure:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_speed_t_in_sys_types=yes
 else
@@ -5667,21 +5707,23 @@ EOF
 fi
 
 echo $ac_n "checking whether programs are able to redeclare getpw functions""... $ac_c" 1>&6
-echo "configure:5671: checking whether programs are able to redeclare getpw functions" >&5
+echo "configure:5711: checking whether programs are able to redeclare getpw functions" >&5
 if eval "test \"`echo '$''{'bash_cv_can_redecl_getpw'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5676 "configure"
+#line 5716 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <pwd.h>
 extern struct passwd *getpwent();
+extern struct passwd *getpwuid();
+extern struct passwd *getpwnam();
 int main() {
-struct passwd *z; z = getpwent();
+struct passwd *z; z = getpwent(); z = getpwuid(0); z = getpwnam("root");
 ; return 0; }
 EOF
-if { (eval echo configure:5685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_can_redecl_getpw=yes
 else
@@ -5704,12 +5746,12 @@ fi
 
 case "$host_os" in
 hpux*) echo $ac_n "checking whether $host_os needs _KERNEL for RLIMIT defines""... $ac_c" 1>&6
-echo "configure:5708: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5
+echo "configure:5750: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5
 if eval "test \"`echo '$''{'bash_cv_kernel_rlimit'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5713 "configure"
+#line 5755 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -5722,7 +5764,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_kernel_rlimit=no
 else
@@ -5730,7 +5772,7 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 5734 "configure"
+#line 5776 "configure"
 #include "confdefs.h"
 
      #include <sys/types.h>
@@ -5745,7 +5787,7 @@ int main() {
      
 ; return 0; }
 EOF
-if { (eval echo configure:5749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5791: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bash_cv_kernel_rlimit=yes
 else
@@ -5779,14 +5821,14 @@ if test "X$bash_cv_termcap_lib" = "X"; then
 _bash_needmsg=yes
 else
 echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6
-echo "configure:5783: checking which library has the termcap functions" >&5
+echo "configure:5825: checking which library has the termcap functions" >&5
 _bash_needmsg=
 fi
 if eval "test \"`echo '$''{'bash_cv_termcap_lib'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:5790: checking for tgetent in -ltermcap" >&5
+echo "configure:5832: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5794,7 +5836,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5798 "configure"
+#line 5840 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5805,7 +5847,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:5809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5824,7 +5866,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:5828: checking for tgetent in -lcurses" >&5
+echo "configure:5870: checking for tgetent in -lcurses" >&5
 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5832,7 +5874,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5836 "configure"
+#line 5878 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5843,7 +5885,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:5847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5862,7 +5904,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:5866: checking for tgetent in -lncurses" >&5
+echo "configure:5908: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5870,7 +5912,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5874 "configure"
+#line 5916 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5881,7 +5923,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:5885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5910,7 +5952,7 @@ fi
 
 if test "X$_bash_needmsg" = "Xyes"; then
 echo $ac_n "checking which library has the termcap functions""... $ac_c" 1>&6
-echo "configure:5914: checking which library has the termcap functions" >&5
+echo "configure:5956: checking which library has the termcap functions" >&5
 fi
 echo "$ac_t""using $bash_cv_termcap_lib" 1>&6
 if test $bash_cv_termcap_lib = gnutermcap; then
@@ -5933,7 +5975,7 @@ fi
 
 
 echo $ac_n "checking whether /dev/fd is available""... $ac_c" 1>&6
-echo "configure:5937: checking whether /dev/fd is available" >&5
+echo "configure:5979: checking whether /dev/fd is available" >&5
 if eval "test \"`echo '$''{'bash_cv_dev_fd'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5969,7 +6011,7 @@ EOF
 fi
 
 echo $ac_n "checking for default mail directory""... $ac_c" 1>&6
-echo "configure:5973: checking for default mail directory" >&5
+echo "configure:6015: checking for default mail directory" >&5
 if eval "test \"`echo '$''{'bash_cv_mail_dir'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5977,10 +6019,10 @@ else
    bash_cv_mail_dir=/var/mail
  elif test -d /usr/mail; then
    bash_cv_mail_dir=/usr/mail
- elif test -d /usr/spool/mail; then
-   bash_cv_mail_dir=/usr/spool/mail
  elif test -d /var/spool/mail; then
    bash_cv_mail_dir=/var/spool/mail
+ elif test -d /usr/spool/mail; then
+   bash_cv_mail_dir=/usr/spool/mail
  else
    bash_cv_mail_dir=unknown
  fi
@@ -6037,7 +6079,7 @@ LOCAL_DEFS=-DSHELL
 
 
 case "$host_os" in
-sysv4.2      cat >> confdefs.h <<\EOF
+sysv4.2*)      cat >> confdefs.h <<\EOF
 #define SVR4_2 1
 EOF
 
index 32ddb2f189cff0992ee550e7b002fde0f9bc4dea..e64dc4c02e271404f95ecee449b5c80357b0e3cc 100644 (file)
@@ -6,7 +6,7 @@ dnl
 dnl Process this file with autoconf to produce a configure script.
 dnl checks for version info
 
-AC_REVISION([for Bash 2.01, version 1.26, from autoconf version] AC_ACVERSION)dnl
+AC_REVISION([for Bash 2.01, version 1.28, from autoconf version] AC_ACVERSION)dnl
 
 AC_INIT(shell.h)
 AC_CONFIG_HEADER(config.h)
@@ -38,7 +38,7 @@ alpha-*)      opt_gnu_malloc=no ;;    # alpha running osf/1 or linux
 *-osf1*)       opt_gnu_malloc=no ;;    # other osf/1 machines
 sparc-svr4*)   opt_gnu_malloc=no ;;    # sparc SVR4, SVR4.2
 sparc-netbsd*) opt_gnu_malloc=no ;;    # needs 8-byte alignment
-*-sgi-irix6*)  opt_gnu_malloc=no ;;    # needs 8-byte alignment
+sgi-irix6*)    opt_gnu_malloc=no ;;    # needs 8-byte alignment
 sparc-linux*)  opt_gnu_malloc=no ;;    # sparc running linux; requires ELF
 *-freebsd*)    opt_gnu_malloc=no ;;    # they claim it's better
 *-aix*)                opt_gnu_malloc=no ;;    # AIX machines
@@ -46,7 +46,7 @@ sparc-linux*) opt_gnu_malloc=no ;;    # sparc running linux; requires ELF
 *-dgux*)       opt_gnu_malloc=no ;;    # DG/UX machines
 *-qnx*)                opt_gnu_malloc=no ;;    # QNX 4.2
 *-machten4)    opt_gnu_malloc=no ;;    # MachTen 4.x
-*-bsdi2.1)     opt_gnu_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
+*-bsdi2.1|*-bsdi3.0)   opt_gnu_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
 esac
 
 dnl arguments to configure
@@ -456,7 +456,7 @@ dnl
 dnl this should really go away someday
 
 case "$host_os" in
-sysv4.2      AC_DEFINE(SVR4_2)
+sysv4.2*)      AC_DEFINE(SVR4_2)
                AC_DEFINE(SVR4) ;;
 sysv4*)                AC_DEFINE(SVR4) ;;
 hpux*)         LOCAL_CFLAGS=-DHPUX ;;
index 3f4ee98a5f5daccff6b15bcd8bddea99635c57bd..98f76b0341ae1014125ef39cd6ae18f8fe59ff6d 100644 (file)
@@ -142,7 +142,8 @@ maintainer-clean:   clean
 
 installdirs:
        -test -d $(man1dir) || $(SHELL) ${MKDIRS} $(man1dir)
-       -test -d $(man3dir) || $(SHELL) ${MKDIRS} $(man3dir)
+# uncomment the next line to create the directory for the readline man page
+#      -test -d $(man3dir) || $(SHELL) ${MKDIRS} $(man3dir)
        -test -d $(infodir) || $(SHELL) ${MKDIRS} $(infodir)
        
 install: info installdirs
index 974c2ce6af7e461d09b56dde1d3b0f8aa331d447..4707a20a8f028eb35dd1adf8744ac3c7158e24cd 100644 (file)
@@ -1,5 +1,10 @@
-This is Info file bashref.info, produced by Makeinfo-1.64 from the
-input file ./bashref.texi.
+This is Info file bashref.info, produced by Makeinfo version 1.67 from
+the input file /usr/homes/chet/src/bash/bash-2.01.1/doc/bashref.texi.
+
+INFO-DIR-SECTION Utilities
+START-INFO-DIR-ENTRY
+* Bash: (bash).                     GNU Bourne-Again SHell
+END-INFO-DIR-ENTRY
 
 This text is a brief description of the features that are present in
 the Bash shell.
@@ -2412,7 +2417,7 @@ the `alias' and `unalias' builtin commands.
 has an alias.  If so, that word is replaced by the text of the alias.
 The alias name and the replacement text may contain any valid shell
 input, including shell metacharacters, with the exception that the
-alias name may not contain =.  The first word of the replacement text
+alias name may not contain <=>.  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
 `ls' to `"ls -F"', for instance, and Bash does not try to recursively
@@ -4464,7 +4469,7 @@ history list.
 
 `!'
      Start a history substitution, except when followed by a space, tab,
-     the end of the line, = or (.
+     the end of the line, <=> or <(>.
 
 `!N'
      Refer to command line N.
@@ -4610,21 +4615,22 @@ Introduction to Line Editing
    The following paragraphs describe the notation used to represent
 keystrokes.
 
-   The text C-k is read as `Control-K' and describes the character
-produced when the k key is pressed while the Control key is depressed.
+   The text <C-k> is read as `Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
 
-   The text M-k is read as `Meta-K' and describes the character
-produced when the meta key (if you have one) is depressed, and the k
+   The text <M-k> is read as `Meta-K' and describes the character
+produced when the meta key (if you have one) is depressed, and the <k>
 key is pressed.  If you do not have a meta key, the identical keystroke
-can be generated by typing ESC first, and then typing k.  Either
-process is known as "metafying" the k key.
+can be generated by typing <ESC> first, and then typing <k>.  Either
+process is known as "metafying" the <k> key.
 
-   The text M-C-k is read as `Meta-Control-k' and describes the
-character produced by "metafying" C-k.
+   The text <M-C-k> is read as `Meta-Control-k' and describes the
+character produced by "metafying" <C-k>.
 
-   In addition, several keys have their own names.  Specifically, DEL,
-ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this
-text, or in an init file (*note Readline Init File::.).
+   In addition, several keys have their own names.  Specifically,
+<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
+when seen in this text, or in an init file (*note Readline Init
+File::.).
 
 \1f
 File: bashref.info,  Node: Readline Interaction,  Next: Readline Init File,  Prev: Introduction and Notation,  Up: Command Line Editing
@@ -4639,9 +4645,9 @@ as you type it in, allowing you to just fix your typo, and not forcing
 you to retype the majority of the line.  Using these editing commands,
 you move the cursor to the place that needs correction, and delete or
 insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press RETURN.  You do not have to be at the end of
-the line to press RETURN; the entire line is accepted regardless of the
-location of the cursor within the line.
+the line, you simply press <RETURN>.  You do not have to be at the end
+of the line to press <RETURN>; the entire line is accepted regardless
+of the location of the cursor within the line.
 
 * Menu:
 
@@ -4664,9 +4670,9 @@ erase character to back up and delete the mistyped character.
 
    Sometimes you may miss typing a character that you wanted to type,
 and not notice your error until you have typed several other
-characters.  In that case, you can type C-b to move the cursor to the
+characters.  In that case, you can type <C-b> to move the cursor to the
 left, and then correct your mistake.  Afterwards, you can move the
-cursor to the right with C-f.
+cursor to the right with <C-f>.
 
    When you add text in the middle of a line, you will notice that
 characters to the right of the cursor are `pushed over' to make room
@@ -4676,22 +4682,22 @@ back' to fill in the blank space created by the removal of the text.  A
 list of the basic bare essentials for editing the text of an input line
 follows.
 
-C-b
+<C-b>
      Move back one character.
 
-C-f
+<C-f>
      Move forward one character.
 
-DEL
+<DEL>
      Delete the character to the left of the cursor.
 
-C-d
+<C-d>
      Delete the character underneath the cursor.
 
 Printing characters
      Insert the character into the line at the cursor.
 
-C-_
+<C-_>
      Undo the last thing that you did.  You can undo all the way back
      to an empty line.
 
@@ -4703,28 +4709,28 @@ Readline Movement Commands
 
    The above table describes the most basic possible keystrokes that
 you need in order to do editing of the input line.  For your
-convenience, many other commands have been added in addition to C-b,
-C-f, C-d, and DEL.  Here are some commands for moving more rapidly
+convenience, many other commands have been added in addition to <C-b>,
+<C-f>, <C-d>, and <DEL>.  Here are some commands for moving more rapidly
 about the line.
 
-C-a
+<C-a>
      Move to the start of the line.
 
-C-e
+<C-e>
      Move to the end of the line.
 
-M-f
+<M-f>
      Move forward a word.
 
-M-b
+<M-b>
      Move backward a word.
 
-C-l
+<C-l>
      Clear the screen, reprinting the current line at the top.
 
-   Notice how C-f moves forward a character, while M-f moves forward a
-word.  It is a loose convention that control keystrokes operate on
-characters while meta keystrokes operate on words.
+   Notice how <C-f> moves forward a character, while <M-f> moves
+forward a word.  It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
 
 \1f
 File: bashref.info,  Node: Readline Killing Commands,  Next: Readline Arguments,  Prev: Readline Movement Commands,  Up: Readline Interaction
@@ -4746,32 +4752,32 @@ available to be yanked back later, when you are typing another line.
 
    Here is the list of commands for killing text.
 
-C-k
+<C-k>
      Kill the text from the current cursor position to the end of the
      line.
 
-M-d
+<M-d>
      Kill from the cursor to the end of the current word, or if between
      words, to the end of the next word.
 
-M-DEL
+<M-DEL>
      Kill from the cursor the start of the previous word, or if between
      words, to the start of the previous word.
 
-C-w
+<C-w>
      Kill from the cursor to the previous whitespace.  This is
-     different than M-DEL because the word boundaries differ.
+     different than <M-DEL> because the word boundaries differ.
 
    And, here is how to "yank" the text back into the line.  Yanking
 means to copy the most-recently-killed text from the kill buffer.
 
-C-y
+<C-y>
      Yank the most recently killed text back into the buffer at the
      cursor.
 
-M-y
+<M-y>
      Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is C-y or M-y.
+     if the prior command is <C-y> or <M-y>.
 
 \1f
 File: bashref.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
@@ -4788,10 +4794,10 @@ start of the line, you might type `M-- C-k'.
 
    The general way to pass numeric arguments to a command is to type
 meta digits before the command.  If the first `digit' you type is a
-minus sign (-), then the sign of the argument will be negative.  Once
+minus sign (<->), then the sign of the argument will be negative.  Once
 you have typed one meta digit to get the argument started, you can type
 the remainder of the digits, and then the command.  For example, to give
-the C-d command an argument of 10, you could type `M-1 0 C-d'.
+the <C-d> command an argument of 10, you could type `M-1 0 C-d'.
 
 \1f
 File: bashref.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline Interaction
@@ -4897,7 +4903,7 @@ Variable Settings
     `convert-meta'
           If set to `on', Readline will convert characters with the
           eigth bit set to an ASCII key sequence by stripping the eigth
-          bit and prepending an ESC character, converting them to a
+          bit and prepending an <ESC> character, converting them to a
           meta-prefixed key sequence.  The default value is `on'.
 
     `disable-completion'
@@ -5011,23 +5017,23 @@ Key Bindings
           The following escape sequences are available when specifying
           key sequences:
 
-         ``\C-''
+         `\C-'
                control prefix
 
-         ``\M-''
+         `\M-'
                meta prefix
 
-         ``\e''
+         `\e'
                an escape character
 
-         ``\\''
+         `\\'
                backslash
 
-         ``\"''
-               "
+         `\"'
+               <">
 
-         ``\'''
-               '
+         `\''
+               <'>
 
           When entering the text of a macro, single or double quotes
           should be used to indicate a macro definition.  Unquoted text
@@ -5331,7 +5337,7 @@ Commands For Changing Text
 
 `quoted-insert (C-q, C-v)'
      Add the next character that you type to the line verbatim.  This is
-     how to insert key sequences like C-q, for example.
+     how to insert key sequences like <C-q>, for example.
 
 `tab-insert (M-TAB)'
      Insert a tab character.
@@ -5432,7 +5438,7 @@ Specifying Numeric Arguments
 
 `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.
+     argument.  <M-> starts a negative argument.
 
 `universal-argument ()'
      This is another way to specify an argument.  If this command is
@@ -5672,7 +5678,7 @@ modes, use the `set -o emacs' and `set -o vi' commands (*note The Set
 Builtin::.).  The Readline default is `emacs' mode.
 
    When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'.  Pressing ESC switches
+`insertion' mode, as if you had typed an `i'.  Pressing <ESC> switches
 you into `command' mode, where you can edit the text of the line with
 the standard `vi' movement keys, move to previous history lines with
 `k' and subsequent lines with `j', and so forth.
@@ -6082,60 +6088,60 @@ Index of Shell Builtin Commands
 
 * Menu:
 
-* .:                                    Bourne Shell Builtins.
-* ::                                    Bourne Shell Builtins.
-* [:                                    Bourne Shell Builtins.
-* alias:                                Alias Builtins.
-* bg:                                   Job Control Builtins.
-* bind:                                 Bash Builtins.
-* break:                                Bourne Shell Builtins.
-* builtin:                              Bash Builtins.
-* cd:                                   Bourne Shell Builtins.
-* command:                              Bash Builtins.
-* continue:                             Bourne Shell Builtins.
-* declare:                              Bash Builtins.
-* dirs:                                 C Shell Builtins.
-* disown:                               Job Control Builtins.
-* echo:                                 Bash Builtins.
-* enable:                               Bash Builtins.
-* eval:                                 Bourne Shell Builtins.
-* exec:                                 Bourne Shell Builtins.
-* exit:                                 Bourne Shell Builtins.
-* export:                               Bourne Shell Builtins.
-* fc:                                   Korn Shell Builtins.
-* fg:                                   Job Control Builtins.
-* getopts:                              Bourne Shell Builtins.
-* hash:                                 Bourne Shell Builtins.
-* help:                                 Bash Builtins.
-* history:                              C Shell Builtins.
-* jobs:                                 Job Control Builtins.
-* kill:                                 Job Control Builtins.
-* let <1>:                              Arithmetic Builtins.
-* let:                                  Korn Shell Builtins.
-* local:                                Bash Builtins.
-* logout <1>:                           Bash Builtins.
-* logout:                               C Shell Builtins.
-* popd:                                 C Shell Builtins.
-* pushd:                                C Shell Builtins.
-* pwd:                                  Bourne Shell Builtins.
-* read:                                 Bash Builtins.
-* readonly:                             Bourne Shell Builtins.
-* return:                               Bourne Shell Builtins.
-* set:                                  The Set Builtin.
-* shift:                                Bourne Shell Builtins.
-* shopt:                                Bash Builtins.
-* source:                               C Shell Builtins.
-* suspend:                              Job Control Builtins.
-* test:                                 Bourne Shell Builtins.
-* times:                                Bourne Shell Builtins.
-* trap:                                 Bourne Shell Builtins.
-* type:                                 Bash Builtins.
-* typeset:                              Korn Shell Builtins.
-* ulimit:                               Bash Builtins.
-* umask:                                Bourne Shell Builtins.
-* unalias:                              Alias Builtins.
-* unset:                                Bourne Shell Builtins.
-* wait:                                 Job Control Builtins.
+* .:                                     Bourne Shell Builtins.
+* ::                                     Bourne Shell Builtins.
+* [:                                     Bourne Shell Builtins.
+* alias:                                 Alias Builtins.
+* bg:                                    Job Control Builtins.
+* bind:                                  Bash Builtins.
+* break:                                 Bourne Shell Builtins.
+* builtin:                               Bash Builtins.
+* cd:                                    Bourne Shell Builtins.
+* command:                               Bash Builtins.
+* continue:                              Bourne Shell Builtins.
+* declare:                               Bash Builtins.
+* dirs:                                  C Shell Builtins.
+* disown:                                Job Control Builtins.
+* echo:                                  Bash Builtins.
+* enable:                                Bash Builtins.
+* eval:                                  Bourne Shell Builtins.
+* exec:                                  Bourne Shell Builtins.
+* exit:                                  Bourne Shell Builtins.
+* export:                                Bourne Shell Builtins.
+* fc:                                    Korn Shell Builtins.
+* fg:                                    Job Control Builtins.
+* getopts:                               Bourne Shell Builtins.
+* hash:                                  Bourne Shell Builtins.
+* help:                                  Bash Builtins.
+* history:                               C Shell Builtins.
+* jobs:                                  Job Control Builtins.
+* kill:                                  Job Control Builtins.
+* let <1>:                               Arithmetic Builtins.
+* let:                                   Korn Shell Builtins.
+* local:                                 Bash Builtins.
+* logout <1>:                            Bash Builtins.
+* logout:                                C Shell Builtins.
+* popd:                                  C Shell Builtins.
+* pushd:                                 C Shell Builtins.
+* pwd:                                   Bourne Shell Builtins.
+* read:                                  Bash Builtins.
+* readonly:                              Bourne Shell Builtins.
+* return:                                Bourne Shell Builtins.
+* set:                                   The Set Builtin.
+* shift:                                 Bourne Shell Builtins.
+* shopt:                                 Bash Builtins.
+* source:                                C Shell Builtins.
+* suspend:                               Job Control Builtins.
+* test:                                  Bourne Shell Builtins.
+* times:                                 Bourne Shell Builtins.
+* trap:                                  Bourne Shell Builtins.
+* type:                                  Bash Builtins.
+* typeset:                               Korn Shell Builtins.
+* ulimit:                                Bash Builtins.
+* umask:                                 Bourne Shell Builtins.
+* unalias:                               Alias Builtins.
+* unset:                                 Bourne Shell Builtins.
+* wait:                                  Job Control Builtins.
 
 \1f
 File: bashref.info,  Node: Reserved Word Index,  Next: Variable Index,  Prev: Builtin Index,  Up: Top
@@ -6145,25 +6151,25 @@ Shell Reserved Words
 
 * Menu:
 
-* !:                                    Pipelines.
-* {:                                    Command Grouping.
-* }:                                    Command Grouping.
-* case:                                 Conditional Constructs.
-* do:                                   Looping Constructs.
-* done:                                 Looping Constructs.
-* elif:                                 Conditional Constructs.
-* else:                                 Conditional Constructs.
-* esac:                                 Conditional Constructs.
-* fi:                                   Conditional Constructs.
-* for:                                  Looping Constructs.
-* function:                             Shell Functions.
-* if:                                   Conditional Constructs.
-* in:                                   Conditional Constructs.
-* select:                               Korn Shell Constructs.
-* then:                                 Conditional Constructs.
-* time:                                 Pipelines.
-* until:                                Looping Constructs.
-* while:                                Looping Constructs.
+* !:                                     Pipelines.
+* case:                                  Conditional Constructs.
+* do:                                    Looping Constructs.
+* done:                                  Looping Constructs.
+* elif:                                  Conditional Constructs.
+* else:                                  Conditional Constructs.
+* esac:                                  Conditional Constructs.
+* fi:                                    Conditional Constructs.
+* for:                                   Looping Constructs.
+* function:                              Shell Functions.
+* if:                                    Conditional Constructs.
+* in:                                    Conditional Constructs.
+* select:                                Korn Shell Constructs.
+* then:                                  Conditional Constructs.
+* time:                                  Pipelines.
+* until:                                 Looping Constructs.
+* while:                                 Looping Constructs.
+* {:                                     Command Grouping.
+* }:                                     Command Grouping.
 
 \1f
 File: bashref.info,  Node: Variable Index,  Next: Function Index,  Prev: Reserved Word Index,  Up: Top
@@ -6173,89 +6179,89 @@ Parameter and Variable Index
 
 * Menu:
 
-* !:                                    Special Parameters.
-* #:                                    Special Parameters.
-* $:                                    Special Parameters.
-* *:                                    Special Parameters.
-* -:                                    Special Parameters.
-* 0:                                    Special Parameters.
-* ?:                                    Special Parameters.
-* @:                                    Special Parameters.
-* _:                                    Special Parameters.
-* auto_resume:                          Job Control Variables.
-* BASH:                                 Bash Variables.
-* BASH_ENV:                             Bash Variables.
-* BASH_VERSINFO:                        Bash Variables.
-* BASH_VERSION:                         Bash Variables.
-* bell-style:                           Readline Init File Syntax.
-* CDPATH:                               Bourne Shell Variables.
-* comment-begin:                        Readline Init File Syntax.
-* completion-query-items:               Readline Init File Syntax.
-* convert-meta:                         Readline Init File Syntax.
-* DIRSTACK:                             Bash Variables.
-* disable-completion:                   Readline Init File Syntax.
-* editing-mode:                         Readline Init File Syntax.
-* enable-keypad:                        Readline Init File Syntax.
-* EUID:                                 Bash Variables.
-* expand-tilde:                         Readline Init File Syntax.
-* FCEDIT:                               Korn Shell Variables.
-* FIGNORE:                              Bash Variables.
-* GLOBIGNORE:                           Bash Variables.
-* GROUPS:                               Bash Variables.
-* histchars:                            Bash Variables.
-* HISTCMD:                              Bash Variables.
-* HISTCONTROL:                          Bash Variables.
-* HISTFILE:                             Bash Variables.
-* HISTFILESIZE:                         Bash Variables.
-* HISTIGNORE:                           Bash Variables.
-* HISTSIZE:                             Bash Variables.
-* HOME:                                 Bourne Shell Variables.
-* horizontal-scroll-mode:               Readline Init File Syntax.
-* HOSTFILE:                             Bash Variables.
-* HOSTNAME:                             Bash Variables.
-* HOSTTYPE:                             Bash Variables.
-* IFS:                                  Bourne Shell Variables.
-* IGNOREEOF <1>:                        Bash Variables.
-* IGNOREEOF:                            C Shell Variables.
-* input-meta:                           Readline Init File Syntax.
-* INPUTRC:                              Bash Variables.
-* keymap:                               Readline Init File Syntax.
-* LANG:                                 Bash Variables.
-* LC_ALL:                               Bash Variables.
-* LC_COLLATE:                           Bash Variables.
-* LC_MESSAGES:                          Bash Variables.
-* LINENO:                               Korn Shell Variables.
-* MACHTYPE:                             Bash Variables.
-* MAIL:                                 Bourne Shell Variables.
-* MAILCHECK:                            Bash Variables.
-* MAILPATH:                             Bourne Shell Variables.
-* mark-modified-lines:                  Readline Init File Syntax.
-* meta-flag:                            Readline Init File Syntax.
-* OLDPWD:                               Korn Shell Variables.
-* OPTARG:                               Bourne Shell Variables.
-* OPTERR:                               Bash Variables.
-* OPTIND:                               Bourne Shell Variables.
-* OSTYPE:                               Bash Variables.
-* output-meta:                          Readline Init File Syntax.
-* PATH:                                 Bourne Shell Variables.
-* PIPESTATUS:                           Bash Variables.
-* PPID:                                 Bash Variables.
-* PROMPT_COMMAND:                       Bash Variables.
-* PS1:                                  Bourne Shell Variables.
-* PS2:                                  Bourne Shell Variables.
-* PS3:                                  Korn Shell Variables.
-* PS4:                                  Korn Shell Variables.
-* PWD:                                  Korn Shell Variables.
-* RANDOM:                               Korn Shell Variables.
-* REPLY:                                Korn Shell Variables.
-* SECONDS:                              Korn Shell Variables.
-* SHELLOPTS:                            Bash Variables.
-* SHLVL:                                Bash Variables.
-* show-all-if-ambiguous:                Readline Init File Syntax.
-* TIMEFORMAT:                           Bash Variables.
-* TMOUT:                                Korn Shell Variables.
-* UID:                                  Bash Variables.
-* visible-stats:                        Readline Init File Syntax.
+* !:                                     Special Parameters.
+* #:                                     Special Parameters.
+* $:                                     Special Parameters.
+* *:                                     Special Parameters.
+* -:                                     Special Parameters.
+* 0:                                     Special Parameters.
+* ?:                                     Special Parameters.
+* @:                                     Special Parameters.
+* _:                                     Special Parameters.
+* auto_resume:                           Job Control Variables.
+* BASH:                                  Bash Variables.
+* BASH_ENV:                              Bash Variables.
+* BASH_VERSINFO:                         Bash Variables.
+* BASH_VERSION:                          Bash Variables.
+* bell-style:                            Readline Init File Syntax.
+* CDPATH:                                Bourne Shell Variables.
+* comment-begin:                         Readline Init File Syntax.
+* completion-query-items:                Readline Init File Syntax.
+* convert-meta:                          Readline Init File Syntax.
+* DIRSTACK:                              Bash Variables.
+* disable-completion:                    Readline Init File Syntax.
+* editing-mode:                          Readline Init File Syntax.
+* enable-keypad:                         Readline Init File Syntax.
+* EUID:                                  Bash Variables.
+* expand-tilde:                          Readline Init File Syntax.
+* FCEDIT:                                Korn Shell Variables.
+* FIGNORE:                               Bash Variables.
+* GLOBIGNORE:                            Bash Variables.
+* GROUPS:                                Bash Variables.
+* histchars:                             Bash Variables.
+* HISTCMD:                               Bash Variables.
+* HISTCONTROL:                           Bash Variables.
+* HISTFILE:                              Bash Variables.
+* HISTFILESIZE:                          Bash Variables.
+* HISTIGNORE:                            Bash Variables.
+* HISTSIZE:                              Bash Variables.
+* HOME:                                  Bourne Shell Variables.
+* horizontal-scroll-mode:                Readline Init File Syntax.
+* HOSTFILE:                              Bash Variables.
+* HOSTNAME:                              Bash Variables.
+* HOSTTYPE:                              Bash Variables.
+* IFS:                                   Bourne Shell Variables.
+* IGNOREEOF <1>:                         Bash Variables.
+* IGNOREEOF:                             C Shell Variables.
+* input-meta:                            Readline Init File Syntax.
+* INPUTRC:                               Bash Variables.
+* keymap:                                Readline Init File Syntax.
+* LANG:                                  Bash Variables.
+* LC_ALL:                                Bash Variables.
+* LC_COLLATE:                            Bash Variables.
+* LC_MESSAGES:                           Bash Variables.
+* LINENO:                                Korn Shell Variables.
+* MACHTYPE:                              Bash Variables.
+* MAIL:                                  Bourne Shell Variables.
+* MAILCHECK:                             Bash Variables.
+* MAILPATH:                              Bourne Shell Variables.
+* mark-modified-lines:                   Readline Init File Syntax.
+* meta-flag:                             Readline Init File Syntax.
+* OLDPWD:                                Korn Shell Variables.
+* OPTARG:                                Bourne Shell Variables.
+* OPTERR:                                Bash Variables.
+* OPTIND:                                Bourne Shell Variables.
+* OSTYPE:                                Bash Variables.
+* output-meta:                           Readline Init File Syntax.
+* PATH:                                  Bourne Shell Variables.
+* PIPESTATUS:                            Bash Variables.
+* PPID:                                  Bash Variables.
+* PROMPT_COMMAND:                        Bash Variables.
+* PS1:                                   Bourne Shell Variables.
+* PS2:                                   Bourne Shell Variables.
+* PS3:                                   Korn Shell Variables.
+* PS4:                                   Korn Shell Variables.
+* PWD:                                   Korn Shell Variables.
+* RANDOM:                                Korn Shell Variables.
+* REPLY:                                 Korn Shell Variables.
+* SECONDS:                               Korn Shell Variables.
+* SHELLOPTS:                             Bash Variables.
+* SHLVL:                                 Bash Variables.
+* show-all-if-ambiguous:                 Readline Init File Syntax.
+* TIMEFORMAT:                            Bash Variables.
+* TMOUT:                                 Korn Shell Variables.
+* UID:                                   Bash Variables.
+* visible-stats:                         Readline Init File Syntax.
 
 \1f
 File: bashref.info,  Node: Function Index,  Next: Concept Index,  Prev: Variable Index,  Up: Top
@@ -6265,74 +6271,74 @@ Function Index
 
 * Menu:
 
-* abort (C-g):                          Miscellaneous Commands.
-* accept-line (Newline, Return):        Commands For History.
-* backward-char (C-b):                  Commands For Moving.
-* backward-delete-char (Rubout):        Commands For Text.
-* backward-kill-line (C-x Rubout):      Commands For Killing.
-* backward-kill-word (M-DEL):           Commands For Killing.
-* backward-word (M-b):                  Commands For Moving.
-* beginning-of-history (M-<):           Commands For History.
-* beginning-of-line (C-a):              Commands For Moving.
-* call-last-kbd-macro (C-x e):          Keyboard Macros.
-* capitalize-word (M-c):                Commands For Text.
-* character-search (C-]):               Miscellaneous Commands.
-* character-search-backward (M-C-]):    Miscellaneous Commands.
-* clear-screen (C-l):                   Commands For Moving.
-* complete (TAB):                       Commands For Completion.
-* copy-backward-word ():                Commands For Killing.
-* copy-forward-word ():                 Commands For Killing.
-* copy-region-as-kill ():               Commands For Killing.
-* delete-char (C-d):                    Commands For Text.
-* delete-horizontal-space ():           Commands For Killing.
-* digit-argument (M-0, M-1, ... M-):    Numeric Arguments.
+* abort (C-g):                           Miscellaneous Commands.
+* accept-line (Newline, Return):         Commands For History.
+* backward-char (C-b):                   Commands For Moving.
+* backward-delete-char (Rubout):         Commands For Text.
+* backward-kill-line (C-x Rubout):       Commands For Killing.
+* backward-kill-word (M-DEL):            Commands For Killing.
+* backward-word (M-b):                   Commands For Moving.
+* beginning-of-history (M-<):            Commands For History.
+* beginning-of-line (C-a):               Commands For Moving.
+* call-last-kbd-macro (C-x e):           Keyboard Macros.
+* capitalize-word (M-c):                 Commands For Text.
+* character-search (C-]):                Miscellaneous Commands.
+* character-search-backward (M-C-]):     Miscellaneous Commands.
+* clear-screen (C-l):                    Commands For Moving.
+* complete (TAB):                        Commands For Completion.
+* copy-backward-word ():                 Commands For Killing.
+* copy-forward-word ():                  Commands For Killing.
+* copy-region-as-kill ():                Commands For Killing.
+* delete-char (C-d):                     Commands For Text.
+* delete-horizontal-space ():            Commands For Killing.
+* digit-argument (M-0, M-1, ... M--):    Numeric Arguments.
 * do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
-* downcase-word (M-l):                  Commands For Text.
-* dump-functions ():                    Miscellaneous Commands.
-* dump-macros ():                       Miscellaneous Commands.
-* dump-variables ():                    Miscellaneous Commands.
-* end-kbd-macro (C-x )):                Keyboard Macros.
-* end-of-history (M->):                 Commands For History.
-* end-of-line (C-e):                    Commands For Moving.
-* exchange-point-and-mark (C-x C-x):    Miscellaneous Commands.
-* forward-char (C-f):                   Commands For Moving.
-* forward-search-history (C-s):         Commands For History.
-* forward-word (M-f):                   Commands For Moving.
-* history-search-backward ():           Commands For History.
-* history-search-forward ():            Commands For History.
-* insert-comment (M-#):                 Miscellaneous Commands.
-* insert-completions (M-*):             Commands For Completion.
-* kill-line (C-k):                      Commands For Killing.
-* kill-region ():                       Commands For Killing.
-* kill-whole-line ():                   Commands For Killing.
-* kill-word (M-d):                      Commands For Killing.
-* next-history (C-n):                   Commands For History.
+* downcase-word (M-l):                   Commands For Text.
+* dump-functions ():                     Miscellaneous Commands.
+* dump-macros ():                        Miscellaneous Commands.
+* dump-variables ():                     Miscellaneous Commands.
+* end-kbd-macro (C-x )):                 Keyboard Macros.
+* end-of-history (M->):                  Commands For History.
+* end-of-line (C-e):                     Commands For Moving.
+* exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
+* forward-char (C-f):                    Commands For Moving.
+* forward-search-history (C-s):          Commands For History.
+* forward-word (M-f):                    Commands For Moving.
+* history-search-backward ():            Commands For History.
+* history-search-forward ():             Commands For History.
+* insert-comment (M-#):                  Miscellaneous Commands.
+* insert-completions (M-*):              Commands For Completion.
+* kill-line (C-k):                       Commands For Killing.
+* kill-region ():                        Commands For Killing.
+* kill-whole-line ():                    Commands For Killing.
+* kill-word (M-d):                       Commands For Killing.
+* next-history (C-n):                    Commands For History.
 * non-incremental-forward-search-history (M-n): Commands For History.
 * non-incremental-reverse-search-history (M-p): Commands For History.
-* possible-completions (M-?):           Commands For Completion.
-* prefix-meta (ESC):                    Miscellaneous Commands.
-* previous-history (C-p):               Commands For History.
-* quoted-insert (C-q, C-v):             Commands For Text.
-* re-read-init-file (C-x C-r):          Miscellaneous Commands.
-* redraw-current-line ():               Commands For Moving.
-* reverse-search-history (C-r):         Commands For History.
-* revert-line (M-r):                    Miscellaneous Commands.
-* self-insert (a, b, A, 1, !, ...):     Commands For Text.
-* set-mark (C-@):                       Miscellaneous Commands.
-* start-kbd-macro (C-x ():              Keyboard Macros.
-* tab-insert (M-TAB):                   Commands For Text.
-* tilde-expand (M-~):                   Miscellaneous Commands.
-* transpose-chars (C-t):                Commands For Text.
-* transpose-words (M-t):                Commands For Text.
-* undo (C-_, C-x C-u):                  Miscellaneous Commands.
-* universal-argument ():                Numeric Arguments.
-* unix-line-discard (C-u):              Commands For Killing.
-* unix-word-rubout (C-w):               Commands For Killing.
-* upcase-word (M-u):                    Commands For Text.
-* yank (C-y):                           Commands For Killing.
-* yank-last-arg (M-., M-_):             Commands For History.
-* yank-nth-arg (M-C-y):                 Commands For History.
-* yank-pop (M-y):                       Commands For Killing.
+* possible-completions (M-?):            Commands For Completion.
+* prefix-meta (ESC):                     Miscellaneous Commands.
+* previous-history (C-p):                Commands For History.
+* quoted-insert (C-q, C-v):              Commands For Text.
+* re-read-init-file (C-x C-r):           Miscellaneous Commands.
+* redraw-current-line ():                Commands For Moving.
+* reverse-search-history (C-r):          Commands For History.
+* revert-line (M-r):                     Miscellaneous Commands.
+* self-insert (a, b, A, 1, !, ...):      Commands For Text.
+* set-mark (C-@):                        Miscellaneous Commands.
+* start-kbd-macro (C-x ():               Keyboard Macros.
+* tab-insert (M-TAB):                    Commands For Text.
+* tilde-expand (M-~):                    Miscellaneous Commands.
+* transpose-chars (C-t):                 Commands For Text.
+* transpose-words (M-t):                 Commands For Text.
+* undo (C-_, C-x C-u):                   Miscellaneous Commands.
+* universal-argument ():                 Numeric Arguments.
+* unix-line-discard (C-u):               Commands For Killing.
+* unix-word-rubout (C-w):                Commands For Killing.
+* upcase-word (M-u):                     Commands For Text.
+* yank (C-y):                            Commands For Killing.
+* yank-last-arg (M-., M-_):              Commands For History.
+* yank-nth-arg (M-C-y):                  Commands For History.
+* yank-pop (M-y):                        Commands For Killing.
 
 \1f
 File: bashref.info,  Node: Concept Index,  Prev: Function Index,  Up: Top
@@ -6342,226 +6348,226 @@ Concept Index
 
 * Menu:
 
-* alias expansion:                      Aliases.
-* arithmetic evaluation:                Arithmetic Evaluation.
-* arithmetic expansion:                 Arithmetic Expansion.
-* arithmetic, shell:                    Shell Arithmetic.
-* arrays:                               Arrays.
-* background:                           Job Control Basics.
-* Bash configuration:                   Basic Installation.
-* Bash installation:                    Basic Installation.
-* Bourne shell:                         Basic Shell Features.
-* brace expansion:                      Brace Expansion.
-* builtin:                              Definitions.
-* command editing:                      Readline Bare Essentials.
-* command execution:                    Command Search and Execution.
-* command history:                      Bash History Facilities.
-* command search:                       Command Search and Execution.
-* command substitution:                 Command Substitution.
-* command timing:                       Pipelines.
-* commands, conditional:                Conditional Constructs.
-* commands, grouping:                   Command Grouping.
-* commands, lists:                      Lists.
-* commands, looping:                    Looping Constructs.
-* commands, pipelines:                  Pipelines.
-* commands, simple:                     Simple Commands.
-* comments, shell:                      Comments.
-* configuration:                        Basic Installation.
-* control operator:                     Definitions.
-* editing command lines:                Readline Bare Essentials.
-* environment:                          Environment.
-* evaluation, arithmetic:               Arithmetic Evaluation.
-* event designators:                    Event Designators.
-* exit status <1>:                      Definitions.
-* exit status:                          Exit Status.
-* expansion:                            Shell Expansions.
-* expansion, arithmetic:                Arithmetic Expansion.
-* expansion, brace:                     Brace Expansion.
-* expansion, filename:                  Filename Expansion.
-* expansion, parameter:                 Shell Parameter Expansion.
-* expansion, pathname:                  Filename Expansion.
-* expansion, tilde:                     Tilde Expansion.
-* expressions, arithmetic:              Arithmetic Evaluation.
-* expressions, conditional:             Bash Conditional Expressions.
-* field:                                Definitions.
-* filename:                             Definitions.
-* filename expansion:                   Filename Expansion.
-* foreground:                           Job Control Basics.
-* functions, shell:                     Shell Functions.
-* history events:                       Event Designators.
-* history expansion:                    History Interaction.
-* history list:                         Bash History Facilities.
-* History, how to use:                  Job Control Variables.
-* identifier:                           Definitions.
-* initialization file, readline:        Readline Init File.
-* installation:                         Basic Installation.
-* interaction, readline:                Readline Interaction.
-* interactive shell <1>:                Is This Shell Interactive?.
-* interactive shell:                    Invoking Bash.
-* job:                                  Definitions.
-* job control <1>:                      Definitions.
-* job control:                          Job Control Basics.
-* kill ring:                            Readline Killing Commands.
-* killing text:                         Readline Killing Commands.
-* localization:                         Locale Translation.
-* metacharacter:                        Definitions.
-* name:                                 Definitions.
-* notation, readline:                   Readline Bare Essentials.
-* operator, shell:                      Definitions.
-* parameter expansion:                  Shell Parameter Expansion.
-* parameters:                           Shell Parameters.
-* parameters, positional:               Positional Parameters.
-* parameters, special:                  Special Parameters.
-* pathname expansion:                   Filename Expansion.
-* pipeline:                             Pipelines.
-* POSIX:                                Definitions.
-* POSIX Mode:                           Bash POSIX Mode.
-* process group:                        Definitions.
-* process group ID:                     Definitions.
-* process substitution:                 Process Substitution.
-* prompting:                            Printing a Prompt.
-* quoting:                              Quoting.
-* quoting, ANSI:                        ANSI-C Quoting.
-* Readline, how to use:                 Modifiers.
-* redirection:                          Redirections.
-* reserved word:                        Definitions.
-* restricted shell:                     The Restricted Shell.
-* return status:                        Definitions.
-* shell function:                       Shell Functions.
-* shell script:                         Shell Scripts.
-* shell variable:                       Shell Parameters.
-* signal:                               Definitions.
-* signal handling:                      Signals.
-* special builtin:                      Definitions.
-* startup files:                        Bash Startup Files.
-* suspending jobs:                      Job Control Basics.
-* tilde expansion:                      Tilde Expansion.
-* token:                                Definitions.
-* variable, shell:                      Shell Parameters.
-* word:                                 Definitions.
-* word splitting:                       Word Splitting.
-* yanking text:                         Readline Killing Commands.
+* alias expansion:                       Aliases.
+* arithmetic evaluation:                 Arithmetic Evaluation.
+* arithmetic expansion:                  Arithmetic Expansion.
+* arithmetic, shell:                     Shell Arithmetic.
+* arrays:                                Arrays.
+* background:                            Job Control Basics.
+* Bash configuration:                    Basic Installation.
+* Bash installation:                     Basic Installation.
+* Bourne shell:                          Basic Shell Features.
+* brace expansion:                       Brace Expansion.
+* builtin:                               Definitions.
+* command editing:                       Readline Bare Essentials.
+* command execution:                     Command Search and Execution.
+* command history:                       Bash History Facilities.
+* command search:                        Command Search and Execution.
+* command substitution:                  Command Substitution.
+* command timing:                        Pipelines.
+* commands, conditional:                 Conditional Constructs.
+* commands, grouping:                    Command Grouping.
+* commands, lists:                       Lists.
+* commands, looping:                     Looping Constructs.
+* commands, pipelines:                   Pipelines.
+* commands, simple:                      Simple Commands.
+* comments, shell:                       Comments.
+* configuration:                         Basic Installation.
+* control operator:                      Definitions.
+* editing command lines:                 Readline Bare Essentials.
+* environment:                           Environment.
+* evaluation, arithmetic:                Arithmetic Evaluation.
+* event designators:                     Event Designators.
+* exit status <1>:                       Definitions.
+* exit status:                           Exit Status.
+* expansion:                             Shell Expansions.
+* expansion, arithmetic:                 Arithmetic Expansion.
+* expansion, brace:                      Brace Expansion.
+* expansion, filename:                   Filename Expansion.
+* expansion, parameter:                  Shell Parameter Expansion.
+* expansion, pathname:                   Filename Expansion.
+* expansion, tilde:                      Tilde Expansion.
+* expressions, arithmetic:               Arithmetic Evaluation.
+* expressions, conditional:              Bash Conditional Expressions.
+* field:                                 Definitions.
+* filename:                              Definitions.
+* filename expansion:                    Filename Expansion.
+* foreground:                            Job Control Basics.
+* functions, shell:                      Shell Functions.
+* history events:                        Event Designators.
+* history expansion:                     History Interaction.
+* history list:                          Bash History Facilities.
+* History, how to use:                   Job Control Variables.
+* identifier:                            Definitions.
+* initialization file, readline:         Readline Init File.
+* installation:                          Basic Installation.
+* interaction, readline:                 Readline Interaction.
+* interactive shell <1>:                 Is This Shell Interactive?.
+* interactive shell:                     Invoking Bash.
+* job:                                   Definitions.
+* job control <1>:                       Definitions.
+* job control:                           Job Control Basics.
+* kill ring:                             Readline Killing Commands.
+* killing text:                          Readline Killing Commands.
+* localization:                          Locale Translation.
+* metacharacter:                         Definitions.
+* name:                                  Definitions.
+* notation, readline:                    Readline Bare Essentials.
+* operator, shell:                       Definitions.
+* parameter expansion:                   Shell Parameter Expansion.
+* parameters:                            Shell Parameters.
+* parameters, positional:                Positional Parameters.
+* parameters, special:                   Special Parameters.
+* pathname expansion:                    Filename Expansion.
+* pipeline:                              Pipelines.
+* POSIX:                                 Definitions.
+* POSIX Mode:                            Bash POSIX Mode.
+* process group:                         Definitions.
+* process group ID:                      Definitions.
+* process substitution:                  Process Substitution.
+* prompting:                             Printing a Prompt.
+* quoting:                               Quoting.
+* quoting, ANSI:                         ANSI-C Quoting.
+* Readline, how to use:                  Modifiers.
+* redirection:                           Redirections.
+* reserved word:                         Definitions.
+* restricted shell:                      The Restricted Shell.
+* return status:                         Definitions.
+* shell function:                        Shell Functions.
+* shell script:                          Shell Scripts.
+* shell variable:                        Shell Parameters.
+* signal:                                Definitions.
+* signal handling:                       Signals.
+* special builtin:                       Definitions.
+* startup files:                         Bash Startup Files.
+* suspending jobs:                       Job Control Basics.
+* tilde expansion:                       Tilde Expansion.
+* token:                                 Definitions.
+* variable, shell:                       Shell Parameters.
+* word:                                  Definitions.
+* word splitting:                        Word Splitting.
+* yanking text:                          Readline Killing Commands.
 
 
 \1f
 Tag Table:
-Node: Top\7f1005
-Node: Introduction\7f3109
-Node: What is Bash?\7f3334
-Node: What is a shell?\7f4418
-Node: Definitions\7f6299
-Node: Basic Shell Features\7f8960
-Node: Shell Syntax\7f10481
-Node: Shell Operation\7f10771
-Node: Quoting\7f12005
-Node: Escape Character\7f13040
-Node: Single Quotes\7f13471
-Node: Double Quotes\7f13800
-Node: ANSI-C Quoting\7f14496
-Node: Locale Translation\7f15228
-Node: Comments\7f15649
-Node: Simple Commands\7f16173
-Node: Pipelines\7f16762
-Node: Lists\7f17833
-Node: Looping Constructs\7f19108
-Node: Conditional Constructs\7f20285
-Node: Command Grouping\7f22352
-Node: Shell Functions\7f23738
-Node: Shell Parameters\7f25511
-Node: Positional Parameters\7f26834
-Node: Special Parameters\7f27528
-Node: Shell Expansions\7f30094
-Node: Shell Parameter Expansion\7f32098
-Node: Command Substitution\7f38106
-Node: Process Substitution\7f39106
-Node: Word Splitting\7f40012
-Node: Filename Expansion\7f41464
-Node: Quote Removal\7f43830
-Node: Redirections\7f44116
-Node: Executing Commands\7f49857
-Node: Command Search and Execution\7f50312
-Node: Environment\7f52046
-Node: Exit Status\7f53682
-Node: Signals\7f54699
-Node: Shell Scripts\7f55910
-Node: Bourne Shell Features\7f57779
-Node: Bourne Shell Builtins\7f58449
-Node: Bourne Shell Variables\7f66803
-Node: Other Bourne Shell Features\7f68340
-Node: Major Differences From The Bourne Shell\7f69097
-Node: Csh Features\7f79457
-Node: Brace Expansion\7f80375
-Node: Tilde Expansion\7f81930
-Node: C Shell Builtins\7f82562
-Node: C Shell Variables\7f87118
-Node: Korn Shell Features\7f87526
-Node: Korn Shell Constructs\7f88254
-Node: Korn Shell Builtins\7f89969
-Node: Korn Shell Variables\7f92127
-Node: Aliases\7f93686
-Node: Alias Builtins\7f96150
-Node: Bash Features\7f96766
-Node: Invoking Bash\7f97757
-Node: Bash Startup Files\7f101622
-Node: Is This Shell Interactive?\7f105197
-Node: Bash Builtins\7f106180
-Node: The Set Builtin\7f122035
-Node: Bash Conditional Expressions\7f127410
-Node: Bash Variables\7f132061
-Node: Shell Arithmetic\7f142095
-Node: Arithmetic Evaluation\7f142563
-Node: Arithmetic Expansion\7f144593
-Node: Arithmetic Builtins\7f145397
-Node: Arrays\7f145868
-Node: Printing a Prompt\7f148895
-Node: The Restricted Shell\7f150493
-Node: Bash POSIX Mode\7f151723
-Node: Job Control\7f155407
-Node: Job Control Basics\7f155872
-Node: Job Control Builtins\7f160015
-Node: Job Control Variables\7f162938
-Node: Using History Interactively\7f164085
-Node: Bash History Facilities\7f164674
-Node: History Interaction\7f167072
-Node: Event Designators\7f169634
-Node: Word Designators\7f170557
-Node: Modifiers\7f171806
-Node: Command Line Editing\7f173123
-Node: Introduction and Notation\7f173783
-Node: Readline Interaction\7f174791
-Node: Readline Bare Essentials\7f175979
-Node: Readline Movement Commands\7f177508
-Node: Readline Killing Commands\7f178398
-Node: Readline Arguments\7f180100
-Node: Searching\7f181073
-Node: Readline Init File\7f182709
-Node: Readline Init File Syntax\7f183765
-Node: Conditional Init Constructs\7f191554
-Node: Sample Init File\7f193835
-Node: Bindable Readline Commands\7f196868
-Node: Commands For Moving\7f197618
-Node: Commands For History\7f198465
-Node: Commands For Text\7f201138
-Node: Commands For Killing\7f202880
-Node: Numeric Arguments\7f204906
-Node: Commands For Completion\7f206030
-Node: Keyboard Macros\7f208992
-Node: Miscellaneous Commands\7f209550
-Node: Readline vi Mode\7f213766
-Node: Installing Bash\7f214642
-Node: Basic Installation\7f215711
-Node: Compilers and Options\7f218636
-Node: Compiling For Multiple Architectures\7f219370
-Node: Installation Names\7f221027
-Node: Specifying the System Type\7f221749
-Node: Sharing Defaults\7f222460
-Node: Operation Controls\7f223125
-Node: Optional Features\7f224030
-Node: Reporting Bugs\7f228913
-Node: Builtin Index\7f229993
-Node: Reserved Word Index\7f233406
-Node: Variable Index\7f234714
-Node: Function Index\7f239899
-Node: Concept Index\7f244257
+Node: Top\7f1179
+Node: Introduction\7f3283
+Node: What is Bash?\7f3508
+Node: What is a shell?\7f4592
+Node: Definitions\7f6473
+Node: Basic Shell Features\7f9134
+Node: Shell Syntax\7f10655
+Node: Shell Operation\7f10945
+Node: Quoting\7f12179
+Node: Escape Character\7f13214
+Node: Single Quotes\7f13645
+Node: Double Quotes\7f13974
+Node: ANSI-C Quoting\7f14670
+Node: Locale Translation\7f15402
+Node: Comments\7f15823
+Node: Simple Commands\7f16347
+Node: Pipelines\7f16936
+Node: Lists\7f18007
+Node: Looping Constructs\7f19282
+Node: Conditional Constructs\7f20459
+Node: Command Grouping\7f22526
+Node: Shell Functions\7f23912
+Node: Shell Parameters\7f25685
+Node: Positional Parameters\7f27008
+Node: Special Parameters\7f27702
+Node: Shell Expansions\7f30268
+Node: Shell Parameter Expansion\7f32272
+Node: Command Substitution\7f38280
+Node: Process Substitution\7f39280
+Node: Word Splitting\7f40186
+Node: Filename Expansion\7f41638
+Node: Quote Removal\7f44004
+Node: Redirections\7f44290
+Node: Executing Commands\7f50031
+Node: Command Search and Execution\7f50486
+Node: Environment\7f52220
+Node: Exit Status\7f53856
+Node: Signals\7f54873
+Node: Shell Scripts\7f56084
+Node: Bourne Shell Features\7f57953
+Node: Bourne Shell Builtins\7f58623
+Node: Bourne Shell Variables\7f66977
+Node: Other Bourne Shell Features\7f68514
+Node: Major Differences From The Bourne Shell\7f69271
+Node: Csh Features\7f79631
+Node: Brace Expansion\7f80549
+Node: Tilde Expansion\7f82104
+Node: C Shell Builtins\7f82736
+Node: C Shell Variables\7f87292
+Node: Korn Shell Features\7f87700
+Node: Korn Shell Constructs\7f88428
+Node: Korn Shell Builtins\7f90143
+Node: Korn Shell Variables\7f92301
+Node: Aliases\7f93860
+Node: Alias Builtins\7f96326
+Node: Bash Features\7f96942
+Node: Invoking Bash\7f97933
+Node: Bash Startup Files\7f101798
+Node: Is This Shell Interactive?\7f105373
+Node: Bash Builtins\7f106356
+Node: The Set Builtin\7f122211
+Node: Bash Conditional Expressions\7f127586
+Node: Bash Variables\7f132237
+Node: Shell Arithmetic\7f142271
+Node: Arithmetic Evaluation\7f142739
+Node: Arithmetic Expansion\7f144769
+Node: Arithmetic Builtins\7f145573
+Node: Arrays\7f146044
+Node: Printing a Prompt\7f149071
+Node: The Restricted Shell\7f150669
+Node: Bash POSIX Mode\7f151899
+Node: Job Control\7f155583
+Node: Job Control Basics\7f156048
+Node: Job Control Builtins\7f160191
+Node: Job Control Variables\7f163114
+Node: Using History Interactively\7f164261
+Node: Bash History Facilities\7f164850
+Node: History Interaction\7f167248
+Node: Event Designators\7f169810
+Node: Word Designators\7f170737
+Node: Modifiers\7f171986
+Node: Command Line Editing\7f173303
+Node: Introduction and Notation\7f173963
+Node: Readline Interaction\7f175001
+Node: Readline Bare Essentials\7f176193
+Node: Readline Movement Commands\7f177736
+Node: Readline Killing Commands\7f178648
+Node: Readline Arguments\7f180368
+Node: Searching\7f181345
+Node: Readline Init File\7f182981
+Node: Readline Init File Syntax\7f184037
+Node: Conditional Init Constructs\7f191820
+Node: Sample Init File\7f194101
+Node: Bindable Readline Commands\7f197134
+Node: Commands For Moving\7f197884
+Node: Commands For History\7f198731
+Node: Commands For Text\7f201404
+Node: Commands For Killing\7f203148
+Node: Numeric Arguments\7f205174
+Node: Commands For Completion\7f206300
+Node: Keyboard Macros\7f209262
+Node: Miscellaneous Commands\7f209820
+Node: Readline vi Mode\7f214036
+Node: Installing Bash\7f214914
+Node: Basic Installation\7f215983
+Node: Compilers and Options\7f218908
+Node: Compiling For Multiple Architectures\7f219642
+Node: Installation Names\7f221299
+Node: Specifying the System Type\7f222021
+Node: Sharing Defaults\7f222732
+Node: Operation Controls\7f223397
+Node: Optional Features\7f224302
+Node: Reporting Bugs\7f229185
+Node: Builtin Index\7f230265
+Node: Reserved Word Index\7f233732
+Node: Variable Index\7f235059
+Node: Function Index\7f240327
+Node: Concept Index\7f244750
 \1f
 End Tag Table
index 6d1719ffdbe29ccfeb255aa94e39fc51a9874281..2d1717d16880b62b6a6f89da397185e021e59df4 100644 (file)
@@ -22,6 +22,11 @@ last change: Mon May 19 12:55:22 EDT 1997
 @defcodeindex rw
 @set BashFeatures
 
+@dircategory Utilities
+@direntry
+* Bash: (bash).                     GNU Bourne-Again SHell
+@end direntry
+
 @ifinfo
 @format
 This text is a brief description of the features that are present in
index fb7cfe5ab357ebb6231990ef5d47998a6999f6b4..e8375a310ac8add4ce09214a70544dbbd53a1840 100644 (file)
@@ -1,6 +1,7 @@
 %% TeX macros to handle texinfo files
 
-%   Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
+%  Copyright (C) 1985, 86, 88, 90, 91, 92, 93,
+%                94, 95, 1996 Free Software Foundation, Inc.
 
 %This texinfo.tex file is free software; you can redistribute it and/or
 %modify it under the terms of the GNU General Public License as
@@ -14,8 +15,8 @@
 
 %You should have received a copy of the GNU General Public License
 %along with this texinfo.tex file; see the file COPYING.  If not, write
-%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
-%USA.
+%to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+%Boston, MA 02111-1307, USA.
 
 
 %In other words, you are welcome to use, share and improve this program.
@@ -34,7 +35,7 @@
 
 % This automatically updates the version number based on RCS.
 \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 2.145 $
+\deftexinfoversion$Revision: 2.185 $
 \message{Loading texinfo package [Version \texinfoversion]:}
 
 % If in a .fmt file, print the version number
 
 % Save some parts of plain tex whose names we will redefine.
 
-\let\ptextilde=\~
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexdots=\dots
-\let\ptexdot=\.
-\let\ptexstar=\*
-\let\ptexend=\end
-\let\ptexbullet=\bullet
 \let\ptexb=\b
+\let\ptexbullet=\bullet
 \let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv = \equiv
 \let\ptexi=\i
+\let\ptexlbrace=\{
+\let\ptexrbrace=\}
+\let\ptexstar=\*
 \let\ptext=\t
-\let\ptexl=\l
-\let\ptexL=\L
+\let\ptextilde=\~
 
 % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space
 % since \penalty is valid in vertical mode, we'd end up putting the
 % penalty on the vertical list instead of in the new paragraph.
 {\catcode`@ = 11
- \gdef\tie{\leavevmode\penalty\@M\ }
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
 }
 \let\~ = \tie                  % And make it available as @~.
 
+
 \message{Basics,}
 \chardef\other=12
 
 \hyphenation{eshell}
 
 % Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset  \bindingoffset=0pt
-\newdimen \normaloffset   \normaloffset=\hoffset
+\newdimen \bindingoffset  
+\newdimen \normaloffset   
 \newdimen\pagewidth \newdimen\pageheight
-\pagewidth=\hsize \pageheight=\vsize
 
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 \newdimen\cornerlong \newdimen\cornerthick
 \newdimen \topandbottommargin
 \newdimen \outerhsize \newdimen \outervsize
-\cornerlong=1pc\cornerthick=.3pt       % These set size of cropmarks
+\cornerlong=1pc\cornerthick=.3pt        % These set size of cropmarks
 \outerhsize=7in
 %\outervsize=9.5in
 % Alternative @smallbook page size is 9.25in
 %---------------------End change-----------------------
 
 % \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions itself, but you have to call it yourself.
+% does insertions, but you have to call it yourself.
 \chardef\PAGE=255  \output={\onepageout{\pagecontents\PAGE}}
-\def\onepageout#1{\hoffset=\normaloffset
-\ifodd\pageno  \advance\hoffset by \bindingoffset
-\else \advance\hoffset by -\bindingoffset\fi
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
-\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
-{\let\hsize=\pagewidth \makefootline}}}%
-\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+\def\onepageout#1{%
+  \hoffset=\normaloffset
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  {%
+    \escapechar = `\\ % use backslash in output files.
+    \indexdummies
+    \shipout\vbox{%
+      {\let\hsize=\pagewidth \makeheadline}%
+      \pagebody{#1}%
+      {\let\hsize=\pagewidth \makefootline}%
+    }%
+  }%
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
 
 %%%% For @cropmarks command %%%%
 
 %
 \def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
 {\escapechar=`\\\relax % makes sure backslash is used in output files.
-                \shipout
-                \vbox to \outervsize{\hsize=\outerhsize
+                 \shipout
+                 \vbox to \outervsize{\hsize=\outerhsize
                  \vbox{\line{\ewtop\hfill\ewtop}}
                  \nointerlineskip
                  \line{\vbox{\moveleft\cornerthick\nstop}
                        \vbox{\moveright\cornerthick\nstop}}
                  \vskip \topandbottommargin
                  \centerline{\ifodd\pageno\hskip\bindingoffset\fi
-                       \vbox{
-                       {\let\hsize=\pagewidth \makeheadline}
-                       \pagebody{#1}
-                       {\let\hsize=\pagewidth \makefootline}}
-                       \ifodd\pageno\else\hskip\bindingoffset\fi}
-                \vskip \topandbottommargin plus1fill minus1fill
+                        \vbox{
+                        {\let\hsize=\pagewidth \makeheadline}
+                        \pagebody{#1}
+                        {\let\hsize=\pagewidth \makefootline}}
+                        \ifodd\pageno\else\hskip\bindingoffset\fi}
+                 \vskip \topandbottommargin plus1fill minus1fill
                  \boxmaxdepth\cornerthick
                  \line{\vbox{\moveleft\cornerthick\nsbot}
                        \hfill
                        \vbox{\moveright\cornerthick\nsbot}}
                  \nointerlineskip
                  \vbox{\line{\ewbot\hfill\ewbot}}
-       }}
+        }}
   \advancepageno
   \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
 %
 %\def\'{{'}}
 
 % Used to generate quoted braces.
-
 \def\mylbrace {{\tt \char '173}}
 \def\myrbrace {{\tt \char '175}}
 \let\{=\mylbrace
 \let\}=\myrbrace
+\begingroup
+  % Definitions to produce actual \{ & \} command in an index.
+  \catcode`\{ = 12 \catcode`\} = 12
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\@ = 0 \catcode`\\ = 12
+  @gdef@lbracecmd[\{]%
+  @gdef@rbracecmd[\}]%
+@endgroup
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown
+% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ptexi
+  \else\ifx\temp\jmacro \j
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
 
 % @: forces normal size whitespace following.
 \def\:{\spacefactor=1000 }
@@ -533,17 +578,34 @@ where each line of input produces a line of output.}
 \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
 \leftline{\hskip\leftskip{\rm#1}}}}
 
+% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
+
+\def\inmargin#1{%
+\strut\vadjust{\nobreak\kern-\strutdepth
+  \vtop to \strutdepth{\baselineskip\strutdepth\vss
+  \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+
 %\hbox{{\rm#1}}\hfil\break}}
 
 % @include file    insert text of that file as input.
-
-\def\include{\parsearg\includezzz}
-%Use \input\thisfile to avoid blank after \input, which may be an active
-%char (in which case the blank would become the \input argument).
-%The grouping keeps the value of \thisfile correct even when @include
-%is nested.
-\def\includezzz #1{\begingroup
-\def\thisfile{#1}\input\thisfile
+% Allow normal characters that  we make active in the argument (a file name).
+\def\include{\begingroup
+  \catcode`\\=12
+  \catcode`~=12
+  \catcode`^=12
+  \catcode`_=12
+  \catcode`|=12
+  \catcode`<=12
+  \catcode`>=12
+  \catcode`+=12
+  \parsearg\includezzz}
+% Restore active chars for included file.
+\def\includezzz#1{\endgroup\begingroup
+  % Read the included file in a group so nested @include's work.
+  \def\thisfile{#1}%
+  \input\thisfile
 \endgroup}
 
 \def\thisfile{}
@@ -558,7 +620,7 @@ where each line of input produces a line of output.}
 % @sp n   outputs n lines of vertical space
 
 \def\sp{\parsearg\spxxx}
-\def\spxxx #1{\par \vskip #1\baselineskip}
+\def\spxxx #1{\vskip #1\baselineskip}
 
 % @comment ...line which is ignored...
 % @c is the same as @comment
@@ -571,6 +633,9 @@ where each line of input produces a line of output.}
 
 \let\c=\comment
 
+% @paragraphindent  is defined for the Info formatting commands only.
+\let\paragraphindent=\comment
+
 % Prevent errors for section commands.
 % Used in @ignore and in failing conditionals.
 \def\ignoresections{%
@@ -605,6 +670,7 @@ where each line of input produces a line of output.}
 % incorrectly.
 %
 \def\ignoremorecommands{%
+  \let\defcodeindex = \relax
   \let\defcv = \relax
   \let\deffn = \relax
   \let\deffnx = \relax
@@ -628,6 +694,15 @@ where each line of input produces a line of output.}
   \let\printindex = \relax
   \let\pxref = \relax
   \let\settitle = \relax
+  \let\setchapternewpage = \relax
+  \let\setchapterstyle = \relax
+  \let\everyheading = \relax
+  \let\evenheading = \relax
+  \let\oddheading = \relax
+  \let\everyfooting = \relax
+  \let\evenfooting = \relax
+  \let\oddfooting = \relax
+  \let\headings = \relax
   \let\include = \relax
   \let\lowersections = \relax
   \let\down = \relax
@@ -636,7 +711,6 @@ where each line of input produces a line of output.}
   \let\set = \relax
   \let\clear = \relax
   \let\item = \relax
-  \let\message = \relax
 }
 
 % Ignore @ignore ... @end ignore.
@@ -651,6 +725,16 @@ where each line of input produces a line of output.}
 \def\menu{\doignore{menu}}
 \def\direntry{\doignore{direntry}}
 
+% Also ignore @macro ... @end macro.  The user must run texi2dvi,
+% which runs makeinfo to do macro expansion.  Ignore @unmacro, too.
+\def\macro{\doignore{macro}}
+\let\unmacro = \comment
+
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory = \comment
+
 % Ignore text until a line `@end #1'.
 %
 \def\doignore#1{\begingroup
@@ -682,11 +766,12 @@ where each line of input produces a line of output.}
     \immediate\write16{If you are running another version of TeX, relax.}
     \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
     \immediate\write16{  Then upgrade your TeX installation if you can.}
+    \immediate\write16{  (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)}
     \immediate\write16{If you are stuck with version 3.0, run the}
     \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}
     \immediate\write16{  to use a workaround.}
     \immediate\write16{}
-    \warnedobstrue
+    \global\warnedobstrue
     \fi
 }
 
@@ -762,15 +847,17 @@ where each line of input produces a line of output.}
 % Since we want to separate VAR from REST-OF-LINE (which might be
 % empty), we can't just use \parsearg; we have to insert a space of our
 % own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
+% didn't need it.  Make sure the catcode of space is correct to avoid
+% losing inside @example, for instance.
 %
-\def\set{\parsearg\setxxx}
+\def\set{\begingroup\catcode` =10 \parsearg\setxxx}
 \def\setxxx#1{\setyyy#1 \endsetyyy}
 \def\setyyy#1 #2\endsetyyy{%
   \def\temp{#2}%
   \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
   \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
   \fi
+  \endgroup
 }
 % Can't use \xdef to pre-expand #2 and save some time, since \temp or
 % \next or other control sequences that we've defined might get us into
@@ -785,9 +872,9 @@ where each line of input produces a line of output.}
 % @value{foo} gets the text saved in variable foo.
 %
 \def\value#1{\expandafter
-               \ifx\csname SET#1\endcsname\relax
-                       {\{No value for ``#1''\}}
-               \else \csname SET#1\endcsname \fi}
+                \ifx\csname SET#1\endcsname\relax
+                        {\{No value for ``#1''\}}
+                \else \csname SET#1\endcsname \fi}
 
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
@@ -887,6 +974,7 @@ where each line of input produces a line of output.}
 \expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
 \global\let\lastnode=\relax}
 
+% @refill is a no-op.
 \let\refill=\relax
 
 % @setfilename is done at the beginning of every texinfo file.
@@ -901,11 +989,24 @@ where each line of input produces a line of output.}
    \comment % Ignore the actual filename.
 }
 
+% @bye.
 \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
 
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
+% \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx}
+% \def\macroxxx#1#2 \end macro{%
+% \expandafter\gdef\macrotemp#1{#2}%
+% \endgroup}
+
+%\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx}
+%\def\linemacroxxx#1#2 \end linemacro{%
+%\let\parsearg=\relax
+%\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}%
+%\expandafter\xdef\macrotemp{\parsearg\macrotempx}%
+%\expandafter\gdef\macrotempx#1{#2}%
+%\endgroup}
+
+%\def\butfirst#1{}
+
 
 \message{fonts,}
 
@@ -917,12 +1018,16 @@ where each line of input produces a line of output.}
 \def\sf{\fam=\sffam \tensf}
 \let\li = \sf % Sometimes we call it \li, not \sf.
 
+% We don't need math for this one.
+\def\ttsl{\tenttsl}
+
 %% Try out Computer Modern fonts at \magstephalf
 \let\mainmagstep=\magstephalf
 
 % Set the font macro #1 to the font named #2, adding on the
 % specified font prefix (normally `cm').
-\def\setfont#1#2{\font#1=\fontprefix#2}
+% #3 is the font's design size, #4 is a scale factor
+\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
 
 % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix
@@ -930,96 +1035,119 @@ where each line of input produces a line of output.}
 \ifx\fontprefix\undefined
 \def\fontprefix{cm}
 \fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
 
 \ifx\bigger\relax
 \let\mainmagstep=\magstep1
-\setfont\textrm{r12}
-\setfont\texttt{tt12}
+\setfont\textrm\rmshape{12}{1000}
+\setfont\texttt\ttshape{12}{1000}
 \else
-\setfont\textrm{r10 scaled \mainmagstep}
-\setfont\texttt{tt10 scaled \mainmagstep}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
 \fi
 % Instead of cmb10, you many want to use cmbx10.
 % cmbx10 is a prettier font on its own, but cmb10
 % looks better when embedded in a line with cmr10.
-\setfont\textbf{b10 scaled \mainmagstep}
-\setfont\textit{ti10 scaled \mainmagstep}
-\setfont\textsl{sl10 scaled \mainmagstep}
-\setfont\textsf{ss10 scaled \mainmagstep}
-\setfont\textsc{csc10 scaled \mainmagstep}
+\setfont\textbf\bfshape{10}{\mainmagstep}
+\setfont\textit\itshape{10}{\mainmagstep}
+\setfont\textsl\slshape{10}{\mainmagstep}
+\setfont\textsf\sfshape{10}{\mainmagstep}
+\setfont\textsc\scshape{10}{\mainmagstep}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}
 \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep
 
 % A few fonts for @defun, etc.
-\setfont\defbf{bx10 scaled \magstep1} %was 1314
-\setfont\deftt{tt10 scaled \magstep1}
+\setfont\defbf\bxshape{10}{\magstep1} %was 1314
+\setfont\deftt\ttshape{10}{\magstep1}
 \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
 
-% Fonts for indices and small examples.
+% Fonts for indices and small examples (9pt).
 % We actually use the slanted font rather than the italic,
 % because texinfo normally uses the slanted fonts for that.
 % Do not make many font distinctions in general in the index, since they
 % aren't very useful.
-\setfont\ninett{tt9}
-\setfont\indrm{r9}
-\setfont\indit{sl9}
+\setfont\ninett\ttshape{9}{1000}
+\setfont\indrm\rmshape{9}{1000}
+\setfont\indit\slshape{9}{1000}
 \let\indsl=\indit
 \let\indtt=\ninett
+\let\indttsl=\ninett
 \let\indsf=\indrm
 \let\indbf=\indrm
-\setfont\indsc{csc10 at 9pt}
+\setfont\indsc\scshape{10}{900}
 \font\indi=cmmi9
 \font\indsy=cmsy9
 
-% Fonts for headings
-\setfont\chaprm{bx12 scaled \magstep2}
-\setfont\chapit{ti12 scaled \magstep2}
-\setfont\chapsl{sl12 scaled \magstep2}
-\setfont\chaptt{tt12 scaled \magstep2}
-\setfont\chapsf{ss12 scaled \magstep2}
+% Chapter (and unnumbered) fonts (17.28pt).
+\setfont\chaprm\rmbshape{12}{\magstep2}
+\setfont\chapit\itbshape{10}{\magstep3}
+\setfont\chapsl\slbshape{10}{\magstep3}
+\setfont\chaptt\ttbshape{12}{\magstep2}
+\setfont\chapttsl\ttslshape{10}{\magstep3}
+\setfont\chapsf\sfbshape{12}{\magstep2}
 \let\chapbf=\chaprm
-\setfont\chapsc{csc10 scaled\magstep3}
+\setfont\chapsc\scbshape{10}{\magstep3}
 \font\chapi=cmmi12 scaled \magstep2
 \font\chapsy=cmsy10 scaled \magstep3
 
-\setfont\secrm{bx12 scaled \magstep1}
-\setfont\secit{ti12 scaled \magstep1}
-\setfont\secsl{sl12 scaled \magstep1}
-\setfont\sectt{tt12 scaled \magstep1}
-\setfont\secsf{ss12 scaled \magstep1}
-\setfont\secbf{bx12 scaled \magstep1}
-\setfont\secsc{csc10 scaled\magstep2}
+% Section fonts (14.4pt).
+\setfont\secrm\rmbshape{12}{\magstep1}
+\setfont\secit\itbshape{10}{\magstep2}
+\setfont\secsl\slbshape{10}{\magstep2}
+\setfont\sectt\ttbshape{12}{\magstep1}
+\setfont\secttsl\ttslshape{10}{\magstep2}
+\setfont\secsf\sfbshape{12}{\magstep1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}
 \font\seci=cmmi12 scaled \magstep1
 \font\secsy=cmsy10 scaled \magstep2
 
-% \setfont\ssecrm{bx10 scaled \magstep1}    % This size an font looked bad.
-% \setfont\ssecit{cmti10 scaled \magstep1}    % The letters were too crowded.
-% \setfont\ssecsl{sl10 scaled \magstep1}
-% \setfont\ssectt{tt10 scaled \magstep1}
-% \setfont\ssecsf{ss10 scaled \magstep1}
+% \setfont\ssecrm\bxshape{10}{\magstep1}    % This size an font looked bad.
+% \setfont\ssecit\itshape{10}{\magstep1}    % The letters were too crowded.
+% \setfont\ssecsl\slshape{10}{\magstep1}
+% \setfont\ssectt\ttshape{10}{\magstep1}
+% \setfont\ssecsf\sfshape{10}{\magstep1}
 
-%\setfont\ssecrm{b10 scaled 1315}      % Note the use of cmb rather than cmbx.
-%\setfont\ssecit{ti10 scaled 1315}     % Also, the size is a little larger than
-%\setfont\ssecsl{sl10 scaled 1315}     % being scaled magstep1.
-%\setfont\ssectt{tt10 scaled 1315}
-%\setfont\ssecsf{ss10 scaled 1315}
+%\setfont\ssecrm\bfshape{10}{1315}      % Note the use of cmb rather than cmbx.
+%\setfont\ssecit\itshape{10}{1315}      % Also, the size is a little larger than
+%\setfont\ssecsl\slshape{10}{1315}      % being scaled magstep1.
+%\setfont\ssectt\ttshape{10}{1315}
+%\setfont\ssecsf\sfshape{10}{1315}
 
 %\let\ssecbf=\ssecrm
 
-\setfont\ssecrm{bx12 scaled \magstephalf}
-\setfont\ssecit{ti12 scaled \magstephalf}
-\setfont\ssecsl{sl12 scaled \magstephalf}
-\setfont\ssectt{tt12 scaled \magstephalf}
-\setfont\ssecsf{ss12 scaled \magstephalf}
-\setfont\ssecbf{bx12 scaled \magstephalf}
-\setfont\ssecsc{csc10 scaled \magstep1}
+% Subsection fonts (13.15pt).
+\setfont\ssecrm\rmbshape{12}{\magstephalf}
+\setfont\ssecit\itbshape{10}{1315}
+\setfont\ssecsl\slbshape{10}{1315}
+\setfont\ssectt\ttbshape{12}{\magstephalf}
+\setfont\ssecttsl\ttslshape{10}{\magstep1}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{\magstep1}
 \font\sseci=cmmi12 scaled \magstephalf
 \font\ssecsy=cmsy10 scaled \magstep1
 % The smallcaps and symbol fonts should actually be scaled \magstep1.5,
 % but that is not a standard magnification.
 
 % Fonts for title page:
-\setfont\titlerm{bx12 scaled \magstep3}
+\setfont\titlerm\rmbshape{12}{\magstep3}
 \let\authorrm = \secrm
 
 % In order for the font changes to affect most math symbols and letters,
@@ -1038,34 +1166,35 @@ where each line of input produces a line of output.}
 % The font-changing commands redefine the meanings of \tenSTYLE, instead
 % of just \STYLE.  We do this so that font changes will continue to work
 % in math mode, where it is the current \fam that is relevant in most
-% cases, not the current.  Plain TeX does, for example,
-% \def\bf{\fam=\bffam \tenbf}  By redefining \tenbf, we obviate the need
-% to redefine \bf itself.
+% cases, not the current font.  Plain TeX does \def\bf{\fam=\bffam
+% \tenbf}, for example.  By redefining \tenbf, we obviate the need to
+% redefine \bf itself.
 \def\textfonts{%
   \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
   \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
-  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
   \resetmathfonts}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
-  \resetmathfonts}
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
+  \resetmathfonts \setleading{19pt}}
 \def\secfonts{%
   \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
   \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
-  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
-  \resetmathfonts}
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
+  \resetmathfonts \setleading{16pt}}
 \def\subsecfonts{%
   \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
   \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
-  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
-  \resetmathfonts}
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
 \def\indexfonts{%
   \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
   \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
-  \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
-  \resetmathfonts}
+  \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl
+  \resetmathfonts \setleading{12pt}}
 
 % Set up the default fonts, so we can use them for creating boxes.
 %
@@ -1075,9 +1204,9 @@ where each line of input produces a line of output.}
 \newcount\fontdepth \fontdepth=0
 
 % Fonts for short table of contents.
-\setfont\shortcontrm{r12}
-\setfont\shortcontbf{bx12}
-\setfont\shortcontsl{sl12}
+\setfont\shortcontrm\rmshape{12}{1000}
+\setfont\shortcontbf\bxshape{12}{1000}
+\setfont\shortcontsl\slshape{12}{1000}
 
 %% Add scribe-like font environments, plus @l for inline lisp (usually sans
 %% serif) and @ii for TeX italic
@@ -1104,16 +1233,26 @@ where each line of input produces a line of output.}
 \def\restorehyphenation{\hyphenchar\font = `- }
 
 \def\t#1{%
-  {\tt \nohyphenation \rawbackslash \frenchspacing #1}%
+  {\tt \rawbackslash \frenchspacing #1}%
   \null
 }
-\let\ttfont = \t
-%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}
+\let\ttfont=\t
 \def\samp #1{`\tclose{#1}'\null}
-\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}
+\setfont\smallrm\rmshape{8}{1000}
+\font\smallsy=cmsy9
+\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{%
+  \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{%
+    \vbox{\hrule\kern-0.4pt
+     \hbox{\raise0.4pt\hbox{\vphantom{$\langle$}}#1}}%
+    \kern-0.4pt\hrule}%
+  \kern-.06em\raise0.4pt\hbox{$\rangle$}}}}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
 \def\ctrl #1{{\tt \rawbackslash \hat}#1}
 
 \let\file=\samp
+\let\url=\samp % perhaps include a hypertex \special eventually
+\def\email#1{$\langle${\tt #1}$\rangle$}
 
 % @code is a modification of @t,
 % which makes spaces the same size as normal in the surrounding text.
@@ -1139,13 +1278,13 @@ where each line of input produces a line of output.}
 }
 
 % We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overful hboxes
+% Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.
 
 % Unfortunately, TeX uses one parameter (\hyphenchar) to control
 % both hyphenation at - and hyphenation within words.
 % We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate an a dash.
+% and arrange explicitly to hyphenate at a dash.
 %  -- rms.
 {
 \catcode`\-=\active
@@ -1157,6 +1296,7 @@ where each line of input produces a line of output.}
 % ever called.  -- mycroft
 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
 }
+
 \def\realdash{-}
 \def\realunder{_}
 \def\codedash{-\discretionary{}{}{}}
@@ -1167,12 +1307,19 @@ where each line of input produces a line of output.}
 
 % @kbd is like @code, except that if the argument is just one @key command,
 % then @kbd has no effect.
-
+%
 \def\xkey{\key}
 \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
 \ifx\one\xkey\ifx\threex\three \key{#2}%
-\else\tclose{\look}\fi
-\else\tclose{\look}\fi}
+\else{\tclose{\ttsl\look}}\fi
+\else{\tclose{\ttsl\look}}\fi}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+% 
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
 
 % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
 % argument is to make the input look right: @dmn{pt} instead of
@@ -1182,12 +1329,19 @@ where each line of input produces a line of output.}
 
 \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
 
-\def\l#1{{\li #1}\null}                %
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
 
-\def\r#1{{\rm #1}}             % roman font
+\def\r#1{{\rm #1}}              % roman font
 % Use of \lowercase was suggested.
-\def\sc#1{{\smallcaps#1}}      % smallcaps font
-\def\ii#1{{\it #1}}            % italic font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @pounds{} is a sterling sign.
+\def\pounds{{\it\$}}
+
 
 \message{page headings,}
 
@@ -1202,7 +1356,7 @@ where each line of input produces a line of output.}
 
 \def\shorttitlepage{\parsearg\shorttitlepagezzz}
 \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-       \endgroup\page\hbox{}\page}
+        \endgroup\page\hbox{}\page}
 
 \def\titlepage{\begingroup \parindent=0pt \textfonts
    \let\subtitlerm=\tenrm
@@ -1219,9 +1373,9 @@ where each line of input produces a line of output.}
    % Now you can print the title using @title.
    \def\title{\parsearg\titlezzz}%
    \def\titlezzz##1{\leftline{\titlefont{##1}}
-                   % print a rule at the page bottom also.
-                   \finishedtitlepagefalse
-                   \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
+                    % print a rule at the page bottom also.
+                    \finishedtitlepagefalse
+                    \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
    % No rule at page bottom unless we print one at the top with @title.
    \finishedtitlepagetrue
    %
@@ -1239,7 +1393,7 @@ where each line of input produces a line of output.}
    \let\oldpage = \page
    \def\page{%
       \iffinishedtitlepage\else
-        \finishtitlepage
+         \finishtitlepage
       \fi
       \oldpage
       \let\page = \oldpage
@@ -1327,14 +1481,15 @@ where each line of input produces a line of output.}
 %
 }% unbind the catcode of @.
 
-% @headings double     turns headings on for double-sided printing.
-% @headings single     turns headings on for single-sided printing.
-% @headings off                turns them off.
-% @headings on         same as @headings double, retained for compatibility.
-% @headings after      turns on double-sided headings after this page.
-% @headings doubleafter        turns on double-sided headings after this page.
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
 % @headings singleafter turns on single-sided headings after this page.
-% By default, they are off.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
 
 \def\headings #1 {\csname HEADINGS#1\endcsname}
 
@@ -1348,22 +1503,24 @@ where each line of input produces a line of output.}
 % title on inside top of left hand pages, and page numbers on outside top
 % edge of all pages.
 \def\HEADINGSdouble{
-%\pagealignmacro
 \global\pageno=1
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
 }
+\let\contentsalignmacro = \chappager
+
 % For single-sided printing, chapter title goes across top left of page,
 % page number on top right.
 \def\HEADINGSsingle{
-%\pagealignmacro
 \global\pageno=1
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
 }
 \def\HEADINGSon{\HEADINGSdouble}
 
@@ -1374,6 +1531,7 @@ where each line of input produces a line of output.}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
 }
 
 \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
@@ -1382,6 +1540,7 @@ where each line of input produces a line of output.}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
 }
 
 % Subroutines used in generating headings
@@ -1405,6 +1564,7 @@ July\or August\or September\or October\or November\or December\fi
 \def\settitle{\parsearg\settitlezzz}
 \def\settitlezzz #1{\gdef\thistitle{#1}}
 
+
 \message{tables,}
 
 % @tabs -- simple alignment
@@ -1437,7 +1597,7 @@ July\or August\or September\or October\or November\or December\fi
 
 \newif\ifitemxneedsnegativevskip
 
-\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
 
 \def\internalBitem{\smallbreak \parsearg\itemzzz}
 \def\internalBitemx{\itemxpar \parsearg\itemzzz}
@@ -1544,7 +1704,7 @@ July\or August\or September\or October\or November\or December\fi
 \def\tablez #1#2#3#4#5#6{%
 \aboveenvbreak %
 \begingroup %
-\def\Edescription{\Etable}% Neccessary kludge.
+\def\Edescription{\Etable}% Necessary kludge.
 \let\itemindex=#1%
 \ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
 \ifnum 0#4>0 \tableindent=#4\mil \fi %
@@ -1708,10 +1868,10 @@ July\or August\or September\or October\or November\or December\fi
 \flushcr}
 
 % @multitable macros
-% Amy Hendrickson, 8/18/94
+% Amy Hendrickson, 8/18/94, 3/6/96
 %
-% @multitable ... @endmultitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
 % can be specified either with sample text given in a template line,
 % or in percent of \hsize, the current width of text on page.
 
@@ -1720,25 +1880,35 @@ July\or August\or September\or October\or November\or December\fi
 % To make preamble:
 %
 % Either define widths of columns in terms of percent of \hsize: 
-%   @multitable @percentofhsize .2 .3 .5
+%   @multitable @columnfractions .25 .3 .45
 %   @item ...
 %
-%   Numbers following @percentofhsize are the percent of the total
+%   Numbers following @columnfractions are the percent of the total
 %   current hsize to be used for each column. You may use as many
 %   columns as desired.
 
+
 % Or use a template:
 %   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
 %   @item ...
 %   using the widest term desired in each column.
-
+%
+% For those who want to use more than one line's worth of words in
+% the preamble, break the line within one argument and it
+% will parse correctly, i.e.,
+%
+%     @multitable {Column 1 template} {Column 2 template} {Column 3 
+%      template}
+% Not:
+%     @multitable {Column 1 template} {Column 2 template} 
+%      {Column 3 template}
 
 % Each new table line starts with @item, each subsequent new column 
 % starts with @tab. Empty columns may be produced by supplying @tab's
 % with nothing between them for as many times as empty columns are needed,
 % ie, @tab@tab@tab will produce two empty columns.
 
-% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their
+% @item, @tab, @multitable or @end multitable do not need to be on their
 % own lines, but it will not hurt if they are.
 
 % Sample multitable:
@@ -1756,71 +1926,86 @@ July\or August\or September\or October\or November\or December\fi
 %     
 %         They will wrap at the width determined by the template.
 %   @item@tab@tab This will be in third column.
-%   @endmultitable
+%   @end multitable
 
 % Default dimensions may be reset by user.
-% @intableparskip will set vertical space between paragraphs in table.
-% @intableparindent will set paragraph indent in table.
-% @spacebetweencols will set horizontal space to be left between columns.
-% @spacebetweenlines will set vertical space to be left between lines.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
 
 %%%%
 % Dimensions 
 
-\newdimen\intableparskip
-\newdimen\intableparindent
-\newdimen\spacebetweencols
-\newdimen\spacebetweenlines
-\intableparskip=0pt
-\intableparindent=6pt
-\spacebetweencols=12pt
-\spacebetweenlines=12pt
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
 
 %%%%
 % Macros used to set up halign preamble:
 \let\endsetuptable\relax
 \def\xendsetuptable{\endsetuptable}
-\let\percentofhsize\relax
-\def\xpercentofhsize{\percentofhsize}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
 \newif\ifsetpercent
 
+%% 2/1/96, to allow fractions to be given with more than one digit.
+\def\pickupwholefraction#1 {\global\advance\colcount by1 %
+\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
+\setuptable}
+
 \newcount\colcount
 \def\setuptable#1{\def\firstarg{#1}%
 \ifx\firstarg\xendsetuptable\let\go\relax%
 \else
-  \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
+  \ifx\firstarg\xcolumnfractions\global\setpercenttrue%
   \else
     \ifsetpercent
-       \if#1.\else%
-       \global\advance\colcount by1 %
-       \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
-       \fi
+       \let\go\pickupwholefraction   % In this case arg of setuptable
+                                     % is the decimal point before the
+                                     % number given in percent of hsize.
+                                     % We don't need this so we don't use it.
     \else
        \global\advance\colcount by1
-       \setbox0=\hbox{#1}%
+       \setbox0=\hbox{#1 }% Add a normal word space as a separator;
+                          % typically that is always in the input, anyway.
        \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
     \fi%
   \fi%
-  \let\go\setuptable%
+\ifx\go\pickupwholefraction\else\let\go\setuptable\fi%
 \fi\go}
+
 %%%%
 % multitable syntax
-\def\tab{&}
+\def\tab{&\hskip1sp\relax} % 2/2/96
+                           % tiny skip here makes sure this column space is
+                           % maintained, even if it is never used.
+
 
 %%%%
-% @multitable ... @endmultitable definitions:
+% @multitable ... @end multitable definitions:
 
-\def\multitable#1\item{\bgroup
+\def\multitable{\parsearg\dotable}
+
+\def\dotable#1{\bgroup
 \let\item\cr
 \tolerance=9500
 \hbadness=9500
-\parskip=\intableparskip
-\parindent=\intableparindent
+\setmultitablespacing
+\parskip=\multitableparskip
+\parindent=\multitableparindent
 \overfullrule=0pt
 \global\colcount=0\relax%
 \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
  % To parse everything between @multitable and @item :
-\def\one{#1}\expandafter\setuptable\one\endsetuptable
+\setuptable#1 \endsetuptable
  % Need to reset this to 0 after \setuptable.
 \global\colcount=0\relax% 
  %
@@ -1829,11 +2014,11 @@ July\or August\or September\or October\or November\or December\fi
  % \vtop will set a single line and will also let text wrap and 
  % continue for many paragraphs if desired.
 \halign\bgroup&\global\advance\colcount by 1\relax%
-\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
+\multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
  % In order to keep entries from bumping into each other
- % we will add a \leftskip of \spacebetweencols to all columns after
+ % we will add a \leftskip of \multitablecolspace to all columns after
  % the first one.
- %  If a template has been used, we will add \spacebetweencols 
+ %  If a template has been used, we will add \multitablecolspace 
  % to the width of each template entry.
  %  If user has set preamble in terms of percent of \hsize
  % we will use that dimension as the width of the column, and
@@ -1845,20 +2030,46 @@ July\or August\or September\or October\or November\or December\fi
   \ifsetpercent
   \else
    % If user has <not> set preamble in terms of percent of \hsize
-   % we will advance \hsize by \spacebetweencols 
-  \advance\hsize by \spacebetweencols
+   % we will advance \hsize by \multitablecolspace 
+  \advance\hsize by \multitablecolspace
   \fi
- % In either case we will make \leftskip=\spacebetweencols:
-\leftskip=\spacebetweencols
+ % In either case we will make \leftskip=\multitablecolspace:
+\leftskip=\multitablecolspace
 \fi
-\noindent##}\cr%
+\noindent##\multistrut}\cr%
  % \everycr will reset column counter, \colcount, at the end of
  % each line. Every column  entry will cause \colcount to advance by one. 
  % The table preamble
  % looks at the current \colcount to find the correct column width.
-\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
+\global\everycr{\noalign{%
 \filbreak%% keeps underfull box messages off when table breaks over pages.
-\global\colcount=0\relax}}}
+\global\colcount=0\relax}}
+}
+
+\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
+% If so, do nothing. If not, give it an appropriate dimension based on
+% current baselineskip.
+\ifdim\multitablelinespace=0pt
+%% strut to put in table in case some entry doesn't have descenders,
+%% to keep lines equally spaced
+\let\multistrut = \strut
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing. 
+%%        If so, set to same dimension as multitablelinespace.
+\else
+\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
+width0pt\relax} \fi
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
 
 \message{indexing,}
 % Index generation facilities
@@ -1872,14 +2083,14 @@ July\or August\or September\or October\or November\or December\fi
 % It automatically defines \fooindex such that
 % \fooindex ...rest of line... puts an entry in the index foo.
 % It also defines \fooindfile to be the number of the output channel for
-% the file that        accumulates this index.  The file's extension is foo.
+% the file that accumulates this index.  The file's extension is foo.
 % The name of an index should be no more than 2 characters long
 % for the sake of vms.
 
 \def\newindex #1{
 \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\doindex {#1}}
 }
 
@@ -1891,8 +2102,8 @@ July\or August\or September\or October\or November\or December\fi
 
 \def\newcodeindex #1{
 \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\docodeindex {#1}}
 }
 
@@ -1903,7 +2114,7 @@ July\or August\or September\or October\or November\or December\fi
 \def\synindex #1 #2 {%
 \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
 \expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\doindex {#2}}%
 }
 
@@ -1912,7 +2123,7 @@ July\or August\or September\or October\or November\or December\fi
 \def\syncodeindex #1 #2 {%
 \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
 \expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\docodeindex {#2}}%
 }
 
@@ -1960,24 +2171,31 @@ July\or August\or September\or October\or November\or December\fi
 \def\L{\realbackslash L}%
 \def\ss{\realbackslash ss}%
 % Take care of texinfo commands likely to appear in an index entry.
+% (Must be a way to avoid doing expansion at all, and thus not have to
+% laboriously list every single command here.)
+\def\@{@}% will be @@ when we switch to @ as escape char.
+%\let\{ = \lbracecmd
+%\let\} = \rbracecmd
 \def\_{{\realbackslash _}}%
 \def\w{\realbackslash w }%
 \def\bf{\realbackslash bf }%
-\def\rm{\realbackslash rm }%
+%\def\rm{\realbackslash rm }%
 \def\sl{\realbackslash sl }%
 \def\sf{\realbackslash sf}%
 \def\tt{\realbackslash tt}%
 \def\gtr{\realbackslash gtr}%
 \def\less{\realbackslash less}%
 \def\hat{\realbackslash hat}%
-\def\char{\realbackslash char}%
+%\def\char{\realbackslash char}%
 \def\TeX{\realbackslash TeX}%
 \def\dots{\realbackslash dots }%
 \def\copyright{\realbackslash copyright }%
 \def\tclose##1{\realbackslash tclose {##1}}%
 \def\code##1{\realbackslash code {##1}}%
+\def\dotless##1{\realbackslash dotless {##1}}%
 \def\samp##1{\realbackslash samp {##1}}%
-\def\t##1{\realbackslash r {##1}}%
+\def\,##1{\realbackslash ,{##1}}%
+\def\t##1{\realbackslash t {##1}}%
 \def\r##1{\realbackslash r {##1}}%
 \def\i##1{\realbackslash i {##1}}%
 \def\b##1{\realbackslash b {##1}}%
@@ -1988,8 +2206,15 @@ July\or August\or September\or October\or November\or December\fi
 \def\kbd##1{\realbackslash kbd {##1}}%
 \def\dfn##1{\realbackslash dfn {##1}}%
 \def\emph##1{\realbackslash emph {##1}}%
+\unsepspaces
 }
 
+% If an index command is used in an @example environment, any spaces
+% therein should become regular spaces in the raw index file, not the
+% expansion of \tie (\\leavevmode \penalty \@M \ ).
+{\obeyspaces
+ \gdef\unsepspaces{\obeyspaces\let =\space}}
+
 % \indexnofonts no-ops all font-change commands.
 % This is used when outputting the strings to sort the index by.
 \def\indexdummyfont#1{#1}
@@ -1998,6 +2223,7 @@ July\or August\or September\or October\or November\or December\fi
 
 \def\indexnofonts{%
 % Just ignore accents.
+\let\,=\indexdummyfont
 \let\"=\indexdummyfont
 \let\`=\indexdummyfont
 \let\'=\indexdummyfont
@@ -2010,6 +2236,7 @@ July\or August\or September\or October\or November\or December\fi
 \let\u=\indexdummyfont
 \let\v=\indexdummyfont
 \let\H=\indexdummyfont
+\let\dotless=\indexdummyfont
 % Take care of the plain tex special European modified letters.
 \def\oe{oe}%
 \def\ae{ae}%
@@ -2043,6 +2270,7 @@ July\or August\or September\or October\or November\or December\fi
 \let\var=\indexdummyfont
 \let\TeX=\indexdummytex
 \let\dots=\indexdummydots
+\def\@{@}%
 }
 
 % To define \realbackslash, we must make \ not be an escape.
@@ -2058,29 +2286,37 @@ July\or August\or September\or October\or November\or December\fi
 % workhorse for all \fooindexes
 % #1 is name of index, #2 is stuff to put there
 \def\doind #1#2{%
-% Put the index entry in the margin if desired.
-\ifx\SETmarginindex\relax\else%
-\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-\fi%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0% Expand all macros now EXCEPT \folio
-\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-% so it will be output as is; and it will print as backslash in the indx.
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2}%
-}%
-% Now produce the complete index entry.  We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}}}%
-\temp }%
-}\penalty\count10}}
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
+  \fi
+  {%
+    \count255=\lastpenalty
+    {%
+      \indexdummies % Must do this here, since \bf, etc expand at this stage
+      \escapechar=`\\
+      {%
+        \let\folio=0 % We will expand all macros now EXCEPT \folio.
+        \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+        % so it will be output as is; and it will print as backslash.
+        %
+        % First process the index-string with all font commands turned off
+        % to get the string to sort by.
+        {\indexnofonts \xdef\indexsorttmp{#2}}%
+        %
+        % Now produce the complete index entry, with both the sort key and the
+        % original text, including any font commands.
+        \toks0 = {#2}%
+        \edef\temp{%
+          \write\csname#1indfile\endcsname{%
+            \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
+        }%
+        \temp
+      }%
+    }%
+    \penalty\count255
+  }%
+}
 
 \def\dosubind #1#2#3{%
 {\count10=\lastpenalty %
@@ -2141,26 +2377,19 @@ July\or August\or September\or October\or November\or December\fi
 
 \def\printindex{\parsearg\doprintindex}
 
-\def\doprintindex#1{%
-  \tex
-  \dobreak \chapheadingskip {10000}
-  \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
-  \catcode`\$=\other
-  \catcode`\~=\other
-  \indexbreaks
+\def\doprintindex#1{\begingroup
+  \dobreak \chapheadingskip{10000}%
   %
-  % The following don't help, since the chars were translated
-  % when the raw index was written, and their fonts were discarded
-  % due to \indexnofonts.
-  %\catcode`\"=\active
-  %\catcode`\^=\active
-  %\catcode`\_=\active
-  %\catcode`\|=\active
-  %\catcode`\<=\active
-  %\catcode`\>=\active
-  % %
-  \def\indexbackslash{\rawbackslashxx}
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
+  \indexfonts \rm
+  \tolerance = 9500
+  \indexbreaks
+  \def\indexbackslash{\rawbackslashxx}%
+  % Index files are almost Texinfo source, but we use \ as the escape
+  % character.  It would be better to use @, but that's too big a change
+  % to make right now.
+  \catcode`\\ = 0
+  \catcode`\@ = 11
+  \escapechar = `\\
   \begindoublecolumns
   %
   % See if the index file exists and is nonempty.
@@ -2171,7 +2400,7 @@ July\or August\or September\or October\or November\or December\fi
     % index.  The easiest way to prevent this problem is to make sure
     % there is some text.
     (Index is nonexistent)
-    \else
+  \else
     %
     % If the index file exists but is empty, then \openin leaves \ifeof
     % false.  We have to make TeX try to read something from the file, so
@@ -2185,8 +2414,7 @@ July\or August\or September\or October\or November\or December\fi
   \fi
   \closein 1
   \enddoublecolumns
-  \Etex
-}
+\endgroup}
 
 % These macros are used by the sorted index file itself.
 % Change them to control the appearance of the index.
@@ -2240,7 +2468,7 @@ July\or August\or September\or October\or November\or December\fi
   %
   % Insert the text of the index entry.  TeX will do line-breaking on it.
   #1%
-  % The following is kluged to not output a line of dots in the index if
+  % The following is kludged to not output a line of dots in the index if
   % there are no page numbers.  The next person who breaks this will be
   % cursed by a Unix daemon.
   \def\tempa{{\rm }}%
@@ -2277,15 +2505,15 @@ July\or August\or September\or October\or November\or December\fi
 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
 }}
 
-%% Define two-column mode, which is used in indexes.
-%% Adapted from the TeXbook, page 416.
-\catcode `\@=11
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
 
 \newbox\partialpage
-
 \newdimen\doublecolumnhsize
 
-\def\begindoublecolumns{\begingroup
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
   % Grab any single-column material above us.
   \output = {\global\setbox\partialpage
     =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
@@ -2318,51 +2546,51 @@ July\or August\or September\or October\or November\or December\fi
   % Double the \vsize as well.  (We don't need a separate register here,
   % since nobody clobbers \vsize.)
   \vsize = 2\vsize
-  \doublecolumnpagegoal
 }
-
-\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}
-
-\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth
-  \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage
-  \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}
-  \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}
-  \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
-  \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage
+  % box0 will be the left-hand column, box1 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255 \penalty\outputpenalty
 }
-\def\doublecolumnpagegoal{%
-  \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@
+\def\pagesofar{%
+  % The contents of the output page -- any previous material,
+  % followed by the two boxes we just split.
+  \unvbox\partialpage
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}%
 }
-\def\pagesofar{\unvbox\partialpage %
-  \hsize=\doublecolumnhsize % have to restore this since output routine
-  \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
-\def\doublecolumnout{%
-  \setbox5=\copy255
-  {\vbadness=10000 \doublecolumnsplit}
-  \ifvbox255
-    \setbox0=\vtop to\dimen@{\unvbox0}
-    \setbox2=\vtop to\dimen@{\unvbox2}
-    \onepageout\pagesofar \unvbox255 \penalty\outputpenalty
-  \else
-    \setbox0=\vbox{\unvbox5}
-    \ifvbox0
-      \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
-      \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth
-      {\vbadness=10000
-       \loop \global\setbox5=\copy0
-          \setbox1=\vsplit5 to\dimen@
-          \setbox3=\vsplit5 to\dimen@
-          \ifvbox5 \global\advance\dimen@ by1pt \repeat
-        \setbox0=\vbox to\dimen@{\unvbox1}
-        \setbox2=\vbox to\dimen@{\unvbox3}
-        \global\setbox\partialpage=\vbox{\pagesofar}
-        \doublecolumnpagegoal
-      }
-    \fi
-  \fi
+\def\enddoublecolumns{%
+  \output={\balancecolumns}\eject % split what we have
+  \endgroup
+  % Back to normal single-column typesetting, but take account of the
+  % fact that we just accumulated some stuff on the output page.
+  \pagegoal=\vsize 
+}
+\def\balancecolumns{%
+  % Called on the last page of the double column material.
+  \setbox0=\vbox{\unvbox255}%
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {\vbadness=10000 \loop \global\setbox3=\copy0
+    \global\setbox1=\vsplit3 to\dimen@
+    \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  \pagesofar
 }
-
 \catcode `\@=\other
+
+
 \message{sectioning,}
 % Define chapters, sections, etc.
 
@@ -2534,6 +2762,10 @@ July\or August\or September\or October\or November\or December\fi
 \global\let\subsubsection = \appendixsubsubsec
 }}
 
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\def\centerchap{\parsearg\centerchapyyy}
+\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
+
 \outer\def\top{\parsearg\unnumberedyyy}
 \outer\def\unnumbered{\parsearg\unnumberedyyy}
 \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
@@ -2578,7 +2810,7 @@ July\or August\or September\or October\or November\or December\fi
 \penalty 10000 %
 }}
 
-\outer\def\appenixsection{\parsearg\appendixsecyyy}
+\outer\def\appendixsection{\parsearg\appendixsecyyy}
 \outer\def\appendixsec{\parsearg\appendixsecyyy}
 \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
 \def\appendixsectionzzz #1{\seccheck{appendixsection}%
@@ -2636,7 +2868,7 @@ July\or August\or September\or October\or November\or December\fi
 \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
 \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
 \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
+\plainsubsecheading {#1}\gdef\thissection{#1}%
 {\chapternofonts%
 \edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
 \escapechar=`\\%
@@ -2681,7 +2913,7 @@ July\or August\or September\or October\or November\or December\fi
 \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
 \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
 \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
+\plainsubsubsecheading {#1}\gdef\thissection{#1}%
 {\chapternofonts%
 \edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
 \escapechar=`\\%
@@ -2719,10 +2951,10 @@ July\or August\or September\or October\or November\or December\fi
 
 % NOTE on use of \vbox for chapter headings, section headings, and
 % such:
-%      1) We use \vbox rather than the earlier \line to permit
-%         overlong headings to fold.
-%      2) \hyphenpenalty is set to 10000 because hyphenation in a
-%         heading is obnoxious; this forbids it.
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
 %       3) Likewise, headings look best if no \parindent is used, and
 %          if justification is not attempted.  Hence \raggedright.
 
@@ -2740,11 +2972,10 @@ July\or August\or September\or October\or November\or December\fi
                   \parindent=0pt\raggedright
                   \rm #1\hfill}}\bigskip \par\penalty 200}
 
-\def\heading{\parsearg\secheadingi}
-
-\def\subheading{\parsearg\subsecheadingi}
-
-\def\subsubheading{\parsearg\subsubsecheadingi}
+% @heading, @subheading, @subsubheading.
+\def\heading{\parsearg\plainsecheading}
+\def\subheading{\parsearg\plainsubsecheading}
+\def\subsubheading{\parsearg\plainsubsubsecheading}
 
 % These macros generate a chapter, section, etc. heading only
 % (including whitespace, linebreaking, etc. around it),
@@ -2758,7 +2989,7 @@ July\or August\or September\or October\or November\or December\fi
 %%% Define plain chapter starts, and page on/off switching for it
 % Parameter controlling skip before chapter headings (if needed)
 
-\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
+\newskip\chapheadingskip
 
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
 \def\chappager{\par\vfill\supereject}
@@ -2767,15 +2998,18 @@ July\or August\or September\or October\or November\or December\fi
 \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
 
 \def\CHAPPAGoff{
+\global\let\contentsalignmacro = \chappager
 \global\let\pchapsepmacro=\chapbreak
 \global\let\pagealignmacro=\chappager}
 
 \def\CHAPPAGon{
+\global\let\contentsalignmacro = \chappager
 \global\let\pchapsepmacro=\chappager
 \global\let\pagealignmacro=\chappager
 \global\def\HEADINGSon{\HEADINGSsingle}}
 
 \def\CHAPPAGodd{
+\global\let\contentsalignmacro = \chapoddpage
 \global\let\pchapsepmacro=\chapoddpage
 \global\let\pagealignmacro=\chapoddpage
 \global\def\HEADINGSon{\HEADINGSdouble}}
@@ -2784,25 +3018,39 @@ July\or August\or September\or October\or November\or December\fi
 
 \def\CHAPFplain{
 \global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain}
+\global\let\unnumbchapmacro=\unnchfplain
+\global\let\centerchapmacro=\centerchfplain}
 
-\def\chfplain #1#2{%
+% Plain chapter opening.
+% #1 is the text, #2 the chapter number or empty if unnumbered.
+\def\chfplain#1#2{%
   \pchapsepmacro
   {%
-    \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                     \parindent=0pt\raggedright
-                     \rm #2\enspace #1}%
+    \chapfonts \rm
+    \def\chapnum{#2}%
+    \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent = \wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
   }%
-  \bigskip
-  \penalty5000
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
 }
 
-\def\unnchfplain #1{%
-\pchapsepmacro %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                  \parindent=0pt\raggedright
-                  \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
+% Plain opening for unnumbered.
+\def\unnchfplain#1{\chfplain{#1}{}}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerchfplain#1{{%
+  \def\centerparametersmaybe{%
+    \advance\rightskip by 3\rightskip
+    \leftskip = \rightskip
+    \parfillskip = 0pt
+  }%
+  \chfplain{#1}{}%
+}}
+
 \CHAPFplain % The default
 
 \def\unnchfopen #1{%
@@ -2816,73 +3064,81 @@ July\or August\or September\or October\or November\or December\fi
 \par\penalty 5000 %
 }
 
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 %
+}
+
 \def\CHAPFopen{
 \global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen}
+\global\let\unnumbchapmacro=\unnchfopen
+\global\let\centerchapmacro=\centerchfopen}
 
-% Parameter controlling skip before section headings.
 
-\newskip \subsecheadingskip  \subsecheadingskip = 17pt plus 8pt minus 4pt
+% Section titles.
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
+\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
+
+% Subsection titles.
+\newskip \subsecheadingskip
 \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
+\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
+\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
 
-\newskip \secheadingskip  \secheadingskip = 21pt plus 8pt minus 4pt
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+% Subsubsection titles.
+\let\subsubsecheadingskip = \subsecheadingskip
+\let\subsubsecheadingbreak = \subsecheadingbreak
+\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
+\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
 
-% @paragraphindent  is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
 
-% Section fonts are the base font at magstep2, which produces
-% a size a bit more than 14 points in the default situation.
-
-\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
-\def\plainsecheading #1{\secheadingi {#1}}
-\def\secheadingi #1{{\advance \secheadingskip by \parskip %
-\secheadingbreak}%
-{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                 \parindent=0pt\raggedright
-                 \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-
-% Subsection fonts are the base font at magstep1,
-% which produces a size of 12 points.
-
-\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
-\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                     \parindent=0pt\raggedright
-                     \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
-                                 % Perhaps make sssec fonts scaled
-                                 % magstep half
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
-\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
+% Print any size section title.
+% 
+% #1 is the section type (sec/subsec/subsubsec), #2 is the section
+% number (maybe empty), #3 the text.
+\def\sectionheading#1#2#3{%
+  {%
+    \expandafter\advance\csname #1headingskip\endcsname by \parskip
+    \csname #1headingbreak\endcsname
+  }%
+  {%
+    % Switch to the right set of fonts.
+    \csname #1fonts\endcsname \rm
+    %
+    % Only insert the separating space if we have a section number.
+    \def\secnum{#2}%
+    \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
+    %
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent = \wd0 % zero if no section number
+          \unhbox0 #3}%
+  }%
+  \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
+}
 
 
 \message{toc printing,}
-
 % Finish up the main text and prepare to read what we've written
 % to \contentsfile.
 
 \newskip\contentsrightmargin \contentsrightmargin=1in
 \def\startcontents#1{%
-   \pagealignmacro
+   % If @setchapternewpage on, and @headings double, the contents should
+   % start on an odd page, unlike chapters.  Thus, we maintain
+   % \contentsalignmacro in parallel with \pagealignmacro.
+   % From: Torbjorn Granlund <tege@matematik.su.se>
+   \contentsalignmacro
    \immediate\closeout \contentsfile
    \ifnum \pageno>0
-      \pageno = -1             % Request roman numbered pages.
+      \pageno = -1              % Request roman numbered pages.
    \fi
    % Don't need to put `Contents' or `Short Contents' in the headline.
    % It is abundantly clear what they are.
    \unnumbchapmacro{#1}\def\thischapter{}%
-   \begingroup                 % Set up to handle contents files properly.
+   \begingroup                  % Set up to handle contents files properly.
       \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
       \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
       \raggedbottom             % Worry more about breakpoints than the bottom.
@@ -2908,6 +3164,7 @@ July\or August\or September\or October\or November\or December\fi
       \secfonts
       \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
       \rm
+      \hyphenpenalty = 10000
       \advance\baselineskip by 1pt % Open it up a little.
       \def\secentry ##1##2##3##4{}
       \def\unnumbsecentry ##1##2{}
@@ -2951,7 +3208,7 @@ July\or August\or September\or October\or November\or December\fi
   % This space should be plenty, since a single number is .5em, and the
   % widest letter (M) is 1em, at least in the Computer Modern fonts.
   % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in in \shortchapentry above.)
+  % the label; that gets put in by \shortchapentry above.)
   \advance\dimen0 by 1.1em
   \hbox to \dimen0{#1\hfil}%
 }
@@ -2972,22 +3229,21 @@ July\or August\or September\or October\or November\or December\fi
   \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
 \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
 
-
 % This parameter controls the indentation of the various levels.
 \newdimen\tocindent \tocindent = 3pc
 
 % Now for the actual typesetting. In all these, #1 is the text and #2 is the
 % page number.
 %
-% If the toc has to be broken over pages, we would want to be at chapters
+% If the toc has to be broken over pages, we want it to be at chapters
 % if at all possible; hence the \penalty.
 \def\dochapentry#1#2{%
-   \penalty-300 \vskip\baselineskip
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
    \begingroup
      \chapentryfonts
      \tocentry{#1}{\dopageno{#2}}%
    \endgroup
-   \nobreak\vskip .25\baselineskip
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
 }
 
 \def\dosecentry#1#2{\begingroup
@@ -3010,9 +3266,10 @@ July\or August\or September\or October\or November\or December\fi
 % can't do that in the \entry macro, since index entries might consist
 % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
 %
+% \turnoffactive is for the sake of @" used for umlauts.
 \def\tocentry#1#2{\begingroup
-  \hyphenpenalty = 10000
-  \entry{#1}{#2}%
+  \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
+  \entry{\turnoffactive #1}{\turnoffactive #2}%
 \endgroup}
 
 % Space between chapter (or whatever) number and the title.
@@ -3036,8 +3293,6 @@ July\or August\or September\or October\or November\or December\fi
 \newbox\pushcharbox    \newbox\bullbox
 \newbox\equivbox       \newbox\errorbox
 
-\let\ptexequiv = \equiv
-
 %{\tentt
 %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
 %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
@@ -3048,12 +3303,11 @@ July\or August\or September\or October\or November\or December\fi
 %                                      depth .1ex\hfil}
 %}
 
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 \def\point{$\star$}
-
 \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
 \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
 \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-
 \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
 
 % Adapted from the TeXbook's \boxit.
@@ -3085,7 +3339,7 @@ July\or August\or September\or October\or November\or December\fi
 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
 \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
 \catcode `\%=14
-\catcode 43=12
+\catcode 43=12 % plus
 \catcode`\"=12
 \catcode`\==12
 \catcode`\|=12
@@ -3093,16 +3347,18 @@ July\or August\or September\or October\or November\or December\fi
 \catcode`\>=12
 \escapechar=`\\
 %
+\let\,=\ptexcomma
 \let\~=\ptextilde
 \let\{=\ptexlbrace
 \let\}=\ptexrbrace
 \let\.=\ptexdot
 \let\*=\ptexstar
 \let\dots=\ptexdots
+\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}
+\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}
 \def\@{@}%
 \let\bullet=\ptexbullet
-\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
-\let\L=\ptexL
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext
 %
 \let\Etex=\endgroup}
 
@@ -3161,50 +3417,50 @@ July\or August\or September\or October\or November\or December\fi
 \def\cbl{{\circle\char'012\hskip -6pt}}
 \def\cbr{{\hskip 6pt\circle\char'011}}
 \def\carttop{\hbox to \cartouter{\hskip\lskip
-       \ctl\leaders\hrule height\circthick\hfil\ctr
-       \hskip\rskip}}
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
 \def\cartbot{\hbox to \cartouter{\hskip\lskip
-       \cbl\leaders\hrule height\circthick\hfil\cbr
-       \hskip\rskip}}
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
 %
 \newskip\lskip\newskip\rskip
 
 \long\def\cartouche{%
 \begingroup
-       \lskip=\leftskip \rskip=\rightskip
-       \leftskip=0pt\rightskip=0pt %we want these *outside*.
-       \cartinner=\hsize \advance\cartinner by-\lskip
-                         \advance\cartinner by-\rskip
-       \cartouter=\hsize
-       \advance\cartouter by 18pt % allow for 3pt kerns on either
-%                                   side, and for 6pt waste from
-%                                   each corner char
-       \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-       % Flag to tell @lisp, etc., not to narrow margin.
-       \let\nonarrowing=\comment
-       \vbox\bgroup
-               \baselineskip=0pt\parskip=0pt\lineskip=0pt
-               \carttop
-               \hbox\bgroup
-                       \hskip\lskip
-                       \vrule\kern3pt
-                       \vbox\bgroup
-                               \hsize=\cartinner
-                               \kern3pt
-                               \begingroup
-                                       \baselineskip=\normbskip
-                                       \lineskip=\normlskip
-                                       \parskip=\normpskip
-                                       \vskip -\parskip
+        \lskip=\leftskip \rskip=\rightskip
+        \leftskip=0pt\rightskip=0pt %we want these *outside*.
+        \cartinner=\hsize \advance\cartinner by-\lskip
+                          \advance\cartinner by-\rskip
+        \cartouter=\hsize
+        \advance\cartouter by 18pt % allow for 3pt kerns on either
+%                                    side, and for 6pt waste from
+%                                    each corner char
+        \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+        % Flag to tell @lisp, etc., not to narrow margin.
+        \let\nonarrowing=\comment
+        \vbox\bgroup
+                \baselineskip=0pt\parskip=0pt\lineskip=0pt
+                \carttop
+                \hbox\bgroup
+                        \hskip\lskip
+                        \vrule\kern3pt
+                        \vbox\bgroup
+                                \hsize=\cartinner
+                                \kern3pt
+                                \begingroup
+                                        \baselineskip=\normbskip
+                                        \lineskip=\normlskip
+                                        \parskip=\normpskip
+                                        \vskip -\parskip
 \def\Ecartouche{%
-                               \endgroup
-                               \kern3pt
-                       \egroup
-                       \kern3pt\vrule
-                       \hskip\rskip
-               \egroup
-               \cartbot
-       \egroup
+                                \endgroup
+                                \kern3pt
+                        \egroup
+                        \kern3pt\vrule
+                        \hskip\rskip
+                \egroup
+                \cartbot
+        \egroup
 \endgroup
 }}
 
@@ -3267,8 +3523,7 @@ July\or August\or September\or October\or November\or December\fi
   \let\Esmalllisp = \nonfillfinish
   \let\Esmallexample = \nonfillfinish
   %
-  % Smaller interline space and fonts for small examples.
-  \setleading{10pt}%
+  % Smaller fonts for small examples.
   \indexfonts \tt
   \rawbackslash % make \ output the \ character from the current font (tt)
   \gobble
@@ -3796,6 +4051,7 @@ July\or August\or September\or October\or November\or December\fi
 
 \def\deftpx #1 {\errmessage{@deftpx in invalid context}}
 
+
 \message{cross reference,}
 % Define cross-reference macros
 \newwrite \auxfile
@@ -3803,6 +4059,11 @@ July\or August\or September\or October\or November\or December\fi
 \newif\ifhavexrefs  % True if xref values are known.
 \newif\ifwarnedxrefs  % True if we warned once that they aren't known.
 
+% @inforef is simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
 % \setref{foo} defines a cross-reference point named foo.
 
 \def\setref#1{%
@@ -3836,7 +4097,10 @@ July\or August\or September\or October\or November\or December\fi
   \setbox0=\hbox{\printednodename}%
   \ifdim \wd0 = 0pt
     % No printed node name was explicitly given.
-    \ifx\SETxref-automatic-section-title\relax %
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+      % Use the node name inside the square brackets.
+      \def\printednodename{\ignorespaces #1}%
+    \else
       % Use the actual chapter/section title appear inside
       % the square brackets.  Use the real section title if we have it.
       \ifdim \wd1>0pt%
@@ -3845,16 +4109,12 @@ July\or August\or September\or October\or November\or December\fi
       \else
         \ifhavexrefs
           % We know the real title if we have the xref values.
-          \def\printednodename{\refx{#1-title}}%
+          \def\printednodename{\refx{#1-title}{}}%
         \else
           % Otherwise just copy the Info node name.
           \def\printednodename{\ignorespaces #1}%
         \fi%
       \fi
-      \def\printednodename{#1-title}%
-    \else
-      % Use the node name inside the square brackets.
-      \def\printednodename{\ignorespaces #1}%
     \fi
   \fi
   %
@@ -4039,7 +4299,8 @@ July\or August\or September\or October\or November\or December\fi
 % The trailing space in the following definition for supereject is
 % vital for proper filling; pages come out unaligned when you do a
 % pagealignmacro call if that space before the closing brace is
-% removed.
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
 % @footnotestyle is meaningful for info output only..
@@ -4164,13 +4425,18 @@ July\or August\or September\or October\or November\or December\fi
 
 % Set some numeric style parameters, for 8.5 x 11 format.
 
-%\hsize = 6.5in
+\hsize = 6in
+\hoffset = .25in
 \newdimen\defaultparindent \defaultparindent = 15pt
 \parindent = \defaultparindent
-\parskip 18pt plus 1pt
-\setleading{15pt}
+\parskip 3pt plus 2pt minus 1pt
+\setleading{13.2pt}
 \advance\topskip by 1.2cm
 
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
 % Prevent underfull vbox error messages.
 \vbadness=10000
 
@@ -4193,30 +4459,28 @@ July\or August\or September\or October\or November\or December\fi
 
 % Use @smallbook to reset parameters for 7x9.5 format  (or else 7x9.25)
 \def\smallbook{
-
-% These values for secheadingskip and subsecheadingskip are
-% experiments.  RJC 7 Aug 1992
-\global\secheadingskip = 17pt plus 6pt minus 3pt
-\global\subsecheadingskip = 14pt plus 6pt minus 3pt
-
-\global\lispnarrowing = 0.3in
-\setleading{12pt}
-\advance\topskip by -1cm
-\global\parskip 3pt plus 1pt
-\global\hsize = 5in
-\global\vsize=7.5in
-\global\tolerance=700
-\global\hfuzz=1pt
-\global\contentsrightmargin=0pt
-\global\deftypemargin=0pt
-\global\defbodyindent=.5cm
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-
-\global\let\smalllisp=\smalllispx
-\global\let\smallexample=\smalllispx
-\global\def\Esmallexample{\Esmalllisp}
+  \global\chapheadingskip = 15pt plus 4pt minus 2pt
+  \global\secheadingskip = 12pt plus 3pt minus 2pt
+  \global\subsecheadingskip = 9pt plus 2pt minus 2pt
+  %
+  \global\lispnarrowing = 0.3in
+  \setleading{12pt}
+  \advance\topskip by -1cm
+  \global\parskip 2pt plus 1pt
+  \global\hsize = 5in
+  \global\vsize=7.5in
+  \global\tolerance=700
+  \global\hfuzz=1pt
+  \global\contentsrightmargin=0pt
+  \global\deftypemargin=0pt
+  \global\defbodyindent=.5cm
+  %
+  \global\pagewidth=\hsize
+  \global\pageheight=\vsize
+  %
+  \global\let\smalllisp=\smalllispx
+  \global\let\smallexample=\smalllispx
+  \global\def\Esmallexample{\Esmalllisp}
 }
 
 % Use @afourpaper to print on European A4 paper.
@@ -4239,12 +4503,19 @@ July\or August\or September\or October\or November\or December\fi
 \global\pageheight=\vsize
 }
 
+\bindingoffset=0pt
+\normaloffset=\hoffset
+\pagewidth=\hsize
+\pageheight=\vsize
+
 % Allow control of the text dimensions.  Parameters in order: textheight;
-% textwidth; \voffset; \hoffset (!); binding offset.  All require a dimension;
+% textwidth; voffset; hoffset; binding offset; topskip.
+% All require a dimension;
 % header is additional; added length extends the bottom of the page.
 
-\def\changepagesizes#1#2#3#4#5{
+\def\changepagesizes#1#2#3#4#5#6{
  \global\vsize= #1
+ \global\topskip= #6
  \advance\vsize by \topskip
  \global\voffset= #3
  \global\hsize= #2
@@ -4257,13 +4528,20 @@ July\or August\or September\or October\or November\or December\fi
  \global\normaloffset= #4
  \global\bindingoffset= #5}
 
-% This layout is compatible with Latex on A4 paper.
-
-\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
+% A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin
+% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
+\def\afourlatex
+        {\global\tolerance=700
+        \global\hfuzz=1pt
+        \setleading{12pt}
+        \global\parskip 15pt plus 1pt
+        \advance\baselineskip by 1.6pt
+        \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}
+        }
 
 % Use @afourwide to print on European A4 paper in wide format.
 \def\afourwide{\afourpaper
-\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}}
+\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}}
 
 % Define macros to output various characters with catcode for normal text.
 \catcode`\"=\other
@@ -4312,14 +4590,7 @@ July\or August\or September\or October\or November\or December\fi
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
 % Subroutine for the previous macro.
-\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-% \lvvmode is equivalent in function to \leavevmode.
-% Using \leavevmode runs into trouble when written out to
-% an index file due to the expansion of \leavevmode into ``\unhbox
-% \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
-% magic tricks with @.
-\def\lvvmode{\vbox to 0pt{}}
+\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
 
 \catcode`\|=\active
 \def|{{\tt \char '174}}
index 5f57840f98cfafe4e87ccd5f0f18074f7cd10c1d..5a9f10fd1c6e1e8c80c48385b0e7d6c9365e27dc 100644 (file)
@@ -586,8 +586,14 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
 
          /* If this is a simple command, tell execute_disk_command that it
             might be able to get away without forking and simply exec.
-            This means things like ( sleep 10 ) will only cause one fork. */
+            This means things like ( sleep 10 ) will only cause one fork.
+            If we're timing the command, however, we cannot do this
+            optimization. */
+#if 0
          if (user_subshell && command->type == cm_simple)
+#else
+         if (user_subshell && command->type == cm_simple && (command->flags & CMD_TIME_PIPELINE) == 0)
+#endif
            {
              command->flags |= CMD_NO_FORK;
              command->value.Simple->flags |= CMD_NO_FORK;
@@ -1068,7 +1074,8 @@ print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu)
 {
   int prec, lng, len;
   char *str, *s, ts[32];
-  int sum, sum_frac;
+  long sum;
+  int sum_frac;
   int sindex, ssize;
 
   len = strlen (format);
@@ -1716,15 +1723,16 @@ print_select_list (list, list_len, max_elem_len, indices_len)
 /* Print the elements of LIST, one per line, preceded by an index from 1 to
    LIST_LEN.  Then display PROMPT and wait for the user to enter a number.
    If the number is between 1 and LIST_LEN, return that selection.  If EOF
-   is read, return a null string.  If a blank line is entered, the loop is
-   executed again. */
+   is read, return a null string.  If a blank line is entered, or an invalid
+   number is entered, the loop is executed again. */
 static char *
 select_query (list, list_len, prompt)
      WORD_LIST *list;
      int list_len;
      char *prompt;
 {
-  int max_elem_len, indices_len, len, reply;
+  int max_elem_len, indices_len, len;
+  long reply;
   WORD_LIST *l;
   char *repl_string, *t;
 
@@ -1767,7 +1775,8 @@ select_query (list, list_len, prompt)
       repl_string = get_string_value ("REPLY");
       if (*repl_string == 0)
        continue;
-      reply = atoi (repl_string);
+      if (legal_number (repl_string, &reply) == 0)
+       continue;
       if (reply < 1 || reply > list_len)
        return "";
 
@@ -2138,7 +2147,7 @@ fix_assignment_words (words)
   if (words == 0)
     return;
 
-  b = builtin_address_internal (words->word->word);
+  b = builtin_address_internal (words->word->word, 0);
   if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0)
     return;
 
index b44cb76523ad0883aa17c82f8f5c265e45c2bd66..359e86e59c4046f637555593aa6242b8315e19d1 100644 (file)
--- a/externs.h
+++ b/externs.h
@@ -98,8 +98,8 @@ extern char *strerror __P((int));
 #endif
 
 #if !defined (HAVE_STRCASECMP)
-extern int strncasecmp __P((char *, char *, int));
-extern int strcasecmp __P((char *, char *));
+extern int strncasecmp __P((const char *, const char *, int));
+extern int strcasecmp __P((const char *, const char *));
 #endif /* HAVE_STRCASECMP */
 
 extern int dup2 __P((int, int));
diff --git a/flags.c b/flags.c
index 80561e50eafe4566d43929b9c9bd9897c3a1c582..02b466c0ad1e94e76e7f6c46e7f3713d06bf4d2c 100644 (file)
--- a/flags.c
+++ b/flags.c
@@ -133,8 +133,9 @@ int restricted = 0;
 #endif /* RESTRICTED_SHELL */
 
 /* Non-zero means that this shell is running in `privileged' mode.  This
-   mode is entered on startup if the real and effective uids or gids
-   differ. */
+   is required if the shell is to run setuid.  If the `-p' option is
+   not supplied at startup, and the real and effective uids or gids
+   differ, disable_priv_mode is called to relinquish setuid status. */
 int privileged_mode = 0;
 
 #if defined (BRACE_EXPANSION)
index eae99abf07643611b7f23c299fe57cf2695fbe25..5e454a2027eefe4b9a6693f33249b34ff6256327 100644 (file)
--- a/general.c
+++ b/general.c
@@ -844,8 +844,9 @@ polite_directory_format (name)
   l = home ? strlen (home) : 0;
   if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/'))
     {
-      strcpy (tdir + 1, name + l);
+      strncpy (tdir + 1, name + l, sizeof(tdir) - 2);
       tdir[0] = '~';
+      tdir[sizeof(tdir) - 1] = '\0';
       return (tdir);
     }
   else
diff --git a/jobs.c b/jobs.c
index bd10cd010aec5d343ec1b27ded22e545c73cd916..0218f3ff1767b7399ac9b4f62ba94e9dc2e18faf 100644 (file)
--- a/jobs.c
+++ b/jobs.c
@@ -1694,7 +1694,15 @@ wait_for (pid)
       if (interactive_shell && subshell_environment == 0)
        {
          if (WIFSIGNALED (child->status) || WIFSTOPPED (child->status))
-           set_tty_state ();
+           {
+             set_tty_state ();
+             /* If the foreground job was suspended with ^Z (SIGTSTP), and
+                the user has requested it, get a new window size. */
+             if (check_window_size && WIFSTOPPED (child->status) &&
+                   (WSTOPSIG (child->status) == SIGTSTP) &&
+                   job == current_job)
+               get_new_window_size (0);
+           }
          else
            get_tty_state ();
 
@@ -2318,6 +2326,13 @@ waitchld (wpid, block)
                     the signal to ourselves. */
                  SigHandler *temp_handler;
                  temp_handler = old_sigint_handler;
+                 /* Bogus.  If we've reset the signal handler as the result
+                    of a trap caught on SIGINT, then old_sigint_handler
+                    will point to trap_handler, which now knows nothing about
+                    SIGINT (if we reset the sighandler to the default).
+                    In this case, we have to fix things up.  What a crock. */
+                 if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0)
+                   temp_handler = trap_to_sighandler (SIGINT);
                  restore_sigint_handler ();
                  if (temp_handler == SIG_DFL)
                    termination_unwind_protect (SIGINT);
index 2a6bf631d0afa8f0679bf8556d1da916692a40cf..0a4f456db3e49cfe0c9cc05d09ab9c4b11e83a7b 100644 (file)
@@ -107,3 +107,7 @@ glob.o: $(BUILD_DIR)/config.h
 glob.o: $(topdir)/bashtypes.h $(topdir)/ansi_stdlib.h $(topdir)/bashansi.h
 glob.o: $(topdir)/posixstat.h $(topdir)/memalloc.h
 glob.o: fnmatch.h
+
+# Rules for deficient makes, like SunOS and Solaris
+fnmatch.o: fnmatch.c
+glob.o: glob.c
index 0842f929ca9215e1c1957b0bafb3f1726749cf2a..92e12afd778d14956b497e876e87bc83438daf9e 100644 (file)
@@ -91,8 +91,8 @@ stubmalloc: ${STUB_OBJS}
        ${AR} cr libmalloc.a ${STUB_OBJS}
        -test -n "$(RANLIB)" && $(RANLIB) libmalloc.a
 
-alloca.o:      $(ALLOCA_SOURCE)
-       $(CC) $(CCFLAGS) -c $(ALLOCA_SOURCE)
+alloca.o:      $(srcdir)/$(ALLOCA_SOURCE)
+       $(CC) $(CCFLAGS) -c $(srcdir)/$(ALLOCA_SOURCE)
        @- if test "$(ALLOCA_OBJECT)" != alloca.o ; then \
                mv $(ALLOCA_OBJECT) alloca.o >/dev/null 2>&1 ; \
        fi
@@ -103,12 +103,14 @@ mostlyclean clean:
 distclean realclean maintainer-clean: clean
        $(RM) Makefile
 
-malloc.o: malloc.c
-gmalloc.o: gmalloc.c
-
 alloca.o: $(BUILD_DIR)/config.h
 malloc.o: $(BUILD_DIR)/config.h $(topdir)/bashtypes.h getpagesize.h
 nmalloc.o: $(BUILD_DIR)/config.h $(topdir)/bashtypes.h getpagesize.h
 nmalloc2.o: $(BUILD_DIR)/config.h $(topdir)/bashtypes.h getpagesize.h
 xmalloc.o: $(BUILD_DIR)/config.h $(topdir)/ansi_stdlib.h
 gmalloc.o: $(BUILD_DIR)/config.h
+
+# Rules for deficient makes, like SunOS and Solaris
+stub.o: stub.c
+malloc.o: malloc.c
+gmalloc.o: gmalloc.c
index 90e3756a65aa56c1db5b8beacf99f13f2134463a..01ff0cb4afc47d43ac6b1f5f1aa18d400702c976 100644 (file)
@@ -190,6 +190,7 @@ rltty.o: readline.h keymaps.h chardefs.h tilde.h
 search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
 search.o: readline.h keymaps.h chardefs.h tilde.h
 search.o: ansi_stdlib.h history.h
+shell.o: ${BUILD_DIR}/config.h
 signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
 signals.o: readline.h keymaps.h chardefs.h tilde.h
 signals.o: history.h
@@ -212,3 +213,32 @@ vi_mode.o: readline.h keymaps.h chardefs.h tilde.h
 vi_mode.o: history.h ansi_stdlib.h
 xmalloc.o: ${BUILD_DIR}/config.h
 xmalloc.o: ansi_stdlib.h
+
+# Rules for deficient makes, like SunOS and Solaris
+bind.o: bind.c
+callback.o: callback.c
+complete.o: complete.c
+display.o: display.c
+funmap.o: funmap.c
+histexpand.o: histexpand.c
+histfile.o: histfile.c
+history.o: history.c
+histsearch.o: histsearch.c
+input.o: input.c
+isearch.o: isearch.c
+keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c
+kill.o: kill.c
+macro.o: macro.c
+nls.o: nls.c
+parens.o: parens.c
+readline.o: readline.c
+rltty.o: rltty.c
+search.o: search.c
+shell.o: shell.c
+signals.o: signals.c
+terminal.o: terminal.c
+tilde.o: tilde.c
+undo.o: undo.c
+util.o: util.c
+vi_mode.o: vi_mode.c
+xmalloc.o: xmalloc.c
index b17c63e259466023827ed2b7036cfa34628a5070..552cb6c63802aa24719e1aa75a4083df32cf58ff 100644 (file)
@@ -796,7 +796,9 @@ make_quoted_replacement (match, mtype, qc)
       /* If there is a single match, see if we need to quote it.
          This also checks whether the common prefix of several
         matches needs to be quoted. */
-      should_quote = rl_strpbrk (match, rl_filename_quote_characters) != 0;
+      should_quote = rl_filename_quote_characters
+                       ? (rl_strpbrk (match, rl_filename_quote_characters) != 0)
+                       : 0;
 
       do_replace = should_quote ? mtype : NO_MATCH;
       /* Quote the replacement, since we found an embedded
index c283f9a1bd95cbe0c05b79851fb058712f8aa7ab..609d827f4b4f5280e714c5159a16820181e5a389 100644 (file)
@@ -1482,7 +1482,7 @@ cr ()
 void
 _rl_redisplay_after_sigwinch ()
 {
-  char *t, *oldp;
+  char *t, *oldp, *oldl, *oldlprefix;
 
   /* Clear the current line and put the cursor at column 0.  Make sure
      the right thing happens if we have wrapped to a new screen line. */
@@ -1508,9 +1508,14 @@ _rl_redisplay_after_sigwinch ()
   if (t)
     {
       oldp = rl_display_prompt;
+      oldl = local_prompt;
+      oldlprefix = local_prompt_prefix;
       rl_display_prompt = ++t;
+      local_prompt = local_prompt_prefix = (char *)NULL;
       rl_forced_update_display ();
       rl_display_prompt = oldp;
+      local_prompt = oldl;
+      local_prompt_prefix = oldlprefix;
     }
   else
     rl_forced_update_display ();
index c3de134a969469ff6a3e437bba124eac37124741..9f96f1cdd7a09ab0d68a0ccc7a667b52645b05a3 100644 (file)
@@ -246,7 +246,7 @@ history_truncate_file (fname, lines)
 
   /* Write only if there are more lines in the file than we want to
      truncate to. */
-  if (i && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0666)) != -1))
+  if (i && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1))
     {
       write (file, buffer + i, finfo.st_size - i);
       close (file);
@@ -275,7 +275,7 @@ history_do_write (filename, nelements, overwrite)
   mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY;
   output = history_filename (filename);
 
-  if ((file = open (output, mode, 0666)) == -1)
+  if ((file = open (output, mode, 0600)) == -1)
     {
       FREE (output);
       return (errno);
index 9639a63fd299000e466340bf561030d02372534f..ce2e58ba906180723be50c4c4e44083a2dce29b9 100644 (file)
@@ -262,7 +262,7 @@ rl_search_history (direction, invoking_key)
          break;
        }
 
-      if (c >= 0 && (CTRL_CHAR (c) || META_CHAR (c) || c == RUBOUT))
+      if (c >= 0 && (CTRL_CHAR (c) || META_CHAR (c) || c == RUBOUT) && c != CTRL ('g'))
        {
          rl_execute_next (c);
          break;
index d6c1a5cce1e1fe44be79b3ecf4c507519a242963..99ec055c58de6e7b4e46095b913046c13302abab 100644 (file)
@@ -255,7 +255,7 @@ extern int rl_pending_input;
 /* 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;
+extern int rl_dispatching;
 
 /* The name of the terminal to use. */
 extern char *rl_terminal_name;
index 1d38d9d461f349b6f9f211d9c5032cba426cec0f..fe263a2605c761a0103b64ea96b8eef0e4dbbf9f 100644 (file)
@@ -189,7 +189,7 @@ tilde_expand (string)
   if (result = strchr (string, '~'))
     result = xmalloc (result_size = (strlen (string) + 16));
   else
-    result = xmalloc (result_size = strlen (string));
+    result = xmalloc (result_size = (strlen (string) + 1));
 
   /* Scan through STRING expanding tildes as we come to them. */
   while (1)
index c1510369c6fdf608e763f8890ffa49efde3f895c..02138fc5d3007ced2eb8aebacf03fb1cd6b261d6 100644 (file)
@@ -98,3 +98,6 @@ mostlyclean: clean
 
 tilde.o: tilde.h $(topdir)/ansi_stdlib.h
 tilde.o: $(BUILD_DIR)/config.h
+
+# Rules for deficient makes, like SunOS and Solaris
+tilde.o: tilde.c
index 1d38d9d461f349b6f9f211d9c5032cba426cec0f..fe263a2605c761a0103b64ea96b8eef0e4dbbf9f 100644 (file)
@@ -189,7 +189,7 @@ tilde_expand (string)
   if (result = strchr (string, '~'))
     result = xmalloc (result_size = (strlen (string) + 16));
   else
-    result = xmalloc (result_size = strlen (string));
+    result = xmalloc (result_size = (strlen (string) + 1));
 
   /* Scan through STRING expanding tildes as we come to them. */
   while (1)
index 7653f1fe04c838bc6cd1454466b33870b54392d9..15738842d510db1da99c1d66c0ffeb96602a5e2b 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -126,7 +126,15 @@ set_locale_var (var, value)
   else if (var[3] == 'A')                      /* LC_ALL */
     {
       FREE (lc_all);
-      lc_all = value ? savestring (value) : savestring (default_locale);
+      if (value)
+       lc_all = savestring (value);
+      else if (default_locale)
+       lc_all = savestring (default_locale);
+      else
+       {
+         lc_all = xmalloc (1);
+         lc_all[0] = '\0';
+       }
 #if defined (HAVE_SETLOCALE)
       return (setlocale (LC_ALL, value) != 0);
 #else
index 8d3f833d54b89a2bd8cbfb42396003497b045992..d90e52f38095a2890897884a78667b3745e114f4 100644 (file)
@@ -150,7 +150,7 @@ add_mail_file (file, msg)
   int i;
 
   filename = full_pathname (file);
-  i = find_mail_file (file);
+  i = find_mail_file (filename);
   if (i >= 0)
     {
       if (stat (filename, &finfo) == 0)
diff --git a/oslib.c b/oslib.c
index b17a7311488999529ff55506b290bbd0c2c365c1..bc49fff319db49551d75ca863423fb3429d23f58 100644 (file)
--- a/oslib.c
+++ b/oslib.c
@@ -112,7 +112,7 @@ strrchr (string, c)
    doesn't matter. */
 int
 strncasecmp (string1, string2, count)
-     char *string1, *string2;
+     const char *string1, *string2;
      int count;
 {
   register char *s1, *s2;
@@ -120,8 +120,8 @@ strncasecmp (string1, string2, count)
 
   if (count > 0)
     {
-      s1 = string1;
-      s2 = string2;
+      s1 = (char *)string1;
+      s2 = (char *)string2;
       do
        {
          if ((r = to_lower (*s1) - to_lower (*s2)) != 0)
@@ -138,13 +138,13 @@ strncasecmp (string1, string2, count)
 /* strcmp (), but caseless. */
 int
 strcasecmp (string1, string2)
-     char *string1, *string2;
+     const char *string1, *string2;
 {
   register char *s1, *s2;
   register int r;
 
-  s1 = string1;
-  s2 = string2;
+  s1 = (char *)string1;
+  s2 = (char *)string2;
 
   while ((r = to_lower (*s1) - to_lower (*s2)) == 0)
     {
diff --git a/parse.y b/parse.y
index f0e76595b9d0e6e0399198631367393ca99203d1..a8d478055b64432c930ae45fc9a903d4b89e2721 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -2529,7 +2529,7 @@ read_token_word (character)
 
 #if defined (ARRAY_VARS)
       /* Identify possible compound array variable assignment. */
-      else if (character == '=')
+      else if (character == '=' && token_index > 0)
        {
          peek_char = shell_getc (1);
          if (peek_char == '(')         /* ) */
@@ -3077,6 +3077,7 @@ decode_prompt_string (string)
              {
                /* Use the value of PWD because it is much more efficient. */
                char t_string[PATH_MAX];
+               int tlen;
 
                temp = get_string_value ("PWD");
 
@@ -3085,11 +3086,17 @@ decode_prompt_string (string)
                    if (getcwd (t_string, sizeof(t_string)) == 0)
                      {
                        t_string[0] = '.';
-                       t_string[1] = '\0';
+                       tlen = 1;
                      }
+                   else
+                     tlen = strlen (t_string);
                  }
                else
-                 strcpy (t_string, temp);
+                 {
+                   tlen = sizeof (t_string) - 1;
+                   strncpy (t_string, temp, tlen);
+                 }
+               t_string[tlen] = '\0';
 
                if (c == 'W')
                  {
@@ -3098,6 +3105,8 @@ decode_prompt_string (string)
                      strcpy (t_string, t + 1);
                  }
                else
+                 /* polite_directory_format is guaranteed to return a string
+                    no longer than PATH_MAX - 1 characters. */
                  strcpy (t_string, polite_directory_format (t_string));
 
                /* If we're going to be expanding the prompt string later,
index 642d3cd9d811d9990824727ad804e80e84197a6f..422d6d9d727a248c257ccb1c62641df577c088d1 100644 (file)
@@ -276,18 +276,22 @@ xtrace_print_word_list (list)
      WORD_LIST *list;
 {
   WORD_LIST *w;
-  char *t;
+  char *t, *x;
 
   fprintf (stderr, "%s", indirection_level_string ());
   for (w = list; w; w = w->next)
     {
       t = w->word->word;
       if (t == 0 || *t == '\0')
-        fprintf (stderr, "''%s", w->next ? " " : "");
+       fprintf (stderr, "''%s", w->next ? " " : "");
       else if (contains_shell_metas (t))
-        fprintf (stderr, "'%s'%s", t, w->next ? " " : "");
+       {
+         x = single_quote (t);
+         fprintf (stderr, "%s%s", x, w->next ? " " : "");
+         free (x);
+       }
       else
-        fprintf (stderr, "%s%s", t, w->next ? " " : "");
+       fprintf (stderr, "%s%s", t, w->next ? " " : "");
     }
   fprintf (stderr, "\n");
 }
diff --git a/shell.c b/shell.c
index 1ec100c8fd40c05ae80333be3f48a533af8fbb8a..4870f80d0f1c0586941790d159a06174b102b1af 100644 (file)
--- a/shell.c
+++ b/shell.c
@@ -248,7 +248,7 @@ main (argc, argv, env)
      char **argv, **env;
 {
   register int i;
-  int code;
+  int code, saverst;
   volatile int locally_skip_execution;
   volatile int arg_index, top_level_arg_index;
 
@@ -459,6 +459,13 @@ main (argc, argv, env)
       interactive = 1;
     }
 
+#if defined (RESTRICTED_SHELL)
+  /* If the `-r' option is supplied at invocation, make sure that the shell
+     is not in restricted mode when running the startup files. */
+    saverst = restricted;
+    restricted = 0;
+#endif
+
   if (locally_skip_execution == 0 && running_setuid == 0)
     run_startup_files ();
 
@@ -473,7 +480,10 @@ main (argc, argv, env)
     }
 
 #if defined (RESTRICTED_SHELL)
-  /* Turn on the restrictions after parsing the startup files. */
+  /* Turn on the restrictions after parsing the startup files.  This
+     means that `bash -r' or `set -r' invoked from a startup file will
+     turn on the restrictions after the startup files are executed. */
+  restricted = saverst || restricted;
   maybe_make_restricted (shell_name);
 #endif /* RESTRICTED_SHELL */
 
diff --git a/sig.c b/sig.c
index 025487fde3ee5e5b302698ba53c9bc1f94d84bd5..de10fff093e393d213e0edc1e0d7e6eec8309ee3 100644 (file)
--- a/sig.c
+++ b/sig.c
@@ -75,9 +75,9 @@ initialize_signals ()
 {
   initialize_shell_signals ();
   initialize_job_signals ();
-#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
+#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
   initialize_siglist ();
-#endif
+#endif /* !HAVE_SYS_SIGLIST && !HAVE_UNDER_SYS_SIGLIST && !HAVE_STRSIGNAL */
 }
 
 void
@@ -229,8 +229,10 @@ initialize_terminating_signals ()
          sigaction (XSIG (i), &oact, &act);
          set_signal_ignored (XSIG (i));
         }
+#if defined (SIGPROF)
       if (XSIG (i) == SIGPROF && XHANDLER (i) != SIG_DFL && XHANDLER (i) != SIG_IGN)
         sigaction (XSIG (i), &oact, (struct sigaction *)NULL);
+#endif /* SIGPROF */
     }
 
 #else /* !HAVE_POSIX_SIGNALS */
diff --git a/sig.h b/sig.h
index b878040d5b9ac7e45c4dd4d646e847e10827ec3f..ab72a923a10de57b602b7dfaa00f1fe9aa42a87b 100644 (file)
--- a/sig.h
+++ b/sig.h
@@ -118,5 +118,7 @@ extern void jump_to_top_level __P((int));
 
 /* Functions defined in trap.c. */
 extern SigHandler *set_sigint_handler __P((void));
+extern SigHandler *trap_to_sighandler __P((int));
+extern sighandler trap_handler __P((int));
 
 #endif /* _SIG_H_ */
index 6d6a93df9d41e0df3a3ea4d77e52e46e680fed14..0206f57f544dd22703221d1897aec8dae91c3280 100644 (file)
--- a/siglist.c
+++ b/siglist.c
@@ -20,7 +20,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include "config.h"
 
-#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
+#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
 
 #include <stdio.h>
 #include "bashtypes.h"
@@ -225,4 +225,4 @@ initialize_siglist ()
        }
     }
 }
-#endif /* !HAVE_SYS_SIGLIST && !HAVE_STRSIGNAL */
+#endif /* !HAVE_SYS_SIGLIST && !HAVE_UNDER_SYS_SIGLIST && !HAVE_STRSIGNAL */
diff --git a/subst.c b/subst.c
index 72d2314e1f55aa82580ff67af8a17a913b40fd46..a2640f7f57dd890e5ffd4fb4a050b0d4b058eb85 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -3506,7 +3506,9 @@ parameter_brace_expand_length (name)
 /* Verify and limit the start and end of the desired substring.  If
    VTYPE == 0, a regular shell variable is being used; if it is 1,
    then the positional paramters are being used; if it is 2, then
-   VALUE is really a pointer to an array variable that should be used. */
+   VALUE is really a pointer to an array variable that should be used.
+   Return value is 1 if both values were OK, 0 if there was a problem
+   with an invalid expression, or -1 if the values were out of range. */
 static int
 verify_substring_values (value, substr, vtype, e1p, e2p)
      char *value, *substr;
@@ -3548,7 +3550,7 @@ verify_substring_values (value, substr, vtype, e1p, e2p)
     *e1p += len;
 
   if (*e1p >= len || *e1p < 0)
-    return (0);
+    return (-1);
 
   if (t)
     {
@@ -3672,7 +3674,7 @@ parameter_brace_substring (varname, value, substr, quoted)
      char *varname, *value, *substr;
      int quoted;
 {
-  int e1, e2, vtype;
+  int e1, e2, vtype, r;
   char *temp, *val;
   SHELL_VAR *v;
 
@@ -3685,11 +3687,12 @@ parameter_brace_substring (varname, value, substr, quoted)
   if (vtype == -1)
     return ((char *)NULL);
 
-  if (verify_substring_values (val, substr, vtype, &e1, &e2) == 0)
+  r = verify_substring_values (val, substr, vtype, &e1, &e2);
+  if (r <= 0)
     {
       if (val && vtype == VT_ARRAYMEMBER)
        free (val);
-      return (&expand_param_error);
+      return ((r == 0) ? &expand_param_error : (char *)NULL);
     }
 
   switch (vtype)
@@ -4506,11 +4509,14 @@ expand_word_internal (word, quoted, contains_dollar_at, expanded_something)
                 extract the expression and pass it to the evaluator. */
              if (temp && *temp == '(')
                {
+                 char *temp2;
                  temp1 = temp + 1;
-                 t_index = strlen (temp1) - 1;
+                 temp2 = savestring (temp1);
+                 t_index = strlen (temp2) - 1;
 
-                 if (temp1[t_index] != ')')
+                 if (temp2[t_index] != ')')
                    {
+                     free (temp2);
 #if 0
                      report_error ("%s: bad arithmetic substitution", temp);
                      free (temp);
@@ -4523,10 +4529,11 @@ expand_word_internal (word, quoted, contains_dollar_at, expanded_something)
                    }
 
                  /* Cut off ending `)' */
-                 temp1[t_index] = '\0';
+                 temp2[t_index] = '\0';
 
                  /* Expand variables found inside the expression. */
-                 temp1 = maybe_expand_string (temp1, Q_DOUBLE_QUOTES, expand_string);
+                 temp1 = maybe_expand_string (temp2, Q_DOUBLE_QUOTES, expand_string);
+                 free (temp2);
 
                  /* No error messages. */
                  this_command_name = (char *)NULL;
index 69e6169fa7778ae26f754dec4427b3f002aa988b..698f742b38aff171594936685e5dde1bfa79eeb2 100755 (executable)
@@ -206,7 +206,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # Japanese Language versions have a version number like `4.1.3-JL'.
        echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
        exit 0 ;;
-    sun3*:SunOS:*:*)
+    sun3*:SunOS:*:*|sun:SunOS:*:*)
        echo m68k-sun-sunos${UNAME_RELEASE}
        exit 0 ;;
     aushp:SunOS:*:*)
@@ -372,12 +372,15 @@ EOF
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
        echo m68k-hp-bsd4.4
        exit 0 ;;
-    9000/[3478]??:HP-UX:*:*)
+    9000/[34678]??:HP-UX:*:*)
        case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
-           9000/8?? )            HP_ARCH=hppa1.0 ;;
+           9000/31? )          HP_ARCH=m68000 ;;
+           9000/[34]?? )       HP_ARCH=m68k ;;
+           9000/78? | 9000/80[24] | 9000/8[67]1 | 9000/8[78]9 | 9000/893 )
+                               HP_ARCH=hppa2.0 ;;
+           9000/7?? | 9000/8?[13679] | 9000/892 )
+                               HP_ARCH=hppa1.1 ;;
+           9000/[68]?? )       HP_ARCH=hppa1.0 ;;
        esac
        HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
diff --git a/test.c b/test.c
index 4b7c82955819cbb5903719e0912c32dbe042abbb..ceb98c7b9a3db1bef21c3bd32b5b5a6950c5cdce 100644 (file)
--- a/test.c
+++ b/test.c
 #  include <unistd.h>
 #endif
 
+#include <errno.h>
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
 #if !defined (_POSIX_VERSION)
 #  include <sys/file.h>
 #endif /* !_POSIX_VERSION */
 #  define STRLEN(s) ((s)[0] ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0)
 #endif
 
-#include <errno.h>
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
 #if !defined (STREQ)
 #  define STREQ(a, b) ((a)[0] == (b)[0] && strcmp (a, b) == 0)
 #endif /* !STREQ */
index e142fdbc63a66c1cbaae51f51bb28103d0c7c6f4..7367458958dcf4dfd6e544ddf7023209e5c56a7e 100644 (file)
@@ -46,7 +46,7 @@ declare -a DIRSTACK='()'
 declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")'
 declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")'
 declare -ar c='()'
-declare -a d='([1]="test test" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")'
+declare -a d='([1]="test test")'
 declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")'
 ./array.tests: unset: ps1: not an array variable
 ./array.tests: declare: c: cannot destroy array variables in this way
@@ -56,7 +56,7 @@ declare -a DIRSTACK='()'
 declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")'
 declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")'
 declare -ar c='()'
-declare -a d='([1]="test test" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")'
+declare -a d='([1]="test test")'
 declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")'
 declare -a rv='([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays")'
 abde
diff --git a/trap.c b/trap.c
index ac4d6eb00cd2a2aca03020c82ce80d9eb647f518..ab59ad784b078ef1843f0e64b216b13372c5b7f9 100644 (file)
--- a/trap.c
+++ b/trap.c
 
 #include <stdio.h>
 
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
 #include "bashtypes.h"
 #include "trap.h"
 
 #include "bashansi.h"
 
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
 #include "shell.h"
 #include "signames.h"
 #include "builtins/common.h"
@@ -151,9 +151,11 @@ decode_signal (string)
   if (legal_number (string, &sig))
     return ((sig >= 0 && sig <= NSIG) ? (int)sig : NO_SIG);
 
+  /* A leading `SIG' may be omitted. */
   for (sig = 0; sig <= NSIG; sig++)
     if (strcasecmp (string, signal_names[sig]) == 0 ||
-       strcasecmp (string, &(signal_names[sig])[3]) == 0)
+       (STREQN (signal_names[sig], "SIG", 3) &&
+         strcasecmp (string, &(signal_names[sig])[3]) == 0))
       return ((int)sig);
 
   return (NO_SIG);
@@ -300,6 +302,20 @@ set_sigint_handler ()
     return (set_signal_handler (SIGINT, termination_unwind_protect));
 }
 
+/* Return the correct handler for signal SIG according to the values in
+   sigmodes[SIG]. */
+SigHandler *
+trap_to_sighandler (sig)
+     int sig;
+{
+  if (sigmodes[sig] & (SIG_IGNORED|SIG_HARD_IGNORE))
+    return (SIG_IGN);
+  else if (sigmodes[sig] & SIG_TRAPPED)
+    return (trap_handler);
+  else
+    return (SIG_DFL);
+}
+
 /* Set SIG to call STRING as a command. */
 void
 set_signal (sig, string)
index fad37af519e8b888fafa0aa1d68fa3fdbdab8279..212724e911a1f68e5235d345fc109c541c127c04 100644 (file)
@@ -907,7 +907,11 @@ static int
 brand ()
 {
   rseed = rseed * 1103515245 + 12345;
+#if 0
   return ((unsigned int)(rseed / 65536) % 32768);
+#else
+  return ((unsigned int)(rseed % 32768));
+#endif
 }
 
 /* Set the random number generator seed to SEED. */
@@ -916,6 +920,7 @@ sbrand (seed)
      int seed;
 {
   rseed = seed;
+  last_random_value = 0;
 }
 
 static SHELL_VAR *
@@ -936,7 +941,7 @@ get_random (var)
 
   /* Reset for command and process substitution. */
   if (subshell_environment)
-    sbrand ((int)(getpid() + NOW));
+    sbrand (rseed + (int)(getpid() + NOW));
 
   do
     rv = brand ();
@@ -1462,6 +1467,10 @@ assign_array_from_string (name, value)
     }
   else if (array_p (var) == 0)
     var = convert_var_to_array (var);
+#if 0
+  else
+    empty_array (array_cell (var));
+#endif
 
   return (assign_array_var_from_string (var, value));
 }
@@ -1509,6 +1518,13 @@ assign_array_var_from_string (var, value)
   else
     nlist = expand_string (value, 0);
 
+#if 1
+  /* Now that we are ready to assign values to the array, kill the existing
+     value. */
+  if (a)
+    empty_array (a);
+#endif
+
   for (last_ind = 0, list = nlist; list; list = list->next)
     {
       w = list->word->word;
index e230620ad32e63d7cbae6f8f40e0796dcf38656d..a5dac9f4bbb640ddcd84b7cb1e67607483876d1c 100644 (file)
--- a/version.c
+++ b/version.c
@@ -63,5 +63,5 @@ show_shell_version (extended)
 {
   printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
   if (extended)
-    printf ("Copyright 1996 Free Software Foundation, Inc.\n");
+    printf ("Copyright 1997 Free Software Foundation, Inc.\n");
 }
diff --git a/y.tab.c b/y.tab.c
index ad707d7f9fbb6259e393b07ad8df00bbfca94769..6c66986d838a66d52f78d8bb57dd8fb1808eacbe 100644 (file)
--- a/y.tab.c
+++ b/y.tab.c
@@ -1,5 +1,5 @@
 
-/*  A Bison parser, made from ./parse.y
+/*  A Bison parser, made from /usr/homes/chet/src/bash/bash-2.01.1/parse.y
  by  GNU Bison version 1.25
   */
 
@@ -39,7 +39,7 @@
 #define        GREATER_BAR     289
 #define        yacc_EOF        290
 
-#line 21 "./parse.y"
+#line 21 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 
 #include "config.h"
 
@@ -189,7 +189,7 @@ static int function_bstart;
 
 static REDIRECTEE redir;
 
-#line 171 "./parse.y"
+#line 171 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 typedef union {
   WORD_DESC *word;             /* the word that we read. */
   int number;                  /* the number that we read. */
@@ -1071,7 +1071,7 @@ yyreduce:
   switch (yyn) {
 
 case 1:
-#line 215 "./parse.y"
+#line 215 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          /* Case of regular command.  Discard the error
                             safety net,and return the command just parsed. */
@@ -1082,7 +1082,7 @@ case 1:
                        ;
     break;}
 case 2:
-#line 224 "./parse.y"
+#line 224 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          /* Case of regular command, but not a very
                             interesting one.  Return a NULL command. */
@@ -1091,7 +1091,7 @@ case 2:
                        ;
     break;}
 case 3:
-#line 231 "./parse.y"
+#line 231 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          /* Error during parsing.  Return NULL command. */
                          global_command = (COMMAND *)NULL;
@@ -1108,7 +1108,7 @@ case 3:
                        ;
     break;}
 case 4:
-#line 246 "./parse.y"
+#line 246 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          /* Case of EOF seen by itself.  Do ignoreeof or
                             not. */
@@ -1118,57 +1118,57 @@ case 4:
                        ;
     break;}
 case 5:
-#line 256 "./parse.y"
+#line 256 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.word_list = make_word_list (yyvsp[0].word, (WORD_LIST *)NULL); ;
     break;}
 case 6:
-#line 258 "./parse.y"
+#line 258 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.word_list = make_word_list (yyvsp[0].word, yyvsp[-1].word_list); ;
     break;}
 case 7:
-#line 262 "./parse.y"
+#line 262 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (1, r_output_direction, redir);
                        ;
     break;}
 case 8:
-#line 267 "./parse.y"
+#line 267 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (0, r_input_direction, redir);
                        ;
     break;}
 case 9:
-#line 272 "./parse.y"
+#line 272 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_output_direction, redir);
                        ;
     break;}
 case 10:
-#line 277 "./parse.y"
+#line 277 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_input_direction, redir);
                        ;
     break;}
 case 11:
-#line 282 "./parse.y"
+#line 282 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (1, r_appending_to, redir);
                        ;
     break;}
 case 12:
-#line 287 "./parse.y"
+#line 287 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_appending_to, redir);
                        ;
     break;}
 case 13:
-#line 292 "./parse.y"
+#line 292 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (0, r_reading_until, redir);
@@ -1176,7 +1176,7 @@ case 13:
                        ;
     break;}
 case 14:
-#line 298 "./parse.y"
+#line 298 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_reading_until, redir);
@@ -1184,63 +1184,63 @@ case 14:
                        ;
     break;}
 case 15:
-#line 304 "./parse.y"
+#line 304 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = yyvsp[0].number;
                          yyval.redirect = make_redirection (0, r_duplicating_input, redir);
                        ;
     break;}
 case 16:
-#line 309 "./parse.y"
+#line 309 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = yyvsp[0].number;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_input, redir);
                        ;
     break;}
 case 17:
-#line 314 "./parse.y"
+#line 314 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = yyvsp[0].number;
                          yyval.redirect = make_redirection (1, r_duplicating_output, redir);
                        ;
     break;}
 case 18:
-#line 319 "./parse.y"
+#line 319 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = yyvsp[0].number;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_output, redir);
                        ;
     break;}
 case 19:
-#line 324 "./parse.y"
+#line 324 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (0, r_duplicating_input_word, redir);
                        ;
     break;}
 case 20:
-#line 329 "./parse.y"
+#line 329 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_input_word, redir);
                        ;
     break;}
 case 21:
-#line 334 "./parse.y"
+#line 334 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (1, r_duplicating_output_word, redir);
                        ;
     break;}
 case 22:
-#line 339 "./parse.y"
+#line 339 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_output_word, redir);
                        ;
     break;}
 case 23:
-#line 344 "./parse.y"
+#line 344 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection
@@ -1249,7 +1249,7 @@ case 23:
                        ;
     break;}
 case 24:
-#line 351 "./parse.y"
+#line 351 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection
@@ -1258,88 +1258,88 @@ case 24:
                        ;
     break;}
 case 25:
-#line 358 "./parse.y"
+#line 358 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = 0L;
                          yyval.redirect = make_redirection (1, r_close_this, redir);
                        ;
     break;}
 case 26:
-#line 363 "./parse.y"
+#line 363 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = 0L;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_close_this, redir);
                        ;
     break;}
 case 27:
-#line 368 "./parse.y"
+#line 368 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = 0L;
                          yyval.redirect = make_redirection (0, r_close_this, redir);
                        ;
     break;}
 case 28:
-#line 373 "./parse.y"
+#line 373 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.dest = 0L;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_close_this, redir);
                        ;
     break;}
 case 29:
-#line 378 "./parse.y"
+#line 378 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (1, r_err_and_out, redir);
                        ;
     break;}
 case 30:
-#line 383 "./parse.y"
+#line 383 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_input_output, redir);
                        ;
     break;}
 case 31:
-#line 388 "./parse.y"
+#line 388 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (0, r_input_output, redir);
                        ;
     break;}
 case 32:
-#line 393 "./parse.y"
+#line 393 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (1, r_output_force, redir);
                        ;
     break;}
 case 33:
-#line 398 "./parse.y"
+#line 398 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          redir.filename = yyvsp[0].word;
                          yyval.redirect = make_redirection (yyvsp[-2].number, r_output_force, redir);
                        ;
     break;}
 case 34:
-#line 405 "./parse.y"
+#line 405 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.element.word = yyvsp[0].word; yyval.element.redirect = 0; ;
     break;}
 case 35:
-#line 407 "./parse.y"
+#line 407 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.element.word = yyvsp[0].word; yyval.element.redirect = 0; ;
     break;}
 case 36:
-#line 409 "./parse.y"
+#line 409 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.element.redirect = yyvsp[0].redirect; yyval.element.word = 0; ;
     break;}
 case 37:
-#line 413 "./parse.y"
+#line 413 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.redirect = yyvsp[0].redirect;
                        ;
     break;}
 case 38:
-#line 417 "./parse.y"
+#line 417 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          register REDIRECT *t;
 
@@ -1350,23 +1350,23 @@ case 38:
                        ;
     break;}
 case 39:
-#line 428 "./parse.y"
+#line 428 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_simple_command (yyvsp[0].element, (COMMAND *)NULL); ;
     break;}
 case 40:
-#line 430 "./parse.y"
+#line 430 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_simple_command (yyvsp[0].element, yyvsp[-1].command); ;
     break;}
 case 41:
-#line 434 "./parse.y"
+#line 434 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = clean_simple_command (yyvsp[0].command); ;
     break;}
 case 42:
-#line 436 "./parse.y"
+#line 436 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 43:
-#line 438 "./parse.y"
+#line 438 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          COMMAND *tc;
 
@@ -1395,191 +1395,191 @@ case 43:
                        ;
     break;}
 case 44:
-#line 467 "./parse.y"
+#line 467 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 45:
-#line 469 "./parse.y"
+#line 469 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 46:
-#line 471 "./parse.y"
+#line 471 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_while_command (yyvsp[-3].command, yyvsp[-1].command); ;
     break;}
 case 47:
-#line 473 "./parse.y"
+#line 473 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_until_command (yyvsp[-3].command, yyvsp[-1].command); ;
     break;}
 case 48:
-#line 475 "./parse.y"
+#line 475 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 49:
-#line 477 "./parse.y"
+#line 477 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 50:
-#line 479 "./parse.y"
+#line 479 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 51:
-#line 481 "./parse.y"
+#line 481 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 52:
-#line 483 "./parse.y"
+#line 483 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 53:
-#line 487 "./parse.y"
+#line 487 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-4].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command); ;
     break;}
 case 54:
-#line 489 "./parse.y"
+#line 489 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-4].word, add_string_to_list ("$@", (WORD_LIST *)NULL), yyvsp[-1].command); ;
     break;}
 case 55:
-#line 491 "./parse.y"
+#line 491 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-5].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command); ;
     break;}
 case 56:
-#line 493 "./parse.y"
+#line 493 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-5].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command); ;
     break;}
 case 57:
-#line 495 "./parse.y"
+#line 495 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-8].word, REVERSE_LIST (yyvsp[-5].word_list, WORD_LIST *), yyvsp[-1].command); ;
     break;}
 case 58:
-#line 497 "./parse.y"
+#line 497 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_for_command (yyvsp[-8].word, REVERSE_LIST (yyvsp[-5].word_list, WORD_LIST *), yyvsp[-1].command); ;
     break;}
 case 59:
-#line 501 "./parse.y"
+#line 501 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-4].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command);
                        ;
     break;}
 case 60:
-#line 505 "./parse.y"
+#line 505 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-4].word, add_string_to_list ("$@", (WORD_LIST *)NULL), yyvsp[-1].command);
                        ;
     break;}
 case 61:
-#line 509 "./parse.y"
+#line 509 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-5].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command);
                        ;
     break;}
 case 62:
-#line 513 "./parse.y"
+#line 513 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-5].word, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), yyvsp[-1].command);
                        ;
     break;}
 case 63:
-#line 517 "./parse.y"
+#line 517 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-8].word, (WORD_LIST *)reverse_list (yyvsp[-5].word_list), yyvsp[-1].command);
                        ;
     break;}
 case 64:
-#line 521 "./parse.y"
+#line 521 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = make_select_command (yyvsp[-8].word, (WORD_LIST *)reverse_list (yyvsp[-5].word_list), yyvsp[-1].command);
                        ;
     break;}
 case 65:
-#line 527 "./parse.y"
+#line 527 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_case_command (yyvsp[-4].word, (PATTERN_LIST *)NULL); ;
     break;}
 case 66:
-#line 529 "./parse.y"
+#line 529 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_case_command (yyvsp[-5].word, yyvsp[-2].pattern); ;
     break;}
 case 67:
-#line 531 "./parse.y"
+#line 531 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_case_command (yyvsp[-4].word, yyvsp[-1].pattern); ;
     break;}
 case 68:
-#line 535 "./parse.y"
+#line 535 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_function_def (yyvsp[-4].word, yyvsp[0].command, function_dstart, function_bstart); ;
     break;}
 case 69:
-#line 539 "./parse.y"
+#line 539 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_function_def (yyvsp[-4].word, yyvsp[0].command, function_dstart, function_bstart); ;
     break;}
 case 70:
-#line 542 "./parse.y"
+#line 542 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_function_def (yyvsp[-2].word, yyvsp[0].command, function_dstart, function_bstart); ;
     break;}
 case 71:
-#line 546 "./parse.y"
+#line 546 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyvsp[-1].command->flags |= CMD_WANT_SUBSHELL; yyval.command = yyvsp[-1].command; ;
     break;}
 case 72:
-#line 550 "./parse.y"
+#line 550 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-3].command, yyvsp[-1].command, (COMMAND *)NULL); ;
     break;}
 case 73:
-#line 552 "./parse.y"
+#line 552 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-5].command, yyvsp[-3].command, yyvsp[-1].command); ;
     break;}
 case 74:
-#line 554 "./parse.y"
+#line 554 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-4].command, yyvsp[-2].command, yyvsp[-1].command); ;
     break;}
 case 75:
-#line 559 "./parse.y"
+#line 559 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_group_command (yyvsp[-1].command); ;
     break;}
 case 76:
-#line 563 "./parse.y"
+#line 563 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-2].command, yyvsp[0].command, (COMMAND *)NULL); ;
     break;}
 case 77:
-#line 565 "./parse.y"
+#line 565 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-4].command, yyvsp[-2].command, yyvsp[0].command); ;
     break;}
 case 78:
-#line 567 "./parse.y"
+#line 567 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = make_if_command (yyvsp[-3].command, yyvsp[-1].command, yyvsp[0].command); ;
     break;}
 case 80:
-#line 572 "./parse.y"
+#line 572 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyvsp[0].pattern->next = yyvsp[-1].pattern; yyval.pattern = yyvsp[0].pattern; ;
     break;}
 case 81:
-#line 576 "./parse.y"
+#line 576 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, yyvsp[0].command); ;
     break;}
 case 82:
-#line 578 "./parse.y"
+#line 578 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, (COMMAND *)NULL); ;
     break;}
 case 83:
-#line 580 "./parse.y"
+#line 580 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, yyvsp[0].command); ;
     break;}
 case 84:
-#line 582 "./parse.y"
+#line 582 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, (COMMAND *)NULL); ;
     break;}
 case 86:
-#line 587 "./parse.y"
+#line 587 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyvsp[-1].pattern->next = yyvsp[-2].pattern; yyval.pattern = yyvsp[-1].pattern; ;
     break;}
 case 87:
-#line 591 "./parse.y"
+#line 591 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.word_list = make_word_list (yyvsp[0].word, (WORD_LIST *)NULL); ;
     break;}
 case 88:
-#line 593 "./parse.y"
+#line 593 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.word_list = make_word_list (yyvsp[0].word, yyvsp[-2].word_list); ;
     break;}
 case 89:
-#line 602 "./parse.y"
+#line 602 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = yyvsp[0].command;
                          if (need_here_doc)
@@ -1587,13 +1587,13 @@ case 89:
                         ;
     break;}
 case 91:
-#line 611 "./parse.y"
+#line 611 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = yyvsp[0].command;
                        ;
     break;}
 case 93:
-#line 618 "./parse.y"
+#line 618 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          if (yyvsp[-2].command->type == cm_connection)
                            yyval.command = connect_async_list (yyvsp[-2].command, (COMMAND *)NULL, '&');
@@ -1602,15 +1602,15 @@ case 93:
                        ;
     break;}
 case 95:
-#line 629 "./parse.y"
+#line 629 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, AND_AND); ;
     break;}
 case 96:
-#line 631 "./parse.y"
+#line 631 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, OR_OR); ;
     break;}
 case 97:
-#line 633 "./parse.y"
+#line 633 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          if (yyvsp[-3].command->type == cm_connection)
                            yyval.command = connect_async_list (yyvsp[-3].command, yyvsp[0].command, '&');
@@ -1619,19 +1619,19 @@ case 97:
                        ;
     break;}
 case 98:
-#line 640 "./parse.y"
+#line 640 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, ';'); ;
     break;}
 case 99:
-#line 642 "./parse.y"
+#line 642 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, ';'); ;
     break;}
 case 100:
-#line 644 "./parse.y"
+#line 644 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 106:
-#line 663 "./parse.y"
+#line 663 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = yyvsp[0].command;
                          if (need_here_doc)
@@ -1639,7 +1639,7 @@ case 106:
                        ;
     break;}
 case 107:
-#line 669 "./parse.y"
+#line 669 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          if (yyvsp[-1].command->type == cm_connection)
                            yyval.command = connect_async_list (yyvsp[-1].command, (COMMAND *)NULL, '&');
@@ -1650,7 +1650,7 @@ case 107:
                        ;
     break;}
 case 108:
-#line 678 "./parse.y"
+#line 678 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyval.command = yyvsp[-1].command;
                          if (need_here_doc)
@@ -1658,15 +1658,15 @@ case 108:
                        ;
     break;}
 case 109:
-#line 686 "./parse.y"
+#line 686 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, AND_AND); ;
     break;}
 case 110:
-#line 688 "./parse.y"
+#line 688 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, OR_OR); ;
     break;}
 case 111:
-#line 690 "./parse.y"
+#line 690 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          if (yyvsp[-2].command->type == cm_connection)
                            yyval.command = connect_async_list (yyvsp[-2].command, yyvsp[0].command, '&');
@@ -1675,59 +1675,59 @@ case 111:
                        ;
     break;}
 case 112:
-#line 697 "./parse.y"
+#line 697 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-2].command, yyvsp[0].command, ';'); ;
     break;}
 case 113:
-#line 700 "./parse.y"
+#line 700 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 114:
-#line 704 "./parse.y"
+#line 704 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 115:
-#line 706 "./parse.y"
+#line 706 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyvsp[0].command->flags |= CMD_INVERT_RETURN;
                          yyval.command = yyvsp[0].command;
                        ;
     break;}
 case 116:
-#line 711 "./parse.y"
+#line 711 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyvsp[0].command->flags |= yyvsp[-1].number;
                          yyval.command = yyvsp[0].command;
                        ;
     break;}
 case 117:
-#line 716 "./parse.y"
+#line 716 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyvsp[0].command->flags |= yyvsp[-2].number;
                          yyval.command = yyvsp[0].command;
                        ;
     break;}
 case 118:
-#line 721 "./parse.y"
+#line 721 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 {
                          yyvsp[0].command->flags |= yyvsp[-1].number|CMD_INVERT_RETURN;
                          yyval.command = yyvsp[0].command;
                        ;
     break;}
 case 119:
-#line 729 "./parse.y"
+#line 729 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, '|'); ;
     break;}
 case 120:
-#line 731 "./parse.y"
+#line 731 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.command = yyvsp[0].command; ;
     break;}
 case 121:
-#line 735 "./parse.y"
+#line 735 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.number = CMD_TIME_PIPELINE; ;
     break;}
 case 122:
-#line 737 "./parse.y"
+#line 737 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 { yyval.number = CMD_TIME_PIPELINE|CMD_TIME_POSIX; ;
     break;}
 }
@@ -1928,7 +1928,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 739 "./parse.y"
+#line 739 "/usr/homes/chet/src/bash/bash-2.01.1/parse.y"
 
 
 /* Possible states for the parser that require it to do special things. */
@@ -3722,7 +3722,7 @@ read_token_word (character)
 
 #if defined (ARRAY_VARS)
       /* Identify possible compound array variable assignment. */
-      else if (character == '=')
+      else if (character == '=' && token_index > 0)
        {
          peek_char = shell_getc (1);
          if (peek_char == '(')         /* ) */
@@ -4270,6 +4270,7 @@ decode_prompt_string (string)
              {
                /* Use the value of PWD because it is much more efficient. */
                char t_string[PATH_MAX];
+               int tlen;
 
                temp = get_string_value ("PWD");
 
@@ -4278,11 +4279,17 @@ decode_prompt_string (string)
                    if (getcwd (t_string, sizeof(t_string)) == 0)
                      {
                        t_string[0] = '.';
-                       t_string[1] = '\0';
+                       tlen = 1;
                      }
+                   else
+                     tlen = strlen (t_string);
                  }
                else
-                 strcpy (t_string, temp);
+                 {
+                   tlen = sizeof (t_string) - 1;
+                   strncpy (t_string, temp, tlen);
+                 }
+               t_string[tlen] = '\0';
 
                if (c == 'W')
                  {
@@ -4291,6 +4298,8 @@ decode_prompt_string (string)
                      strcpy (t_string, t + 1);
                  }
                else
+                 /* polite_directory_format is guaranteed to return a string
+                    no longer than PATH_MAX - 1 characters. */
                  strcpy (t_string, polite_directory_format (t_string));
 
                /* If we're going to be expanding the prompt string later,