]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
remove more old, unused files
authorChet Ramey <chet.ramey@case.edu>
Tue, 28 Mar 2023 19:54:06 +0000 (15:54 -0400)
committerChet Ramey <chet.ramey@case.edu>
Tue, 28 Mar 2023 19:54:06 +0000 (15:54 -0400)
42 files changed:
CWRU/PLATFORMS [deleted file]
CWRU/new/execute_cmd.c.lastpipe-first [deleted file]
CWRU/posix-parser/Makefile [deleted file]
CWRU/posix-parser/aux.c [deleted file]
CWRU/posix-parser/command.h [deleted file]
CWRU/posix-parser/copy.c [deleted file]
CWRU/posix-parser/endian.h [deleted file]
CWRU/posix-parser/main.c [deleted file]
CWRU/posix-parser/make.c [deleted file]
CWRU/posix-parser/parse.y [deleted file]
CWRU/posix-parser/shell.h [deleted file]
CWRU/save/unwind_prot.c.sighandling [deleted file]
doc/article.pt.ps [deleted file]
doc/texinfo.tex.20090118 [deleted file]
doc/texinfo.tex.20131227 [deleted file]
examples/complete/bash-completion-2.5.tar.xz [deleted file]
examples/loadables/bsdos.glue.c [deleted file]
lib/sh/strindex.c [deleted file]
lib/sh/xstrchr.c [deleted file]
support/config.guess.20120210 [deleted file]
support/config.guess.20131216 [deleted file]
support/config.guess.20171221 [deleted file]
support/config.guess.20180522 [deleted file]
support/config.guess.20181116 [deleted file]
support/config.guess.20200508 [deleted file]
support/config.guess.20201107 [deleted file]
support/config.rpath.20080813 [deleted file]
support/config.sub.20120418 [deleted file]
support/config.sub.20131217 [deleted file]
support/config.sub.20171221 [deleted file]
support/config.sub.20180522 [deleted file]
support/config.sub.20181116 [deleted file]
support/config.sub.20200508 [deleted file]
support/config.sub.20201107 [deleted file]
support/texi2dvi-0.43 [deleted file]
support/texi2dvi-0.46 [deleted file]
support/texi2dvi-1.14 [deleted file]
support/texi2dvi.5704 [deleted file]
support/texi2html-1.64 [deleted file]
support/version2.c [deleted file]
support/xenix-link.sh [deleted file]
tests/200 [deleted file]

diff --git a/CWRU/PLATFORMS b/CWRU/PLATFORMS
deleted file mode 100644 (file)
index f05caff..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-The version of bash in this directory has been compiled on the
-following systems:
-
-By chet:
-
-SunOS 4.1.4
-SunOS 5.5
-BSDI BSD/OS 2.1
-FreeBSD 2.2
-NetBSD 1.2
-AIX 4.2
-AIX 4.1.4
-HP/UX 9.05, 10.01, 10.10, 10.20
-Linux 2.0.29 (libc 5.3.12)
-Linux 2.0.4 (libc 5.3.12)
-
-By other testers:
-
-SCO ODT 2.0
-SCO 3.2v5.0, 3.2v4.2
-SunOS 5.3
-SunOS 5.5
-BSD/OS 2.1
-FreeBSD 2.2
-SunOS 4.1.3
-Irix 5.3
-Irix 6.2
-Linux 2.0 (unknown distribution)
-Digital OSF/1 3.2
-GNU Hurd 0.1
-SVR4.2
diff --git a/CWRU/new/execute_cmd.c.lastpipe-first b/CWRU/new/execute_cmd.c.lastpipe-first
deleted file mode 100644 (file)
index 6b7b533..0000000
+++ /dev/null
@@ -1,3176 +0,0 @@
-/* execute_command.c -- Execute a COMMAND structure. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 1, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include "posixstat.h"
-#include "filecntl.h"
-#include <signal.h>
-
-#if !defined (SIGABRT)
-#define SIGABRT SIGIOT
-#endif
-
-#include <sys/param.h>
-#include <errno.h>
-
-#include "shell.h"
-#include "y.tab.h"
-#include "flags.h"
-#include "hash.h"
-#include "jobs.h"
-
-#include "sysdefs.h"
-#include <glob/fnmatch.h>
-
-#if defined (BUFFERED_INPUT)
-#  include "input.h"
-#endif
-
-#define CMD_NO_WAIT    0x40    /* XXX move to command.h */
-#define CMD_LAST_PIPE  0x80    /* XXX ditto */
-
-#if !defined (errno)
-extern int errno;
-#endif
-
-extern int breaking, continuing, loop_level;
-extern int interactive, login_shell;
-
-#if defined (JOB_CONTROL)
-extern int job_control;
-extern int set_job_control ();
-#endif /* JOB_CONTROL */
-
-extern int getdtablesize ();
-extern int close ();
-extern char *strerror ();
-extern char *string_list ();
-
-#if defined (USG)
-extern pid_t last_made_pid;
-#endif
-
-struct stat SB;
-
-extern WORD_LIST *expand_words (), *expand_word ();
-extern WORD_LIST *expand_word_leave_quoted ();
-extern char *make_command_string ();
-
-extern Function *find_shell_builtin (), *builtin_address ();
-extern SigHandler *set_sigint_handler ();
-
-#if defined (PROCESS_SUBSTITUTION)
-void close_all_files ();
-#endif /* PROCESS_SUBSTITUTION */
-
-/* Static functions defined and used in this file. */
-static void close_pipes (), do_piping (), execute_disk_command ();
-static void execute_subshell_builtin_or_function ();
-static void cleanup_redirects (), cleanup_func_redirects (), bind_lastarg ();
-static void add_undo_close_redirect ();
-static int do_redirection_internal (), do_redirections ();
-static int expandable_redirection_filename (), execute_shell_script ();
-static int execute_builtin_or_function (), add_undo_redirect ();
-static char *find_user_command_internal (), *find_user_command_in_path ();
-
-/* The value returned by the last synchronous command. */
-int last_command_exit_value = 0;
-
-/* The list of redirections to preform which will undo the redirections
-   that I made in the shell. */
-REDIRECT *redirection_undo_list = (REDIRECT *)NULL;
-
-/* Have we just forked, and are we now running in a subshell environment? */
-int subshell_environment = 0;
-
-/* Use this as the function to call when adding unwind protects so we
-   don't need to know what free() returns. */
-void
-vfree (string)
-     char *string;
-{
-  free (string);
-}
-
-#define FD_BITMAP_DEFAULT_SIZE 32
-/* Functions to allocate and deallocate the structures used to pass
-   information from the shell to its children about file descriptors
-   to close. */
-struct fd_bitmap *
-new_fd_bitmap (size)
-     long size;
-{
-  struct fd_bitmap *ret;
-
-  ret = (struct fd_bitmap *)xmalloc (sizeof (struct fd_bitmap));
-
-  ret->size = size;
-
-  if (size)
-    {
-      ret->bitmap = (char *)xmalloc (size);
-      bzero (ret->bitmap, size);
-    }
-  else
-    ret->bitmap = (char *)NULL;
-  return (ret);
-}
-
-void
-dispose_fd_bitmap (fdbp)
-     struct fd_bitmap *fdbp;
-{
-  if (fdbp->bitmap)
-    free (fdbp->bitmap);
-
-  free (fdbp);
-}
-
-void
-close_fd_bitmap (fdbp)
-     struct fd_bitmap *fdbp;
-{
-  register int i;
-
-  if (fdbp)
-    {
-      for (i = 0; i < fdbp->size; i++)
-       if (fdbp->bitmap[i])
-         {
-           close (i);
-           fdbp->bitmap[i] = 0;
-         }
-    }
-}
-
-/* Execute the command passed in COMMAND.  COMMAND is exactly what
-   read_command () places into GLOBAL_COMMAND.  See "command.h" for the
-   details of the command structure.
-
-   EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible
-   return values.  Executing a command with nothing in it returns
-   EXECUTION_SUCCESS. */
-execute_command (command)
-     COMMAND *command;
-{
-  struct fd_bitmap *bitmap;
-  int result;
-
-  bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE);
-
-  /* Just do the command, but not asynchronously. */
-  result = execute_command_internal (command, 0, NO_PIPE, NO_PIPE, bitmap);
-
-  dispose_fd_bitmap (bitmap);
-
-#if defined (PROCESS_SUBSTITUTION)
-  unlink_fifo_list ();
-#endif /* PROCESS_SUBSTITUTION */
-
-  return (result);
-}
-
-/* Return 1 if TYPE is a shell control structure type. */
-int
-shell_control_structure (type)
-     enum command_type type;
-{
-  switch (type)
-    {
-    case cm_for:
-    case cm_case:
-    case cm_while:
-    case cm_until:
-    case cm_if:
-    case cm_group:
-      return (1);
-
-    default:
-      return (0);
-    }
-}
-
-/* A function to use to unwind_protect the redirection undo list
-   for loops. */
-static void
-cleanup_redirects (list)
-     REDIRECT *list;
-{
-  do_redirections (list, 1, 0, 0);
-  dispose_redirects (list);
-}
-
-/* Function to unwind_protect the redirections for functions and builtins. */
-static void
-cleanup_func_redirects (list)
-     REDIRECT *list;
-{
-  do_redirections (list, 1, 0, 0);
-}
-
-#if defined (JOB_CONTROL)
-/* A function to restore the signal mask to its proper value when the shell
-   is interrupted or errors occur while creating a pipeline. */
-static int
-restore_signal_mask (set)
-     sigset_t set;
-{
-  return (sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL));
-}
-#endif /* JOB_CONTROL */
-
-/* A debugging function that can be called from gdb, for instance. */
-open_files ()
-{
-  register int i;
-  int f, fd_table_size;
-
-  fd_table_size = getdtablesize ();
-
-  fprintf (stderr, "pid %d open files:", getpid ());
-  for (i = 3; i < fd_table_size; i++)
-    {
-      if ((f = fcntl (i, F_GETFD, 0)) != -1)
-       fprintf (stderr, " %d (%s)", i, f ? "close" : "open");
-    }
-  fprintf (stderr, "\n");
-}
-
-execute_command_internal (command, asynchronous, pipe_in, pipe_out, 
-                         fds_to_close)
-     COMMAND *command;
-     int asynchronous;
-     int pipe_in, pipe_out;
-     struct fd_bitmap *fds_to_close;
-{
-  int exec_result = EXECUTION_SUCCESS;
-  int invert, ignore_return;
-  REDIRECT *my_undo_list;
-
-  if (!command || breaking || continuing)
-    return (EXECUTION_SUCCESS);
-
-  run_pending_traps ();
-
-  invert = (command->flags & CMD_INVERT_RETURN) != 0;
-
-  /* If a command was being explicitly run in a subshell, or if it is
-     a shell control-structure, and it has a pipe, then we do the command
-     in a subshell. */
-
-  if ((command->flags & CMD_WANT_SUBSHELL) ||
-      (command->flags & CMD_FORCE_SUBSHELL)  ||
-      (shell_control_structure (command->type) &&
-       (pipe_out != NO_PIPE || pipe_in != NO_PIPE || asynchronous)))
-    {
-      pid_t paren_pid;
-
-      /* Fork a subshell, turn off the subshell bit, turn off job
-        control and call execute_command () on the command again. */
-      paren_pid = make_child (savestring (make_command_string (command)),
-                             asynchronous);
-      if (paren_pid == 0)
-       {
-         int user_subshell, return_code;
-
-#if defined (JOB_CONTROL)
-         set_sigchld_handler ();
-#endif /* JOB_CONTROL */
-
-         set_sigint_handler ();
-
-         user_subshell = (command->flags & CMD_WANT_SUBSHELL) != 0;
-         command->flags &= ~(CMD_FORCE_SUBSHELL | CMD_WANT_SUBSHELL);
-
-         /* If a command is asynchronous in a subshell (like ( foo ) & or
-            the special case of an asynchronous GROUP command where the
-            the subshell bit is turned on down in case cm_group: below), 
-            turn off `asynchronous', so that two subshells aren't spawned.
-
-            This seems semantically correct to me.  For example, 
-            ( foo ) & seems to say ``do the command `foo' in a subshell
-            environment, but don't wait for that subshell to finish'',
-            and "{ foo ; bar } &" seems to me to be like functions or
-            builtins in the background, which executed in a subshell
-            environment.  I just don't see the need to fork two subshells. */
-
-         /* Don't fork again, we are already in a subshell. */
-         asynchronous = 0;
-
-         /* Subshells are neither login nor interactive. */
-         login_shell = interactive = 0;
-
-         subshell_environment = 1;
-
-#if defined (JOB_CONTROL)
-         /* Delete all traces that there were any jobs running.  This is
-            only for subshells. */
-         without_job_control ();
-#endif /* JOB_CONTROL */
-         do_piping (pipe_in, pipe_out);
-
-         if (fds_to_close)
-           close_fd_bitmap (fds_to_close);
-
-         /* Do redirections, then dispose of them before recursive call. */
-         if (command->redirects)
-           {
-             if (do_redirections (command->redirects, 1, 0, 0) != 0)
-               exit (EXECUTION_FAILURE);
-
-             dispose_redirects (command->redirects);
-             command->redirects = (REDIRECT *)NULL;
-           }
-
-         return_code = execute_command_internal
-           (command, asynchronous, NO_PIPE, NO_PIPE, fds_to_close);
-
-         /* If we were explicitly placed in a subshell with (), we need
-            to do the `shell cleanup' things, such as running traps[0]. */
-         if (user_subshell)
-           run_exit_trap ();
-
-         exit (return_code);
-       }
-      else
-       {
-         close_pipes (pipe_in, pipe_out);
-
-         /* If we are part of a pipeline, and not the end of the pipeline,
-            then we should simply return and let the last command in the
-            pipe be waited for.  If we are not in a pipeline, or are the
-            last command in the pipeline, then we wait for the subshell 
-            and return its exit status as usual. */
-         if (pipe_out != NO_PIPE)
-           return (EXECUTION_SUCCESS);
-
-         if (command->flags & CMD_NO_WAIT)
-           return (EXECUTION_SUCCESS);
-
-         stop_pipeline (asynchronous, (COMMAND *)NULL);
-
-         if (!asynchronous)
-           {
-             last_command_exit_value = wait_for (paren_pid);
-
-             /* If we have to, invert the return value. */
-             if (invert)
-               {
-                 if (last_command_exit_value == EXECUTION_SUCCESS)
-                   return (EXECUTION_FAILURE);
-                 else
-                   return (EXECUTION_SUCCESS);
-               }
-             else
-               return (last_command_exit_value);
-           }
-         else
-           {
-             if (interactive)
-               describe_pid (paren_pid);
-
-             run_pending_traps ();
-
-             return (EXECUTION_SUCCESS);
-           }
-       }
-    }
-
-  /* Handle WHILE FOR CASE etc. with redirections.  (Also '&' input
-     redirection.)  */
-  if (do_redirections (command->redirects, 1, 1, 0) != 0)
-    return (EXECUTION_FAILURE);
-
-  my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list);
-
-  begin_unwind_frame ("loop_redirections");
-
-  if (my_undo_list)
-    add_unwind_protect ((Function *)cleanup_redirects, my_undo_list);
-
-  ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
-
-  switch (command->type)
-    {
-    case cm_for:
-      if (ignore_return)
-       command->value.For->flags |= CMD_IGNORE_RETURN;
-      exec_result = execute_for_command (command->value.For);
-      break;
-
-    case cm_case:
-      if (ignore_return)
-       command->value.Case->flags |= CMD_IGNORE_RETURN;
-      exec_result = execute_case_command (command->value.Case);
-      break;
-
-    case cm_while:
-      if (ignore_return)
-       command->value.While->flags |= CMD_IGNORE_RETURN;
-      exec_result = execute_while_command (command->value.While);
-      break;
-
-    case cm_until:
-      if (ignore_return)
-       command->value.While->flags |= CMD_IGNORE_RETURN;
-      exec_result = execute_until_command (command->value.While);
-      break;
-
-    case cm_if:
-      if (ignore_return)
-       command->value.If->flags |= CMD_IGNORE_RETURN;
-      exec_result = execute_if_command (command->value.If);
-      break;
-
-    case cm_group:
-
-      /* This code can be executed from either of two paths: an explicit
-        '{}' command, or via a function call.  If we are executed via a
-        function call, we have already taken care of the function being
-        executed in the background (down there in execute_simple_command ()),
-        and this command should *not* be marked as asynchronous.  If we
-        are executing a regular '{}' group command, and asynchronous == 1,
-        we must want to execute the whole command in the background, so we
-        need a subshell, and we want the stuff executed in that subshell
-        (this group command) to be executed in the foreground of that
-        subshell (i.e. there will not be *another* subshell forked).
-
-        What we do is to force a subshell if asynchronous, and then call
-        execute_command_internal again with asynchronous still set to 1,
-        but with the original group command, so the printed command will
-        look right.
-
-        The code above that handles forking off subshells will note that
-        both subshell and async are on, and turn off async in the child
-        after forking the subshell (but leave async set in the parent, so
-        the normal call to describe_pid is made).  This turning off
-        async is *crucial*; if it is not done, this will fall into an
-        infinite loop of executions through this spot in subshell after
-        subshell until the process limit is exhausted. */
-
-      if (asynchronous)
-       {
-         command->flags |= CMD_FORCE_SUBSHELL;
-         exec_result =
-           execute_command_internal (command, 1, pipe_in, pipe_out,
-                                     fds_to_close);
-       }
-      else
-       {
-         if (ignore_return && command->value.Group->command)
-           command->value.Group->command->flags |= CMD_IGNORE_RETURN;
-         exec_result =
-           execute_command_internal (command->value.Group->command,
-                                     asynchronous, pipe_in, pipe_out,
-                                     fds_to_close);
-       }
-      break;
-
-    case cm_simple:
-      {
-       pid_t last_pid = last_made_pid;
-
-#if defined (JOB_CONTROL)
-       extern int already_making_children;
-#endif /* JOB_CONTROL */
-       if (ignore_return && command->value.Simple)
-         command->value.Simple->flags |= CMD_IGNORE_RETURN;
-       exec_result =
-         execute_simple_command (command->value.Simple, pipe_in, pipe_out,
-                                 asynchronous, fds_to_close);
-
-       /* The temporary environment should be used for only the simple
-          command immediately following its definition. */
-       dispose_used_env_vars ();
-
-#if (defined (Ultrix) && defined (mips)) || !defined (HAVE_ALLOCA)
-       /* Reclaim memory allocated with alloca () on machines which
-          may be using the alloca emulation code. */
-       (void) alloca (0);
-#endif /* (Ultrix && mips) || !HAVE_ALLOCA */
-
-       if (command->flags & CMD_NO_WAIT)
-         break;
-
-       /* If we forked to do the command, then we must wait_for ()
-          the child. */
-#if defined (JOB_CONTROL)
-       if (already_making_children && pipe_out == NO_PIPE)
-#else
-       if (pipe_out == NO_PIPE)
-#endif /* JOB_CONTROL */
-         {
-           if (last_pid != last_made_pid)
-             {
-               stop_pipeline (asynchronous, (COMMAND *)NULL);
-
-               if (asynchronous)
-                 {
-                   if (interactive)
-                     describe_pid (last_made_pid);
-                 }
-               else
-#if !defined (JOB_CONTROL)
-                 /* Do not wait for asynchronous processes started from
-                    startup files. */
-                 if (last_made_pid != last_asynchronous_pid)
-#endif
-                   /* When executing a shell function that executes other
-                      commands, this causes the last simple command in
-                      the function to be waited for twice. */
-                   exec_result = wait_for (last_made_pid);
-             }
-         }
-      }
-      if (!ignore_return && exit_immediately_on_error && !invert &&
-         (exec_result != EXECUTION_SUCCESS))
-       {
-         last_command_exit_value = exec_result;
-         run_pending_traps ();
-         longjmp (top_level, EXITPROG);
-       }
-
-      break;
-
-    case cm_connection:
-      switch (command->value.Connection->connector)
-       {
-         /* Do the first command asynchronously. */
-       case '&':
-         {
-           COMMAND *tc = command->value.Connection->first;
-           REDIRECT *rp = tc->redirects;
-
-           if (ignore_return && tc)
-             tc->flags |= CMD_IGNORE_RETURN;
-
-           /* If this shell was compiled without job control, or if job
-              control is not active (e.g., if the shell is not interactive),
-              the standard input for an asynchronous command is /dev/null. */
-#if defined (JOB_CONTROL)
-           if (!interactive || !job_control)
-#endif /* JOB_CONTROL */
-           {
-             REDIRECT *tr = 
-               make_redirection (0, r_inputa_direction,
-                                 make_word ("/dev/null"));
-             tr->next = tc->redirects;
-             tc->redirects = tr;
-           }
-
-           exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out,
-                                                   fds_to_close);
-
-#if defined (JOB_CONTROL)
-           if (!interactive || !job_control)
-#endif /* JOB_CONTROL */
-           {
-             /* Remove the redirection we added above.  It matters,
-                especially for loops, which call execute_command ()
-                multiple times with the same command. */
-             REDIRECT *tr, *tl;
-
-             tr = tc->redirects;
-             do
-               {
-                 tl = tc->redirects;
-                 tc->redirects = tc->redirects->next;
-               }
-             while (tc->redirects && tc->redirects != rp);
-
-             tl->next = (REDIRECT *)NULL;
-             dispose_redirects (tr);
-           }
-
-           {
-             register COMMAND *second;
-
-             second = command->value.Connection->second;
-
-             if (second)
-               {
-                 if (ignore_return)
-                   second->flags |= CMD_IGNORE_RETURN;
-
-                 exec_result = execute_command_internal
-                   (second, asynchronous, pipe_in, pipe_out, fds_to_close);
-               }
-           }
-         }
-         break;
-
-       case ';':
-         /* Just call execute command on both of them. */
-         if (ignore_return)
-           {
-             if (command->value.Connection->first)
-               command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
-             QUIT;
-             if (command->value.Connection->second)
-               command->value.Connection->second->flags |= CMD_IGNORE_RETURN;
-           }
-         execute_command (command->value.Connection->first);
-         QUIT;
-         exec_result =
-           execute_command_internal (command->value.Connection->second,
-                                     asynchronous, pipe_in, pipe_out,
-                                     fds_to_close);
-         break;
-
-       case '|':
-         {
-           int prev, fildes[2], new_bitmap_size, dummyfd;
-           COMMAND *cmd;
-           int outpipe;
-           struct fd_bitmap *fd_bitmap;
-
-#if defined (JOB_CONTROL)
-           COMMAND *lastcmd;
-           int lastpipe[2];
-           pid_t lastpipe_pid;
-
-           sigset_t set, oset;
-           BLOCK_CHILD (set, oset);
-#endif /* JOB_CONTROL */
-
-#if defined (JOB_CONTROL)
-           /* Fork the last command in the pipeline first, then the rest of
-              the commands, to avoid synchronization problems. */
-           /* Find the last pipeline element */
-           lastcmd = command;
-           while (lastcmd && lastcmd->type == cm_connection &&
-                  lastcmd->value.Connection &&
-                  lastcmd->value.Connection->connector == '|')
-             lastcmd = lastcmd->value.Connection->second;
-
-           if (pipe (lastpipe) < 0)
-             {
-               report_error ("pipe error: %s", strerror (errno));
-               terminate_current_pipeline ();
-               kill_current_pipeline ();
-               last_command_exit_value = EXECUTION_FAILURE;
-               throw_to_top_level ();
-             }
-
-           /* Now execute the rightmost command in the pipeline, but do
-              not wait for it. */
-           if (ignore_return && lastcmd)
-             lastcmd->flags |= CMD_IGNORE_RETURN;
-           lastcmd->flags |= (CMD_NO_WAIT | CMD_LAST_PIPE);
-           fds_to_close->bitmap[lastpipe[1]] = 1;
-           (void) execute_command_internal
-             (lastcmd, asynchronous, lastpipe[0], pipe_out, fds_to_close);
-           lastpipe_pid = last_made_pid;
-#endif /* JOB_CONTROL */
-
-           prev = pipe_in;
-           cmd = command;
-
-           while (cmd &&
-                  cmd->type == cm_connection &&
-                  cmd->value.Connection &&
-                  cmd->value.Connection->connector == '|')
-             {
-               /* Make a pipeline between the two commands. */
-               if (pipe (fildes) < 0)
-                 {
-                   report_error ("pipe error: %s", strerror (errno));
-#if defined (JOB_CONTROL)
-                   terminate_current_pipeline ();
-                   kill_current_pipeline ();
-#endif /* JOB_CONTROL */
-                   last_command_exit_value = EXECUTION_FAILURE;
-                   /* The unwind-protects installed below will take care
-                      of closing all of the open file descriptors. */
-                   throw_to_top_level ();
-                 }
-               else
-                 {
-                   /* Here is a problem: with the new file close-on-exec
-                      code, the read end of the pipe (fildes[0]) stays open
-                      in the first process, so that process will never get a
-                      SIGPIPE.  There is no way to signal the first process
-                      that it should close fildes[0] after forking, so it
-                      remains open.  No SIGPIPE is ever sent because there
-                      is still a file descriptor open for reading connected
-                      to the pipe.  We take care of that here.  This passes
-                      around a bitmap of file descriptors that must be
-                      closed after making a child process in
-                      execute_simple_command. */
-
-                   /* We need fd_bitmap to be at least as big as fildes[0].
-                      If fildes[0] is less than fds_to_close->size, then
-                      use fds_to_close->size. */
-
-                   if (fildes[0] < fds_to_close->size)
-                     new_bitmap_size = fds_to_close->size;
-                   else
-                     new_bitmap_size = fildes[0] + 8;
-
-                   fd_bitmap = new_fd_bitmap (new_bitmap_size);
-
-                   /* Now copy the old information into the new bitmap. */
-                   bcopy (fds_to_close->bitmap, fd_bitmap->bitmap,
-                          fds_to_close->size);
-
-                   /* And mark the pipe file descriptors to be closed. */
-                   fd_bitmap->bitmap[fildes[0]] = 1;
-
-                   /* In case there are pipe or out-of-processes errors, we
-                      want all these file descriptors to be closed when
-                      unwind-protects are run, and the storage used for the
-                      bitmaps freed up. */
-                   begin_unwind_frame ("pipe-file-descriptors");
-                   add_unwind_protect (dispose_fd_bitmap, fd_bitmap);
-                   add_unwind_protect (close_fd_bitmap, fd_bitmap);
-                   if (prev >= 0)
-                     add_unwind_protect (close, prev);
-                   dummyfd = fildes[1];
-                   add_unwind_protect (close, dummyfd);
-
-#if defined (JOB_CONTROL)
-                   add_unwind_protect (restore_signal_mask, oset);
-#endif /* JOB_CONTROL */
-
-                   if (ignore_return && cmd->value.Connection->first)
-                     cmd->value.Connection->first->flags |=
-                       CMD_IGNORE_RETURN;
-
-#if defined (JOB_CONTROL)
-                   if (cmd->value.Connection->second == lastcmd)
-                     {
-                       outpipe = lastpipe[1];
-                       close (fildes[1]);
-                     }
-                   else
-#endif /* JOB_CONTROL */
-                     outpipe = fildes[1];
-
-                   execute_command_internal
-                     (cmd->value.Connection->first, asynchronous, prev,
-                      outpipe, fd_bitmap);
-
-                   if (prev >= 0)
-                     close (prev);
-                   
-                   prev = fildes[0];
-                   close (outpipe);
-
-                   dispose_fd_bitmap (fd_bitmap);
-                   discard_unwind_frame ("pipe-file-descriptors");
-                 }
-               cmd = cmd->value.Connection->second;
-#if defined (JOB_CONTROL)
-               if (cmd == lastcmd)
-                 break;
-#endif
-             }
-
-#if !defined (JOB_CONTROL)
-           /* Now execute the rightmost command in the pipeline.  */
-           if (ignore_return && cmd)
-             cmd->flags |= CMD_IGNORE_RETURN;
-           exec_result =
-             execute_command_internal
-               (cmd, asynchronous, prev, pipe_out, fds_to_close);
-#endif /* !JOB_CONTROL */
-
-           if (prev >= 0)
-             close (prev);
-
-#if defined (JOB_CONTROL)
-           UNBLOCK_CHILD (oset);
-#endif
-
-#if defined (JOB_CONTROL)
-           /* Because we created the processes out of order, we have to
-              reorder the pipeline slightly. */
-           rotate_the_pipeline ();
-           stop_pipeline (asynchronous, (COMMAND *)NULL);
-           if (asynchronous && interactive)
-             describe_pid (lastpipe_pid);
-           exec_result = wait_for (lastpipe_pid);
-           if (!ignore_return && exit_immediately_on_error && !invert &&
-               (exec_result != EXECUTION_SUCCESS))
-             {
-               last_command_exit_value = exec_result;
-               run_pending_traps ();
-               longjmp (top_level, EXITPROG);
-             }
-#endif /* JOB_CONTROL */
-         }
-         break;
-
-       case AND_AND:
-         if (asynchronous)
-           {
-             /* If we have something like `a && b &', run the && stuff in a
-                subshell.  Force a subshell and just call
-                execute_command_internal again.  Leave asynchronous on
-                so that we get a report from the parent shell about the
-                background job. */
-             command->flags |= CMD_FORCE_SUBSHELL;
-             exec_result = execute_command_internal (command, 1, pipe_in,
-                             pipe_out, fds_to_close);
-             break;
-           }
-
-         /* Execute the first command.  If the result of that is successful,
-            then execute the second command, otherwise return. */
-
-         if (command->value.Connection->first)
-           command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
-
-         exec_result = execute_command (command->value.Connection->first);
-         QUIT;
-         if (exec_result == EXECUTION_SUCCESS)
-           {
-             if (ignore_return && command->value.Connection->second)
-               command->value.Connection->second->flags |=
-                 CMD_IGNORE_RETURN;
-
-             exec_result =
-               execute_command (command->value.Connection->second);
-           }
-         break;
-
-       case OR_OR:
-         if (asynchronous)
-           {
-             /* If we have something like `a || b &', run the || stuff in a
-                subshell.  Force a subshell and just call
-                execute_command_internal again.  Leave asynchronous on
-                so that we get a report from the parent shell about the
-                background job. */
-             command->flags |= CMD_FORCE_SUBSHELL;
-             exec_result = execute_command_internal (command, 1, pipe_in,
-                             pipe_out, fds_to_close);
-             break;
-           }
-
-         /* Execute the first command.  If the result of that is successful,
-            then return, otherwise execute the second command. */
-
-         if (command->value.Connection->first)
-           command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
-
-         exec_result = execute_command (command->value.Connection->first);
-         QUIT;
-         if (exec_result != EXECUTION_SUCCESS)
-           {
-             if (ignore_return && command->value.Connection->second)
-               command->value.Connection->second->flags |=
-                 CMD_IGNORE_RETURN;
-
-             exec_result =
-               execute_command (command->value.Connection->second);
-           }
-
-         break;
-
-       default:
-         programming_error ("Bad connector `%d'!",
-                            command->value.Connection->connector);
-         longjmp (top_level, DISCARD);
-         break;
-       }
-      break;
-
-    case cm_function_def:
-      exec_result = intern_function (command->value.Function_def->name,
-                                    command->value.Function_def->command);
-      break;
-
-    default:
-      programming_error
-       ("execute_command: Bad command type `%d'!", command->type);
-    }
-
-  if (my_undo_list)
-    {
-      do_redirections (my_undo_list, 1, 0, 0);
-      dispose_redirects (my_undo_list);
-    }
-
-  discard_unwind_frame ("loop_redirections");
-
-  /* Invert the return value if we have to */
-  if (invert)
-    {
-      if (exec_result == EXECUTION_SUCCESS)
-       exec_result = EXECUTION_FAILURE;
-      else
-       exec_result = EXECUTION_SUCCESS;
-    }
-
-  last_command_exit_value = exec_result;
-  run_pending_traps ();
-  return (last_command_exit_value);
-}
-
-/* Execute a FOR command.  The syntax is: FOR word_desc IN word_list;
-   DO command; DONE */
-execute_for_command (for_command)
-     FOR_COM *for_command;
-{
-  /* I just noticed that the Bourne shell leaves word_desc bound to the
-     last name in word_list after the FOR statement is done.  This seems
-     wrong to me; I thought that the variable binding should be lexically
-     scoped, i.e., only would last the duration of the FOR command.  This
-     behaviour can be gotten by turning on the lexical_scoping switch. */
-
-  register WORD_LIST *releaser, *list;
-  WORD_DESC *temp = for_command->name;
-  char *identifier;
-  SHELL_VAR *old_value = (SHELL_VAR *)NULL; /* Remember the old value of x. */
-  int retval = EXECUTION_SUCCESS;
-  extern int dispose_words ();
-  extern int dispose_variable ();
-
-  if (!check_identifier (temp))
-    return (EXECUTION_FAILURE);
-
-  loop_level++;
-  identifier = temp->word;
-
-  list = releaser = expand_words (for_command->map_list, 0);
-
-  begin_unwind_frame ("for");
-  add_unwind_protect (dispose_words, releaser);
-
-  if (lexical_scoping)
-    {
-      old_value = copy_variable (find_variable (identifier));
-      if (old_value)
-       add_unwind_protect (dispose_variable, old_value);
-    }
-
-  while (list)
-    {
-      QUIT;
-      bind_variable (identifier, list->word->word);
-      if (for_command->flags & CMD_IGNORE_RETURN)
-       for_command->action->flags |= CMD_IGNORE_RETURN;
-      execute_command (for_command->action);
-      retval = last_command_exit_value;
-      QUIT;
-
-      if (breaking)
-       {
-         breaking--; 
-         break;
-       }
-
-      if (continuing)
-       {
-         continuing--;
-         if (continuing)
-           break;
-       }
-
-      list = list->next;
-    }
-
-  loop_level--;
-
-  if (lexical_scoping)
-    {
-      if (!old_value)
-       makunbound (identifier, shell_variables);
-      else
-       {
-         SHELL_VAR *new_value;
-
-         new_value = bind_variable (identifier, value_cell(old_value));
-         new_value->attributes = old_value->attributes;
-       }
-    }
-
-  run_unwind_frame ("for");
-  return (retval);
-}
-
-/* Execute a CASE command.  The syntax is: CASE word_desc IN pattern_list ESAC.
-   The pattern_list is a linked list of pattern clauses; each clause contains
-   some patterns to compare word_desc against, and an associated command to
-   execute. */
-execute_case_command (case_command)
-     CASE_COM *case_command;
-{
-  extern int dispose_words ();
-  extern char *tilde_expand ();
-  register WORD_LIST *list;
-  WORD_LIST *wlist;
-  PATTERN_LIST *clauses;
-  char *word;
-  int retval;
-
-  /* Posix.2 Draft 11.2 says that the word is tilde expanded. */
-  if (member ('~', case_command->word->word))
-    {
-      word = tilde_expand (case_command->word->word);
-      free (case_command->word->word);
-      case_command->word->word = word;
-    }
-  wlist = expand_word (case_command->word, 0);
-  clauses = case_command->clauses;
-  word = (wlist) ? string_list (wlist) : savestring ("");
-  retval = EXECUTION_SUCCESS;
-
-  begin_unwind_frame ("case");
-  add_unwind_protect (dispose_words, wlist);
-  add_unwind_protect ((Function *)vfree, word);
-
-  while (clauses)
-    {
-      QUIT;
-      list = clauses->patterns;
-      while (list)
-       {
-         extern char *quote_string_for_globbing ();
-         char *t, *pattern;
-         WORD_LIST *es;
-         int match, freepat;
-
-         /* Posix.2 draft 11.3 says to do tilde expansion on each member
-            of the pattern list. */
-         if (member ('~', list->word->word))
-           {
-             t = tilde_expand (list->word->word);
-             free (list->word->word);
-             list->word->word = t;
-           }
-
-         es = expand_word_leave_quoted (list->word, 0);
-         if (es && es->word && es->word->word && *(es->word->word))
-           {
-             pattern = quote_string_for_globbing (es->word->word, 1);
-             freepat = 1;
-           }
-         else
-           {
-             pattern = "";
-             freepat = 0;
-           }
-
-         /* Since the pattern does not undergo quote removal according to
-            Posix.2 section 3.9.4.3, the fnmatch() call must be able to
-            recognize backslashes as escape characters. */
-         match = fnmatch (pattern, word, 0) != FNM_NOMATCH;
-         if (freepat)
-           free (pattern);
-         dispose_words (es);
-
-         if (match)
-           {
-             if (clauses->action && 
-                 (case_command->flags & CMD_IGNORE_RETURN))
-               clauses->action->flags |= CMD_IGNORE_RETURN;
-             execute_command (clauses->action);
-             retval = last_command_exit_value;
-             goto exit_command;
-           }
-
-         list = list->next;
-         QUIT;
-       }
-      clauses = clauses->next;
-    }
- exit_command:
-  run_unwind_frame ("case");
-  return (retval);
-}
-
-#define CMD_WHILE 0
-#define CMD_UNTIL 1
-
-/* The WHILE command.  Syntax: WHILE test DO action; DONE.
-   Repeatedly execute action while executing test produces
-   EXECUTION_SUCCESS. */
-execute_while_command (while_command)
-     WHILE_COM *while_command;
-{
-  return (execute_while_or_until (while_command, CMD_WHILE));
-}
-
-/* UNTIL is just like WHILE except that the test result is negated. */
-execute_until_command (while_command)
-     WHILE_COM *while_command;
-{
-  return (execute_while_or_until (while_command, CMD_UNTIL));
-}
-
-/* The body for both while and until.  The only difference between the
-   two is that the test value is treated differently.  TYPE is
-   CMD_WHILE or CMD_UNTIL.  The return value for both commands should
-   be EXECUTION_SUCCESS if no commands in the body are executed, and
-   the status of the last command executed in the body otherwise. */
-execute_while_or_until (while_command, type)
-     WHILE_COM *while_command;
-     int type;
-{
-  extern int breaking;
-  extern int continuing;
-  int commands_executed = 0;
-  int return_value, body_status = EXECUTION_SUCCESS;
-
-  loop_level++;
-  while_command->test->flags |= CMD_IGNORE_RETURN;
-
-  while (1)
-    {
-      return_value = execute_command (while_command->test);
-
-      if (type == CMD_WHILE && return_value != EXECUTION_SUCCESS)
-       break;
-      if (type == CMD_UNTIL && return_value == EXECUTION_SUCCESS)
-       break;
-
-      QUIT;
-      commands_executed = 1;
-
-      if (while_command->flags & CMD_IGNORE_RETURN)
-       while_command->action->flags |= CMD_IGNORE_RETURN;
-      body_status = execute_command (while_command->action);
-
-      QUIT;
-
-      if (breaking)
-       {
-         breaking--;
-         break;
-       }
-
-      if (continuing)
-       {
-         continuing--;
-         if (continuing)
-           break;
-       }
-    }
-  loop_level--;
-
-  return (body_status);
-}
-
-/* IF test THEN command [ELSE command].
-   IF also allows ELIF in the place of ELSE IF, but
-   the parser makes *that* stupidity transparent. */
-execute_if_command (if_command)
-     IF_COM *if_command;
-{
-  int return_value;
-
-  if_command->test->flags |= CMD_IGNORE_RETURN;
-  return_value = execute_command (if_command->test);
-
-  if (return_value == EXECUTION_SUCCESS)
-    {
-      QUIT;
-      if (if_command->true_case && (if_command->flags & CMD_IGNORE_RETURN))
-         if_command->true_case->flags |= CMD_IGNORE_RETURN;
-      return (execute_command (if_command->true_case));
-    }
-  else
-    {
-      QUIT;
-
-      if (if_command->false_case &&
-         (if_command->flags & CMD_IGNORE_RETURN))
-       {
-         if_command->false_case->flags |= CMD_IGNORE_RETURN;
-       }
-
-      return (execute_command (if_command->false_case));
-    }
-}
-
-/* The name of the command that is currently being executed.
-   `test' needs this, for example. */
-char *this_command_name;
-
-static void
-bind_lastarg (arg)
-     char *arg;
-{
-  SHELL_VAR *var;
-
-  if (!arg)
-    arg = "";
-  var = bind_variable ("_", arg);
-  var->attributes &= ~att_exported;
-}
-
-/* For catching RETURN in a function. */
-int return_catch_flag = 0;
-int return_catch_value;
-jmp_buf return_catch;
-
-/* The meaty part of all the executions.  We have to start hacking the
-   real execution of commands here.  Fork a process, set things up,
-   execute the command. */
-execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
-     SIMPLE_COM *simple_command;
-     int pipe_in, pipe_out;
-     struct fd_bitmap *fds_to_close;
-{
-  extern int command_string_index, variable_context, line_number;
-  extern char *the_printed_command;
-  extern pid_t last_command_subst_pid;
-  WORD_LIST *expand_words (), *copy_word_list ();
-  WORD_LIST *words, *lastword;
-  char *command_line, *lastarg;
-  int first_word_quoted, result;
-  pid_t old_last_command_subst_pid;
-
-  result = EXECUTION_SUCCESS;
-
-  /* If we're in a function, update the pseudo-line-number information. */
-  if (variable_context)
-    line_number++;
-
-  /* Remember what this command line looks like at invocation. */
-  command_string_index = 0;
-  print_simple_command (simple_command);
-  command_line = (char *)alloca (1 + strlen (the_printed_command));
-  strcpy (command_line, the_printed_command);
-
-  first_word_quoted =
-    simple_command->words ? simple_command->words->word->quoted : 0;
-
-  old_last_command_subst_pid = last_command_subst_pid;
-
-  /* If we are re-running this as the result of executing the `command'
-     builtin, do not expand the command words a second time. */
-  if ((simple_command->flags & CMD_INHIBIT_EXPANSION) == 0)
-    words = expand_words (simple_command->words);
-  else
-    words = copy_word_list (simple_command->words);
-
-  lastarg = (char *)NULL;
-  begin_unwind_frame ("simple-command");
-
-  /* It is possible for WORDS not to have anything left in it.
-     Perhaps all the words consisted of `$foo', and there was
-     no variable `$foo'. */
-  if (words)
-    {
-      extern int dispose_words ();
-      extern Function *last_shell_builtin, *this_shell_builtin;
-      Function *builtin;
-      SHELL_VAR *func;
-
-      if (echo_command_at_execute)
-       {
-         extern char *indirection_level_string ();
-         char *line = string_list (words);
-
-         if (line && *line)
-           fprintf (stderr, "%s%s\n", indirection_level_string (), line);
-
-         if (line)
-           free (line);
-       }
-
-      if (simple_command->flags & CMD_NO_FUNCTIONS)
-       func = (SHELL_VAR *)NULL;
-      else
-       func = find_function (words->word->word);
-
-      add_unwind_protect (dispose_words, words);
-
-      QUIT;
-
-      /* Bind the last word in this command to "$_" after execution. */
-      for (lastword = words; lastword->next; lastword = lastword->next);
-      lastarg = lastword->word->word;
-
-#if defined (JOB_CONTROL)
-      /* Is this command a job control related thing? */
-      if (words->word->word[0] == '%')
-       {
-         int result;
-
-         if (async)
-           this_command_name = "bg";
-         else
-           this_command_name = "fg";
-
-         last_shell_builtin = this_shell_builtin;
-         this_shell_builtin = builtin_address (this_command_name);
-         result = (*this_shell_builtin) (words);
-         goto return_result;
-       }
-
-      /* One other possiblilty.  The user may want to resume an existing job.
-        If they do, find out whether this word is a candidate for a running
-        job. */
-      {
-       char *auto_resume_value;
-
-       if ((auto_resume_value = get_string_value ("auto_resume")) &&
-           !first_word_quoted &&
-           !words->next &&
-           words->word->word[0] &&
-           !simple_command->redirects &&
-           pipe_in == NO_PIPE &&
-           pipe_out == NO_PIPE &&
-           !async)
-         {
-           char *word = words->word->word;
-           register int i, wl = strlen (word), exact;
-
-           exact = strcmp (auto_resume_value, "exact") == 0;
-           for (i = job_slots - 1; i > -1; i--)
-             {
-               if (jobs[i])
-                 {
-                   register PROCESS *p = jobs[i]->pipe;
-                   do
-                     {
-                       if ((JOBSTATE (i) == JSTOPPED) &&
-                           (strncmp (p->command, word,
-                                     exact ? strlen (p->command) : wl) == 0))
-                         {
-                           int started_status;
-
-                           run_unwind_frame ("simple-command");
-                           last_shell_builtin = this_shell_builtin;
-                           this_shell_builtin = builtin_address ("fg");
-
-                           started_status = start_job (i, 1);
-
-                           if (started_status < 0)
-                             return (EXECUTION_FAILURE);
-                           else
-                             return (started_status);
-                         }
-                       p = p->next;
-                     }
-                   while (p != jobs[i]->pipe);
-                 }
-             }
-         }
-      }
-#endif /* JOB_CONTROL */
-
-      /* Remember the name of this command globally. */
-      this_command_name = words->word->word;
-
-      QUIT;
-
-      /* Not a running job.  Do normal command processing. */
-      maybe_make_export_env ();
-
-      /* This command could be a shell builtin or a user-defined function.
-        If so, and we have pipes, then fork a subshell in here.  Else, just
-        do the command. */
-
-      if (func)
-       builtin = (Function *)NULL;
-      else
-       builtin = find_shell_builtin (this_command_name);
-
-      last_shell_builtin = this_shell_builtin;
-      this_shell_builtin = builtin;
-
-      if (builtin || func)
-       {
-         put_command_name_into_env (this_command_name);
-         if ((pipe_in != NO_PIPE) || (pipe_out != NO_PIPE) || async)
-           {
-             if (make_child (savestring (command_line), async) == 0)
-               {
-                 execute_subshell_builtin_or_function
-                   (words, simple_command->redirects, builtin, func,
-                    pipe_in, pipe_out, async, fds_to_close,
-                    simple_command->flags);
-               }
-             else
-               {
-                 close_pipes (pipe_in, pipe_out);
-                 goto return_result;
-               }
-           }
-         else
-           {
-             result = execute_builtin_or_function
-               (words, builtin, func, simple_command->redirects, fds_to_close,
-                simple_command->flags);
-
-             goto return_result;
-           }
-       }
-
-      execute_disk_command (words, simple_command->redirects, command_line,
-                           pipe_in, pipe_out, async, fds_to_close);
-
-      goto return_result;
-    }
-  else if (pipe_in != NO_PIPE || pipe_out != NO_PIPE || async)
-    {
-      /* We have a null command, but we really want a subshell to take
-        care of it.  Just fork, do piping and redirections, and exit. */
-      if (make_child (savestring (""), async) == 0)
-       {
-         do_piping (pipe_in, pipe_out);
-
-         subshell_environment = 1;
-
-         if (do_redirections (simple_command->redirects, 1, 0, 0) == 0)
-           exit (EXECUTION_SUCCESS);
-         else
-           exit (EXECUTION_FAILURE);
-       }
-      else
-       {
-         close_pipes (pipe_in, pipe_out);
-         result = EXECUTION_SUCCESS;
-         goto return_result;
-       }
-    }
-  else
-    {
-      /* Even if there aren't any command names, pretend to do the
-        redirections that are specified.  The user expects the side
-        effects to take place.  If the redirections fail, then return
-        failure.  Otherwise, if a command substitution took place while
-        expanding the command or a redirection, return the value of that
-        substitution.  Otherwise, return EXECUTION_SUCCESS. */
-
-      if (do_redirections (simple_command->redirects, 0, 0, 0) != 0)
-       result = EXECUTION_FAILURE;
-      else if (old_last_command_subst_pid != last_command_subst_pid)
-       result = last_command_exit_value;
-      else
-       result = EXECUTION_SUCCESS;
-    }
-
- return_result:
-  bind_lastarg (lastarg);
-  run_unwind_frame ("simple-command");
-  return (result);
-}
-
-/* Execute a shell builtin or function in a subshell environment.  This
-   routine does not return; it only calls exit().  If BUILTIN is non-null,
-   it points to a function to call to execute a shell builtin; otherwise
-   VAR points at the body of a function to execute.  WORDS is the arguments
-   to the command, REDIRECTS specifies redirections to perform before the
-   command is executed. */
-static void
-execute_subshell_builtin_or_function (words, redirects, builtin, var,
-                                     pipe_in, pipe_out, async, fds_to_close,
-                                     flags)
-     WORD_LIST *words;
-     REDIRECT *redirects;
-     Function *builtin;
-     SHELL_VAR *var;
-     int pipe_in, pipe_out, async;
-     struct fd_bitmap *fds_to_close;
-     int flags;
-{
-  extern char **temporary_env, **function_env, **copy_array ();
-  extern int login_shell, interactive;
-#if defined (JOB_CONTROL)
-  extern int jobs_builtin ();
-#endif /* JOB_CONTROL */
-
-  /* A subshell is neither a login shell nor interactive. */
-  login_shell = interactive = 0;
-
-  subshell_environment = 1;
-
-#if defined (JOB_CONTROL)
-  /* Eradicate all traces of job control after we fork the subshell, so
-     all jobs begun by this subshell are in the same process group as
-     the shell itself. */
-
-  /* Allow the output of `jobs' to be piped. */
-  if (builtin == jobs_builtin && !async &&
-      (pipe_out != NO_PIPE || pipe_in != NO_PIPE))
-    kill_current_pipeline ();
-  else
-    without_job_control ();
-
-  set_sigchld_handler ();
-#endif /* JOB_CONTROL */
-
-  set_sigint_handler ();
-
-  do_piping (pipe_in, pipe_out);
-
-  if (fds_to_close)
-    close_fd_bitmap (fds_to_close);
-
-  if (do_redirections (redirects, 1, 0, 0) != 0)
-    exit (EXECUTION_FAILURE);
-
-  if (builtin)
-    {
-      extern jmp_buf top_level;
-      int result;
-
-      /* Give builtins a place to jump back to on failure,
-        so we don't go back up to main(). */
-      result = setjmp (top_level);
-
-      if (result == EXITPROG)
-       exit (last_command_exit_value);
-      else if (result)
-       exit (EXECUTION_FAILURE);
-      else
-       exit ((*builtin) (words->next));
-    }
-  else
-    {
-      extern int variable_context, line_number;
-      extern void dispose_command (), dispose_function_env ();
-      COMMAND *fc, *tc;
-      int result, return_val;
-
-      tc = (COMMAND *)function_cell (var);
-      fc = (COMMAND *)NULL;
-
-      remember_args (words->next, 1);
-      line_number = 0;
-#if defined (JOB_CONTROL)
-      stop_pipeline (async, (COMMAND *)NULL);
-#endif
-
-      begin_unwind_frame ("subshell_function_calling");
-      unwind_protect_int (variable_context);
-      unwind_protect_int (return_catch_flag);
-      unwind_protect_jmp_buf (return_catch);
-      add_unwind_protect (dispose_command, fc);
-
-      /* The temporary environment for a function is supposed to apply to
-        all commands executed in the function.  If we have a temporary
-        environment, copy it to the special `function environment' and
-        get rid of the temporary environment. */
-      if (temporary_env)
-       {
-         function_env = copy_array (temporary_env);
-         add_unwind_protect (dispose_function_env, (char *)NULL);
-         dispose_used_env_vars ();
-       }
-      else
-       function_env = (char **)NULL;
-
-      /* We can do this because function bodies are always guaranteed to
-        be group commands, according to the grammar in parse.y.  If we
-        don't do this now, execute_command_internal will graciously fork
-        another subshell for us, and we'll lose contact with the rest of
-        the pipeline and fail to get any SIGPIPE that might be sent. */
-
-      if (tc->type == cm_group)
-       fc = (COMMAND *)copy_command (tc->value.Group->command);
-      else
-       fc = (COMMAND *)copy_command (tc);
-
-      if (fc && (flags & CMD_IGNORE_RETURN))
-       fc->flags |= CMD_IGNORE_RETURN;
-
-      /* result = execute_command (fc); doesn't work.
-        We need to explicitly specify the pipes in and out so that they
-        are closed in all the processes that rely on their being closed.
-        If they are not, it is possible to not get the SIGPIPE that we
-        need to kill all the processes sharing the pipe. */
-
-      variable_context++;
-      return_catch_flag++;
-      return_val = setjmp (return_catch);
-
-      if (return_val)
-       result = return_catch_value;
-      else
-       result =
-         execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close);
-
-      run_unwind_frame ("subshell_function_calling");
-
-      exit (result);
-    }
-}
-
-/* Execute a builtin or function in the current shell context.  If BUILTIN
-   is non-null, it is the builtin command to execute, otherwise VAR points
-   to the body of a function.  WORDS are the command's arguments, REDIRECTS
-   are the redirections to perform.  FDS_TO_CLOSE is the usual bitmap of
-   file descriptors to close.
-
-   If BUILTIN is exec_builtin, the redirections specified in REDIRECTS are
-   not undone before this function returns. */
-static int
-execute_builtin_or_function (words, builtin, var, redirects,
-                            fds_to_close, flags)
-     WORD_LIST *words;
-     Function *builtin;
-     SHELL_VAR *var;
-     REDIRECT *redirects;
-     struct fd_bitmap *fds_to_close;
-     int flags;
-{
-  extern int exec_builtin (), eval_builtin ();
-  extern char **temporary_env, **function_env, **copy_array ();
-  int result = EXECUTION_FAILURE;
-  REDIRECT *saved_undo_list;
-
-  if (do_redirections (redirects, 1, 1, 0) != 0)
-    return (EXECUTION_FAILURE);
-
-  saved_undo_list = redirection_undo_list;
-
-  /* Calling the "exec" builtin changes redirections forever. */
-  if (builtin == exec_builtin)
-    {
-      dispose_redirects (saved_undo_list);
-      saved_undo_list = (REDIRECT *)NULL;
-    }
-  else
-    {
-      begin_unwind_frame ("saved redirects");
-      add_unwind_protect (cleanup_func_redirects, (char *)saved_undo_list);
-    }
-
-  redirection_undo_list = (REDIRECT *)NULL;
-
-  if (builtin)
-    {
-      int old_e_flag = exit_immediately_on_error;
-
-      /* The eval builtin calls parse_and_execute, which does not know about
-        the setting of flags, and always calls the execution functions with
-        flags that will exit the shell on an error if -e is set.  If the
-        eval builtin is being called, and we're supposed to ignore the exit
-        value of the command, we turn the -e flag off ourselves, then
-        restore it when the command completes. */
-      if ((builtin == eval_builtin) && (flags & CMD_IGNORE_RETURN))
-       {
-         begin_unwind_frame ("eval_builtin");
-         unwind_protect_int (exit_immediately_on_error);
-         exit_immediately_on_error = 0;
-       }
-
-      result = ((*builtin) (words->next));
-
-      if ((builtin == eval_builtin) && (flags & CMD_IGNORE_RETURN))
-       {
-         exit_immediately_on_error += old_e_flag;
-         discard_unwind_frame ("eval_builtin");
-       }
-    }
-  else
-    {
-      extern void dispose_command (), dispose_function_env ();
-      extern int pop_context ();
-      extern int line_number;
-      int return_val;
-      COMMAND *tc;
-
-      tc = (COMMAND *)copy_command (function_cell (var));
-      if (tc && (flags & CMD_IGNORE_RETURN))
-       tc->flags |= CMD_IGNORE_RETURN;
-
-      begin_unwind_frame ("function_calling");
-      push_context ();
-      add_unwind_protect (pop_context, (char *)NULL);
-      add_unwind_protect (dispose_command, (char *)tc);
-      unwind_protect_int (return_catch_flag);
-      unwind_protect_int (line_number);
-      unwind_protect_jmp_buf (return_catch);
-
-      /* The temporary environment for a function is supposed to apply to
-        all commands executed in the function.  If we have a temporary
-        environment, copy it to the special `function environment' and
-        get rid of the temporary environment. */
-      if (temporary_env)
-       {
-         function_env = copy_array (temporary_env);
-         add_unwind_protect (dispose_function_env, (char *)NULL);
-         dispose_used_env_vars ();
-       }
-      else
-       function_env = (char **)NULL;
-
-      /* Note the second argument of "1", meaning that we discard
-        the current value of "$*"!  This is apparently the right thing. */
-      remember_args (words->next, 1);
-
-      line_number = 0;
-      return_catch_flag++;
-      return_val =  setjmp (return_catch);
-
-      if (return_val)
-       result = return_catch_value;
-      else
-       result =
-         execute_command_internal (tc, 0, NO_PIPE, NO_PIPE, fds_to_close);
-
-      run_unwind_frame ("function_calling");
-    }
-
-  redirection_undo_list = saved_undo_list;
-  if (builtin != exec_builtin)
-    discard_unwind_frame ("saved redirects");
-  do_redirections (redirection_undo_list, 1, 0, 0);
-
-  return (result);
-}
-
-/* Execute a simple command that is hopefully defined in a disk file
-   somewhere.
-
-   1) fork ()
-   2) connect pipes
-   3) look up the command
-   4) do redirections
-   5) execve ()
-   6) If the execve failed, see if the file has executable mode set.
-   If so, and it isn't a directory, then execute its contents as
-   a shell script.
-
-   Note that the filename hashing stuff has to take place up here,
-   in the parent.  This is probably why the Bourne style shells
-   don't handle it, since that would require them to go through
-   this gnarly hair, for no good reason.  */
-static void
-execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
-                     async, fds_to_close)
-     WORD_LIST *words;
-     REDIRECT *redirects;
-     char *command_line;
-     int pipe_in, pipe_out, async;
-     struct fd_bitmap *fds_to_close;
-{
-  char **make_word_array (), *find_user_command (), *find_hashed_filename ();
-  char *hashed_file, *command, **args;
-
-#if defined (RESTRICTED_SHELL)
-  extern int restricted;
-
-  if (restricted && strchr (words->word->word, '/'))
-    {
-      report_error ("%s: restricted: cannot specify `/' in command names",
-                   words->word->word);
-      last_command_exit_value = EXECUTION_FAILURE;
-      return;
-    }
-#endif /* RESTRICTED_SHELL */
-
-  hashed_file = command = (char *)NULL;
-
-  /* Don't waste time trying to find hashed data for a pathname
-     that is already completely specified. */
-
-  if (!absolute_program (words->word->word))
-    hashed_file = find_hashed_filename (words->word->word);
-
-  /* XXX - this could be a big performance hit... */
-  /* If a command found in the hash table no longer exists, we need to
-     look for it in $PATH. */
-  if (hashed_file)
-    {
-      int st;
-
-      st = file_status (hashed_file);
-      if ((st & (FS_EXISTS | FS_EXECABLE)) != (FS_EXISTS | FS_EXECABLE))
-       {
-         remove_hashed_filename (words->word->word);
-         hashed_file = (char *) NULL;
-       }
-    }
-    
-  if (hashed_file)
-    command = savestring (hashed_file);
-  else
-    {
-      /* A command containing a slash is not looked up in PATH. */
-      if (absolute_program (words->word->word))
-       command = savestring (words->word->word);
-      else
-       {
-         command = find_user_command (words->word->word);
-
-         /* A command name containing a slash is not saved in the
-            hash table. */
-         if (command && !hashing_disabled)
-           {
-             extern int dot_found_in_search;
-
-             remember_filename
-               (words->word->word, command, dot_found_in_search);
-
-             /* Increase the number of hits to 1. */
-             find_hashed_filename (words->word->word);
-           }
-       }
-    }
-
-  if (command)
-    put_command_name_into_env (command);
-
-  /* We have to make the child before we check for the non-existance
-     of COMMAND, since we want the error messages to be redirected. */
-  if (make_child (savestring (command_line), async) == 0)
-    {
-      do_piping (pipe_in, pipe_out);
-
-      /* Execve expects the command name to be in args[0].  So we
-        leave it there, in the same format that the user used to
-        type it in. */
-      args = make_word_array (words);
-
-      if (async)
-       {
-         begin_unwind_frame ("async_redirections");
-         unwind_protect_int (interactive);
-         interactive = 0;
-       }
-
-      subshell_environment = 1;
-
-      if (do_redirections (redirects, 1, 0, 0) != 0)
-       {
-#if defined (PROCESS_SUBSTITUTION)
-         /* Try to remove named pipes that may have been created as the
-            result of redirections. */
-         unlink_fifo_list ();
-#endif /* PROCESS_SUBSTITUTION */
-         exit (EXECUTION_FAILURE);
-       }
-
-      if (async)
-       run_unwind_frame ("async_redirections");
-
-      if (!command)
-       {
-         report_error ("%s: command not found", args[0]);
-         exit (EXECUTION_FAILURE);
-       }
-
-      /* This functionality is now provided by close-on-exec of the
-        file descriptors manipulated by redirection and piping.
-        Some file descriptors still need to be closed in all children
-        because of the way bash does pipes; fds_to_close is a 
-        bitmap of all such file descriptors. */
-      if (fds_to_close)
-       close_fd_bitmap (fds_to_close);
-
-      exit (shell_execve (command, args, export_env));
-    }
-  else
-    {
-      /* Make sure that the pipes are closed in the parent. */
-      close_pipes (pipe_in, pipe_out);
-      if (command)
-       free (command);
-    }
-}
-
-/* If the operating system on which we're running does not handle
-   the #! executable format, then help out.  SAMPLE is the text read
-   from the file, SAMPLE_LEN characters.  COMMAND is the name of
-   the script; it and ARGS, the arguments given by the user, will
-   become arguments to the specified interpreter.  ENV is the environment
-   to pass to the interpreter.
-
-   The word immediately following the #! is the interpreter to execute.
-   A single argument to the interpreter is allowed. */
-static int
-execute_shell_script (sample, sample_len, command, args, env)
-     unsigned char *sample;
-     int sample_len;
-     char *command;
-     char **args, **env;
-{
-  extern char *shell_name;
-  register int i;
-  char *execname, *firstarg;
-  int start, size_increment, larry;
-
-  /* Find the name of the interpreter to exec. */
-  for (i = 2; whitespace (sample[i]) && i < sample_len; i++)
-    ;
-
-  for (start = i;
-       !whitespace (sample[i]) && sample[i] != '\n' && i < sample_len;
-       i++)
-    ;
-
-  execname = (char *)xmalloc (1 + (i - start));
-  strncpy (execname, sample + start, i - start);
-  execname[i - start] = '\0';
-  size_increment = 1;
-
-  /* Now the argument, if any. */
-  firstarg = (char *)NULL;
-  for (start = i;
-       whitespace (sample[i]) && sample[i] != '\n' && i < sample_len;
-       i++)
-    ;
-
-  /* If there is more text on the line, then it is an argument for the
-     interpreter. */
-  if (i < sample_len && sample[i] != '\n' && !whitespace (sample[i]))
-    {
-      for (start = i;
-          !whitespace (sample[i]) && sample[i] != '\n' && i < sample_len;
-          i++)
-       ;
-      firstarg = (char *)xmalloc (1 + (i - start));
-      strncpy (firstarg, sample + start, i - start);
-      firstarg[i - start] = '\0';
-
-      size_increment = 2;
-    }
-
-  larry = array_len (args) + size_increment;
-
-  args = (char **)xrealloc (args, (1 + larry) * sizeof (char *));
-
-  for (i = larry - 1; i; i--)
-    args[i] = args[i - size_increment];
-
-  args[0] = execname;
-  if (firstarg)
-    {
-      args[1] = firstarg;
-      args[2] = command;
-    }
-  else
-    args[1] = command;
-
-  args[larry] = (char *)NULL;
-
-  return (shell_execve (execname, args, env));
-}
-
-/* Call execve (), handling interpreting shell scripts, and handling
-   exec failures. */
-int
-shell_execve (command, args, env)
-     char *command;
-     char **args, **env;
-{
-#if defined (isc386) && defined (_POSIX_SOURCE)
-  __setostype (0);             /* Turn on USGr3 semantics. */
-  execve (command, args, env);
-  __setostype (1);             /* Turn the POSIX semantics back on. */
-#else
-  execve (command, args, env);
-#endif /* !(isc386 && _POSIX_SOURCE) */
-
-  /* If we get to this point, then start checking out the file.
-     Maybe it is something we can hack ourselves. */
-  {
-    struct stat finfo;
-
-    if (errno != ENOEXEC)
-      {
-       if ((stat (command, &finfo) == 0) &&
-           (S_ISDIR (finfo.st_mode)))
-         report_error ("%s: is a directory", args[0]);
-       else
-         file_error (command);
-
-       return (EXECUTION_FAILURE);
-      }
-    else
-      {
-       /* This file is executable.
-          If it begins with #!, then help out people with losing operating
-          systems.  Otherwise, check to see if it is a binary file by seeing
-          if the first line (or up to 30 characters) are in the ASCII set.
-          Execute the contents as shell commands. */
-       extern char *shell_name;
-       int larray = array_len (args) + 1;
-       int i, should_exec = 0;
-
-       {
-         int fd = open (command, O_RDONLY);
-         if (fd != -1)
-           {
-             unsigned char sample[80];
-             int sample_len = read (fd, &sample[0], 80);
-
-             close (fd);
-
-             if (sample_len == 0)
-               return (EXECUTION_SUCCESS);
-
-             /* Is this supposed to be an executable script? */
-             /* If so, the format of the line is "#! interpreter [argument]".
-                A single argument is allowed.  The BSD kernel restricts
-                the length of the entire line to 32 characters (32 bytes
-                being the size of the BSD exec header), but we allow 80
-                characters. */
-
-             if (sample_len > 0 && sample[0] == '#' && sample[1] == '!')
-               return (execute_shell_script (sample, sample_len, command,
-                                             args, env));
-#if defined (NOTDEF)
-#if defined (HAVE_CSH) && ( defined (Bsd) || defined (Ultrix) )
-             /* If this system has Csh, then keep the old
-                BSD semantics. */
-             else if (sample_len > 0 && sample[0] == '#')
-               {
-                 /* Scripts starting with a # are for Csh. */
-                 shell_name = savestring ("/bin/csh");
-                 should_exec = 1;
-               }
-#endif /* HAVE_CSH */
-#endif /* NOTDEF */
-             else if ((sample_len != -1) &&
-                       check_binary_file (sample, sample_len))
-               {
-                 report_error ("%s: cannot execute binary file", command);
-                 return (EX_BINARY_FILE);
-               }
-           }
-       }
-#if defined (JOB_CONTROL)
-       /* Forget about the way that job control was working. We are
-          in a subshell. */
-       without_job_control ();
-#endif /* JOB_CONTROL */
-#if defined (ALIAS)
-       /* Forget about any aliases that we knew of.  We are in a subshell. */
-       delete_all_aliases ();
-#endif /* ALIAS */
-
-#if defined (JOB_CONTROL)
-       set_sigchld_handler ();
-#endif /* JOB_CONTROL */
-        set_sigint_handler ();
-
-       /* Insert the name of this shell into the argument list. */
-       args = (char **)xrealloc (args, (1 + larray) * sizeof (char *));
-
-       for (i = larray - 1; i; i--)
-         args[i] = args[i - 1];
-
-       args[0] = shell_name;
-       args[1] = command;
-       args[larray] = (char *)NULL;
-
-       if (args[0][0] == '-')
-         args[0]++;
-
-       if (should_exec)
-         {
-           struct stat finfo;
-
-#if defined (isc386) && defined (_POSIX_SOURCE)
-           __setostype (0);    /* Turn on USGr3 semantics. */
-           execve (shell_name, args, env);
-           __setostype (1);    /* Turn the POSIX semantics back on. */
-#else
-           execve (shell_name, args, env);
-#endif /* isc386 && _POSIX_SOURCE */
-
-           /* Oh, no!  We couldn't even exec this! */
-           if ((stat (args[0], &finfo) == 0) && (S_ISDIR (finfo.st_mode)))
-             report_error ("%s: is a directory", args[0]);
-           else
-             file_error (args[0]);
-
-           return (EXECUTION_FAILURE);
-         }
-       else
-         {
-           extern jmp_buf subshell_top_level;
-           extern int subshell_argc;
-           extern char **subshell_argv;
-           extern char **subshell_envp;
-
-           subshell_argc = larray;
-           subshell_argv = args;
-           subshell_envp = env;
-           longjmp (subshell_top_level, 1);
-         }
-      }
-  }
-}
-
-#if defined (PROCESS_SUBSTITUTION)
-void
-close_all_files ()
-{
-  register int i, fd_table_size;
-
-  fd_table_size = getdtablesize ();
-
-  for (i = 3; i < fd_table_size; i++)
-    close (i);
-}
-#endif /* PROCESS_SUBSTITUTION */
-
-static void
-close_pipes (in, out)
-     int in, out;
-{
-  if (in >= 0) close (in);
-  if (out >= 0) close (out);
-}
-
-/* Redirect input and output to be from and to the specified pipes.
-   NO_PIPE and REDIRECT_BOTH are handled correctly. */
-static void
-do_piping (pipe_in, pipe_out)
-     int pipe_in, pipe_out;
-{
-  if (pipe_in != NO_PIPE)
-    {
-      dup2 (pipe_in, 0);
-      close (pipe_in);
-    }
-  if (pipe_out != NO_PIPE)
-    {
-      dup2 (pipe_out, 1);
-      close (pipe_out);
-
-      if (pipe_out == REDIRECT_BOTH)
-       dup2 (1, 2);
-    }
-}
-
-/* Defined in flags.c.  Non-zero means don't overwrite existing files. */
-extern int noclobber;
-
-#define AMBIGUOUS_REDIRECT  -1
-#define NOCLOBBER_REDIRECT  -2
-#define RESTRICTED_REDIRECT -3 /* Only can happen in restricted shells. */
-
-/* Perform the redirections on LIST.  If FOR_REAL, then actually make
-   input and output file descriptors, otherwise just do whatever is
-   neccessary for side effecting.  INTERNAL says to remember how to
-   undo the redirections later, if non-zero.  If SET_CLEXEC is non-zero,
-   file descriptors opened in do_redirection () have their close-on-exec
-   flag set. */
-static int
-do_redirections (list, for_real, internal, set_clexec)
-     REDIRECT *list;
-     int for_real, internal;
-{
-  register int error;
-  register REDIRECT *temp = list;
-
-  if (internal && redirection_undo_list)
-    {
-      dispose_redirects (redirection_undo_list);
-      redirection_undo_list = (REDIRECT *)NULL;
-    }
-
-  while (temp)
-    {
-      extern char *strerror ();
-
-      error = do_redirection_internal (temp, for_real, internal, set_clexec);
-
-      if (error)
-       {
-         char *redirection_expand (), *itos ();
-         char *filename;
-
-         if (expandable_redirection_filename (temp))
-           {
-             filename = redirection_expand (temp->redirectee.filename);
-             if (!filename)
-               filename = savestring ("");
-           }
-         else
-           filename = itos (temp->redirectee.dest);
-
-         switch (error)
-           {
-           case AMBIGUOUS_REDIRECT:
-             report_error ("%s: Ambiguous redirect", filename);
-             break;
-
-           case NOCLOBBER_REDIRECT:
-             report_error ("%s: Cannot clobber existing file", filename);
-             break;
-
-#if defined (RESTRICTED_SHELL)
-           case RESTRICTED_REDIRECT:
-             report_error ("%s: output redirection restricted", filename);
-             break;
-#endif /* RESTRICTED_SHELL */
-
-           default:
-             report_error ("%s: %s", filename, strerror (error));
-             break;
-           }
-
-         free (filename);
-         return (error);
-       }
-
-      temp = temp->next;
-    }
-  return (0);
-}
-
-/* Return non-zero if the redirection pointed to by REDIRECT has a
-   redirectee.filename that can be expanded. */
-static int
-expandable_redirection_filename (redirect)
-     REDIRECT *redirect;
-{
-  int result;
-
-  switch (redirect->instruction)
-    {
-    case r_output_direction:
-    case r_appending_to:
-    case r_input_direction:
-    case r_inputa_direction:
-    case r_err_and_out:
-    case r_input_output:
-    case r_output_force:
-    case r_duplicating_input_word:
-    case r_duplicating_output_word:
-      result = 1;
-      break;
-
-    default:
-      result = 0;
-    }
-  return (result);
-}
-\f
-/* Expand the word in WORD returning a string.  If WORD expands to
-   multiple words (or no words), then return NULL. */
-char *
-redirection_expand (word)
-     WORD_DESC *word;
-{
-  char *result;
-  WORD_LIST *make_word_list (), *expand_words_no_vars ();
-  WORD_LIST *tlist1, *tlist2;
-
-  tlist1 = make_word_list (copy_word (word), (WORD_LIST *)NULL);
-  tlist2 = expand_words_no_vars (tlist1);
-  dispose_words (tlist1);
-
-  if (!tlist2 || tlist2->next)
-    {
-      /* We expanded to no words, or to more than a single word.
-        Dispose of the word list and return NULL. */
-      if (tlist2)
-       dispose_words (tlist2);
-      return ((char *)NULL);
-    }
-  result = string_list (tlist2);
-  dispose_words (tlist2);
-
-  return (result);
-}
-
-/* Do the specific redirection requested.  Returns errno in case of error.
-   If FOR_REAL is zero, then just do whatever is neccessary to produce the
-   appropriate side effects.   REMEMBERING, if non-zero, says to remember
-   how to undo each redirection.  If SET_CLEXEC is non-zero, then
-   we set all file descriptors > 2 that we open to be close-on-exec.  */
-static int
-do_redirection_internal (redirect, for_real, remembering, set_clexec)
-     REDIRECT *redirect;
-     int for_real, remembering;
-{
-  WORD_DESC *redirectee = redirect->redirectee.filename;
-  int fd, redirector = redirect->redirector;
-  char *redirectee_word;
-  enum r_instruction ri = redirect->instruction;
-  REDIRECT *new_redirect;
-
-  if (ri == r_duplicating_input_word || ri == r_duplicating_output_word)
-    {
-      /* We have [N]>&WORD or [N]<&WORD.  Expand WORD, then translate
-        the redirection into a new one and continue. */
-      redirectee_word = redirection_expand (redirectee);
-
-      if (redirectee_word[0] == '-' && redirectee_word[1] == '\0')
-       {
-         new_redirect = make_redirection (redirector, r_close_this, 0);
-       }
-      else if (all_digits (redirectee_word))
-       {
-         if (ri == r_duplicating_input_word)
-           {
-             new_redirect = make_redirection
-               (redirector, r_duplicating_input, atoi (redirectee_word));
-           }
-         else
-           {
-             new_redirect = make_redirection
-               (redirector, r_duplicating_output, atoi (redirectee_word));
-           }
-       }
-      else if (ri == r_duplicating_output_word && redirector == 1)
-       {
-         new_redirect = make_redirection
-           (1, r_err_and_out, make_word (redirectee_word));
-       }
-      else
-       {
-         free (redirectee_word);
-         return (AMBIGUOUS_REDIRECT);
-       }
-
-      free (redirectee_word);
-
-      /* Set up the variables needed by the rest of the function from the
-        new redirection. */
-      if (new_redirect->instruction == r_err_and_out)
-       {
-         char *alloca_hack;
-
-         /* Copy the word without allocating any memory that must be
-            explicitly freed. */
-         redirectee = (WORD_DESC *)alloca (sizeof (WORD_DESC));
-         bcopy (new_redirect->redirectee.filename,
-                redirectee, sizeof (WORD_DESC));
-
-         alloca_hack = (char *)
-           alloca (1 + strlen (new_redirect->redirectee.filename->word));
-         redirectee->word = alloca_hack;
-         strcpy (redirectee->word, new_redirect->redirectee.filename->word);
-       }
-      else
-       /* It's guaranteed to be an integer, and shouldn't be freed. */
-       redirectee = new_redirect->redirectee.filename;
-
-      redirector = new_redirect->redirector;
-      ri = new_redirect->instruction;
-
-      /* Overwrite the flags element of the old redirect with the new value. */
-      redirect->flags = new_redirect->flags;
-      dispose_redirects (new_redirect);
-    }
-
-  switch (ri)
-    {
-    case r_output_direction:
-    case r_appending_to:
-    case r_input_direction:
-    case r_inputa_direction:
-    case r_err_and_out:                /* command &>filename */
-    case r_input_output:
-    case r_output_force:
-
-      if (!(redirectee_word = redirection_expand (redirectee)))
-       return (AMBIGUOUS_REDIRECT);
-
-#if defined (RESTRICTED_SHELL)
-      if (restricted && (ri == r_output_direction ||
-                        ri == r_input_output ||
-                        ri == r_err_and_out ||
-                        ri == r_appending_to ||
-                        ri == r_output_force))
-       {
-         free(redirectee_word);
-         return (RESTRICTED_REDIRECT);
-       }
-#endif /* RESTRICTED_SHELL */
-
-      /* If we are in noclobber mode, you are not allowed to overwrite
-        existing files.  Check first. */
-      if (noclobber && (ri == r_output_direction ||
-                     ri == r_input_output ||
-                     ri == r_err_and_out))
-      {
-       struct stat buf;
-       int stat_result;
-
-       stat_result = stat (redirectee_word, &buf);
-       if ((stat_result == 0) && (S_ISREG (buf.st_mode)))
-         {
-           free (redirectee_word);
-           return (NOCLOBBER_REDIRECT);
-         }
-       /* If the file was not there, make sure we use exclusive open so
-          that if it's created before we open it, our open will fail. */
-       if (stat_result != 0)
-         redirect->flags |= O_EXCL;
-       fd = open (redirectee_word, redirect->flags, 0666);
-       if (fd < 0 && errno == EEXIST)
-         {
-           free (redirectee_word);
-           return (NOCLOBBER_REDIRECT);
-         }
-      }
-    else
-      {
-       fd = open (redirectee_word, redirect->flags, 0666);
-#if defined (AFS_CREATE_BUG)
-       if (fd < 0 && errno == EACCES)
-         fd = open (redirectee_word, (redirect->flags & ~O_CREAT), 0666);
-#endif /* AFS_CREATE_BUG */
-      }
-
-    free (redirectee_word);
-
-    if (fd < 0 )
-      return (errno);
-
-      if (for_real)
-       {
-         if (remembering)
-           /* Only setup to undo it if the thing to undo is active. */
-           if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1))
-             add_undo_redirect (redirector);
-           else
-             add_undo_close_redirect (redirector);
-
-         if ((fd != redirector) && (dup2 (fd, redirector) < 0))
-           return (errno);
-
-#if defined (BUFFERED_INPUT)
-         if (ri == r_input_direction || ri == r_inputa_direction ||
-             ri == r_input_output)
-           duplicate_buffered_stream (fd, redirector);
-#endif /* BUFFERED_INPUT */
-
-         /*
-          * If we're remembering, then this is the result of a while, for
-          * or until loop with a loop redirection, or a function/builtin
-          * executing in the parent shell with a redirection.  In the
-          * function/builtin case, we want to set all file descriptors > 2
-          * to be close-on-exec to duplicate the effect of the old
-          * for i = 3 to NOFILE close(i) loop.  In the case of the loops,
-          * both sh and ksh leave the file descriptors open across execs.
-          * The Posix standard mentions only the exec builtin.
-          */
-         if (set_clexec && (redirector > 2))
-           SET_CLOSE_ON_EXEC (redirector);
-       }
-
-      if (fd != redirector)
-       {
-#if defined (BUFFERED_INPUT)
-         if (ri == r_input_direction || ri == r_inputa_direction ||
-             ri == r_input_output)
-           close_buffered_fd (fd);
-         else
-#endif /* !BUFFERED_INPUT */
-           close (fd);         /* Don't close what we just opened! */
-       }
-
-      /* If we are hacking both stdout and stderr, do the stderr
-        redirection here. */
-      if (ri == r_err_and_out)
-       {
-         if (for_real)
-           {
-             if (remembering)
-               add_undo_redirect (2);
-             if (dup2 (1, 2) < 0)
-               return (errno);
-           }
-       }
-      break;
-
-    case r_reading_until:
-    case r_deblank_reading_until:
-      {
-       /* REDIRECTEE is a pointer to a WORD_DESC containing the text of
-          the new input.  Place it in a temporary file. */
-       int document_index = 0;
-       char *document = (char *)NULL;
-
-       /* Expand the text if the word that was specified had no quoting.
-          Note that the text that we expand is treated exactly as if it
-          were surrounded by double-quotes.  */
-
-       if (!redirectee)
-         document = savestring ("");
-       else
-         {
-           if (!redirectee->quoted)
-             {
-               WORD_LIST *temp_word_list =
-                 (WORD_LIST *)expand_string (redirectee->word,
-                                             Q_HERE_DOCUMENT);
-
-               document = string_list (temp_word_list);
-               if (!document)
-                 document = savestring ("");
-               dispose_words (temp_word_list);
-             }
-           else
-             {
-               document = redirectee->word;
-             }
-           document_index = strlen (document);
-
-           {
-             char filename[40];
-             pid_t pid = getpid ();
-
-             /* Make the filename for the temp file. */
-             sprintf (filename, "/tmp/t%d-sh", pid);
-
-             fd = open (filename, O_TRUNC | O_WRONLY | O_CREAT, 0666);
-             if (fd < 0)
-               {
-                 if (!redirectee->quoted)
-                   free (document);
-                 return (errno);
-               }
-
-             write (fd, document, document_index);
-             close (fd);
-
-             if (!redirectee->quoted)
-               free (document);
-
-             /* Make the document really temporary.  Also make it the
-                input. */
-             fd = open (filename, O_RDONLY, 0666);
-
-             if (unlink (filename) < 0 || fd < 0)
-               return (errno);
-
-             if (for_real)
-               {
-                 if (remembering)
-                   /* Only setup to undo it if the thing to undo is active. */
-                   if ((fd != redirector) &&
-                       (fcntl (redirector, F_GETFD, 0) != -1))
-                     add_undo_redirect (redirector);
-                   else
-                     add_undo_close_redirect (redirector);
-
-                 if (dup2 (fd, redirector) < 0)
-                   return (errno);
-
-#if defined (BUFFERED_INPUT)
-                 duplicate_buffered_stream (fd, redirector);
-#endif
-
-                 if (set_clexec && (redirector > 2))
-                   SET_CLOSE_ON_EXEC (redirector);
-               }
-
-#if defined (BUFFERED_INPUT)
-             close_buffered_fd (fd);
-#else
-             close (fd);
-#endif
-           }
-         }
-      }
-      break;
-
-    case r_duplicating_input:
-    case r_duplicating_output:
-      if (for_real && ((int)redirectee != redirector))
-       {
-         if (remembering)
-           /* Only setup to undo it if the thing to undo is active. */
-           if (fcntl (redirector, F_GETFD, 0) != -1)
-             add_undo_redirect (redirector);
-           else
-             add_undo_close_redirect (redirector);
-
-         /* This is correct.  2>&1 means dup2 (1, 2); */
-         if (dup2 ((int)redirectee, redirector) < 0)
-           return (errno);
-
-#if defined (BUFFERED_INPUT)
-         if (ri == r_duplicating_input)
-           duplicate_buffered_stream ((int)redirectee, redirector);
-#endif /* BUFFERED_INPUT */
-
-         /* First duplicate the close-on-exec state of redirectee.  dup2
-            leaves the flag unset on the new descriptor, which means it
-            stays open.  Only set the close-on-exec bit for file descriptors
-            greater than 2 in any case, since 0-2 should always be open
-            unless closed by something like `exec 2<&-'. */
-         /* if ((already_set || set_unconditionally) && (ok_to_set))
-               set_it () */
-         if (((fcntl ((int)redirectee, F_GETFD, 0) == 1) || set_clexec) &&
-              (redirector > 2))
-           SET_CLOSE_ON_EXEC (redirector);
-       }
-      break;
-
-    case r_close_this:
-      if (for_real)
-       {
-         if (remembering && (fcntl (redirector, F_GETFD, 0) != -1))
-           add_undo_redirect (redirector);
-
-#if defined (BUFFERED_INPUT)
-         close_buffered_fd (redirector);
-#else /* !BUFFERED_INPUT */
-         close (redirector);
-#endif /* !BUFFERED_INPUT */
-       }
-      break;
-    }
-  return (0);
-}
-
-#define SHELL_FD_BASE  10
-
-/* Remember the file descriptor associated with the slot FD,
-   on REDIRECTION_UNDO_LIST.  Note that the list will be reversed
-   before it is executed. */
-static int
-add_undo_redirect (fd)
-     int fd;
-{
-  int new_fd, clexec_flag;
-  REDIRECT *new_redirect, *closer;
-
-  new_fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE);
-
-  if (new_fd < 0)
-    {
-      file_error ("redirection error");
-      return (-1);
-    }
-  else
-    {
-      clexec_flag = fcntl (fd, F_GETFD, 0);
-      closer = make_redirection (new_fd, r_close_this, 0);
-      new_redirect = make_redirection (fd, r_duplicating_input, new_fd);
-      new_redirect->next = closer;
-      closer->next = redirection_undo_list;
-      redirection_undo_list = new_redirect;
-      /*
-       * File descriptors used only for saving others should always be
-       * marked close-on-exec.  Unfortunately, we have to preserve the
-       * close-on-exec state of the file descriptor we are saving, since
-       * fcntl (F_DUPFD) sets the new file descriptor to remain open
-       * across execs.  If, however, the file descriptor whose state we
-       * are saving is <= 2, we can just set the close-on-exec flag,
-       * because file descriptors 0-2 should always be open-on-exec,
-       * and the restore above in do_redirection() will take care of it.
-       */
-      if (clexec_flag || fd < 3)
-       SET_CLOSE_ON_EXEC (new_fd);
-    }
-  return (0);
-}
-
-/* Set up to close FD when we are finished with the current command
-   and its redirections. */
-static void
-add_undo_close_redirect (fd)
-     int fd;
-{
-  REDIRECT *closer;
-
-  closer = make_redirection (fd, r_close_this, 0);
-  closer->next = redirection_undo_list;
-  redirection_undo_list = closer;
-}
-
-intern_function (name, function)
-     WORD_DESC *name;
-     COMMAND *function;
-{
-  SHELL_VAR *var;
-
-  if (!check_identifier (name))
-    return (EXECUTION_FAILURE);
-
-  var = find_function (name->word);
-  if (var && readonly_p (var))
-    {
-      report_error ("%s: readonly function", var->name);
-      return (EXECUTION_FAILURE);
-    }
-
-  bind_function (name->word, function);
-  return (EXECUTION_SUCCESS);
-}
-
-/* Make sure that identifier is a valid shell identifier, i.e.
-   does not contain a dollar sign, nor is quoted in any way.  Nor
-   does it consist of all digits. */
-check_identifier (word)
-     WORD_DESC *word;
-{
-  if (word->dollar_present || word->quoted || all_digits (word->word))
-    {
-      report_error ("`%s' is not a valid identifier", word->word);
-      return (0);
-    }
-  else
-    return (1);
-}
-
-#define u_mode_bits(x) (((x) & 0000700) >> 6)
-#define g_mode_bits(x) (((x) & 0000070) >> 3)
-#define o_mode_bits(x) (((x) & 0000007) >> 0)
-#define X_BIT(x) (x & 1)
-
-/* Return some flags based on information about this file.
-   The EXISTS bit is non-zero if the file is found.
-   The EXECABLE bit is non-zero the file is executble.
-   Zero is returned if the file is not found. */
-int
-file_status (name)
-     char *name;
-{
-  struct stat finfo;
-  static int user_id = -1;
-
-  /* Determine whether this file exists or not. */
-  if (stat (name, &finfo) < 0)
-    return (0);
-
-  /* If the file is a directory, then it is not "executable" in the
-     sense of the shell. */
-  if (S_ISDIR (finfo.st_mode))
-    return (FS_EXISTS);
-
-  /* Find out if the file is actually executable.  By definition, the
-     only other criteria is that the file has an execute bit set that
-     we can use. */
-  if (user_id == -1)
-    user_id = geteuid ();
-
-  /* Root only requires execute permission for any of owner, group or
-     others to be able to exec a file. */
-  if (user_id == 0)
-    {
-      int bits;
-
-      bits = (u_mode_bits (finfo.st_mode) |
-             g_mode_bits (finfo.st_mode) |
-             o_mode_bits (finfo.st_mode));
-
-      if (X_BIT (bits))
-       return (FS_EXISTS | FS_EXECABLE);
-    }
-
-  /* If we are the owner of the file, the owner execute bit applies. */
-  if (user_id == finfo.st_uid && X_BIT (u_mode_bits (finfo.st_mode)))
-    return (FS_EXISTS | FS_EXECABLE);
-
-  /* If we are in the owning group, the group permissions apply. */
-  if (group_member (finfo.st_gid) && X_BIT (g_mode_bits (finfo.st_mode)))
-    return (FS_EXISTS | FS_EXECABLE);
-
-  /* If `others' have execute permission to the file, then so do we,
-     since we are also `others'. */
-  if (X_BIT (o_mode_bits (finfo.st_mode)))
-    return (FS_EXISTS | FS_EXECABLE);
-  else
-    return (FS_EXISTS);
-}
-
-/* Return non-zero if FILE exists and is executable.
-   Note that this function is the definition of what an
-   executable file is; do not change this unless YOU know
-   what an executable file is. */
-int
-executable_file (file)
-     char *file;
-{
-  if (file_status (file) & FS_EXECABLE)
-    return (1);
-  else
-    return (0);
-}
-
-/* DOT_FOUND_IN_SEARCH becomes non-zero when find_user_command ()
-   encounters a `.' as the directory pathname while scanning the
-   list of possible pathnames; i.e., if `.' comes before the directory
-   containing the file of interest. */
-int dot_found_in_search = 0;
-
-/* Locate the executable file referenced by NAME, searching along
-   the contents of the shell PATH variable.  Return a new string
-   which is the full pathname to the file, or NULL if the file
-   couldn't be found.  If a file is found that isn't executable,
-   and that is the only match, then return that. */
-char *
-find_user_command (name)
-     char *name;
-{
-  return (find_user_command_internal (name, FS_EXEC_PREFERRED));
-}
-
-/* Locate the file referenced by NAME, searching along the contents
-   of the shell PATH variable.  Return a new string which is the full
-   pathname to the file, or NULL if the file couldn't be found.  This
-   returns the first file found. */
-char *
-find_path_file (name)
-     char *name;
-{
-  return (find_user_command_internal (name, FS_EXISTS));
-}
-
-static char *
-find_user_command_internal (name, flags)
-     char *name;
-     int flags;
-{
-  char *path_list = (char *)NULL;
-  SHELL_VAR *var;
-
-  /* Search for the value of PATH in both the temporary environment, and
-     in the regular list of variables. */
-  if (var = find_variable_internal ("PATH", 1))
-    path_list = value_cell (var);
-
-  if (!path_list)
-    return (savestring (name));
-
-  return (find_user_command_in_path (name, path_list, flags));
-}
-
-/* Return the next element from PATH_LIST, a colon separated list of
-   paths.  PATH_INDEX_POINTER is the address of an index into PATH_LIST;
-   the index is modified by this function.
-   Return the next element of PATH_LIST or NULL if there are no more. */
-static char *
-get_next_path_element (path_list, path_index_pointer)
-     char *path_list;
-     int *path_index_pointer;
-{
-  extern char *extract_colon_unit ();
-  char *path;
-
-  path = extract_colon_unit (path_list, path_index_pointer);
-
-  if (!path)
-    return (path);
-
-  if (!*path)
-    {
-      free (path);
-      path = savestring (".");
-    }
-
-  return (path);
-}
-
-char *
-user_command_matches (name, flags, state)
-     char *name;
-     int flags, state;
-{
-  register int i;
-  char *path_list;
-  int  path_index;
-  char *path_element;
-  char *match;
-  static char **match_list = NULL;
-  static int match_list_size = 0;
-  static int match_index = 0;
-
-  if (!state)
-    {
-      /* Create the list of matches. */
-      if (!match_list)
-       {
-         match_list =
-           (char **) xmalloc ((match_list_size = 5) * sizeof(char *));
-
-         for (i = 0; i < match_list_size; i++)
-           match_list[i] = 0;
-       }
-
-      /* Clear out the old match list. */
-      for (i = 0; i < match_list_size; i++)
-       match_list[i] = NULL;
-
-      /* We haven't found any files yet. */
-      match_index = 0;
-
-      path_list = get_string_value ("PATH");
-      path_index = 0;
-
-      while (path_list && path_list[path_index])
-       {
-         char *find_user_command_in_path ();
-
-         path_element = get_next_path_element (path_list, &path_index);
-
-         if (!path_element)
-           break;
-
-         match = find_user_command_in_path (name, path_element, flags);
-
-         free (path_element);
-
-         if (!match)
-           continue;
-
-         if (match_index + 1 == match_list_size)
-           match_list = (char **)xrealloc
-             (match_list, ((match_list_size += 10) + 1) * sizeof (char *));
-         match_list[match_index++] = match;
-         match_list[match_index] = (char *)NULL;
-       }
-
-      /* We haven't returned any strings yet. */
-      match_index = 0;
-    }
-
-  match = match_list[match_index];
-
-  if (match)
-    match_index++;
-
-  return (match);
-}
-
-/* Return 1 if PATH1 and PATH2 are the same file.  This is kind of
-   expensive.  If non-NULL STP1 and STP2 point to stat structures
-   corresponding to PATH1 and PATH2, respectively. */
-int
-same_file (path1, path2, stp1, stp2)
-     char *path1, *path2;
-     struct stat *stp1, *stp2;
-{
-  struct stat st1, st2;
-
-  if (stp1 == NULL)
-    {
-      if (stat (path1, &st1) != 0)
-       return (0);
-      stp1 = &st1;
-    }
-
-  if (stp2 == NULL)
-    {
-      if (stat (path2, &st2) != 0)
-       return (0);
-      stp2 = &st2;
-    }
-
-  return ((stp1->st_dev == stp2->st_dev) && (stp1->st_ino == stp2->st_ino));
-}
-
-/* This does the dirty work for find_path_file () and find_user_command ().
-   NAME is the name of the file to search for.
-   PATH_LIST is a colon separated list of directories to search.
-   FLAGS contains bit fields which control the files which are eligible.
-   Some values are:
-      FS_EXEC_ONLY:            The file must be an executable to be found.
-      FS_EXEC_PREFERRED:       If we can't find an executable, then the
-                               the first file matching NAME will do.
-      FS_EXISTS:               The first file found will do.
-*/
-static char *
-find_user_command_in_path (name, path_list, flags)
-     char *name;
-     char *path_list;
-     int flags;
-{
-  char *full_path, *path, *file_to_lose_on;
-  int status, path_index, name_len;
-  struct stat finfo;
-
-  name_len = strlen (name);
-
-  /* The file name which we would try to execute, except that it isn't
-     possible to execute it.  This is the first file that matches the
-     name that we are looking for while we are searching $PATH for a
-     suitable one to execute.  If we cannot find a suitable executable
-     file, then we use this one. */
-  file_to_lose_on = (char *)NULL;
-
-  /* We haven't started looking, so we certainly haven't seen
-     a `.' as the directory path yet. */
-  dot_found_in_search = 0;
-
-  if (absolute_program (name))
-    {
-      full_path = (char *)xmalloc (1 + name_len);
-      strcpy (full_path, name);
-
-      status = file_status (full_path);
-
-      if (!(status & FS_EXISTS))
-       return (0);
-
-      if ((flags & FS_EXEC_ONLY) && (status & FS_EXECABLE))
-       return (full_path);
-      else
-       {
-         free (full_path);
-         return ((char *)NULL);
-       }
-    }
-
-  /* Find out the location of the current working directory. */
-  stat (".", &finfo);
-
-  path_index = 0;
-  while (path_list && path_list[path_index])
-    {
-      /* Allow the user to interrupt out of a lengthy path search. */
-      QUIT;
-
-      path = get_next_path_element (path_list, &path_index);
-
-      if (!path)
-       break;
-
-      if (*path == '~')
-       {
-         char *tilde_expand ();
-         char *t = tilde_expand (path);
-         free (path);
-         path = t;
-       }
-
-      /* Remember the location of "." in the path, in all its forms
-        (as long as they begin with a `.', e.g. `./.') */
-      if ((*path == '.') &&
-         same_file (".", path, &finfo, (struct stat *)NULL))
-       dot_found_in_search = 1;
-
-      full_path = (char *)xmalloc (2 + strlen (path) + name_len);
-      sprintf (full_path, "%s/%s", path, name);
-      free (path);
-
-      status = file_status (full_path);
-
-      if (!(status & FS_EXISTS))
-       goto next_file;
-
-      /* The file exists.  If the caller simply wants the first file,
-        here it is. */
-      if (flags & FS_EXISTS)
-       return (full_path);
-
-       /* If the file is executable, then it satisfies the cases of
-         EXEC_ONLY and EXEC_PREFERRED.  Return this file unconditionally. */
-      if (status & FS_EXECABLE)
-       {
-         if (file_to_lose_on)
-           free (file_to_lose_on);
-
-         return (full_path);
-       }
-
-      /* The file is not executable, but it does exist.  If we prefer
-        an executable, then remember this one if it is the first one
-        we have found. */
-      if (flags & FS_EXEC_PREFERRED)
-       {
-         if (!file_to_lose_on)
-           file_to_lose_on = savestring (full_path);
-       }
-
-    next_file:
-      free (full_path);
-    }
-
-  /* We didn't find exactly what the user was looking for.  Return
-     the contents of FILE_TO_LOSE_ON which is NULL when the search
-     required an executable, or non-NULL if a file was found and the
-     search would accept a non-executable as a last resort. */
-  return (file_to_lose_on);
-}
-
-/* Given a string containing units of information separated by colons,
-   return the next one pointed to by INDX, or NULL if there are no more.
-   Advance INDX to the character after the colon. */
-char *
-extract_colon_unit (string, indx)
-     char *string;
-     int *indx;
-{
-  int i, start;
-
-  i = *indx;
-
-  if (!string || (i >= strlen (string)))
-    return ((char *)NULL);
-
-  /* Each call to this routine leaves the index pointing at a colon if
-     there is more to the path.  If I is > 0, then increment past the
-     `:'.  If I is 0, then the path has a leading colon.  Trailing colons
-     are handled OK by the `else' part of the if statement; an empty
-     string is returned in that case. */
-  if (i && string[i] == ':')
-    i++;
-
-  start = i;
-
-  while (string[i] && string[i] != ':') i++;
-
-  *indx = i;
-
-  if (i == start)
-    {
-      if (string[i])
-       (*indx)++;
-
-      /* Return "" in the case of a trailing `:'. */
-      return (savestring (""));
-    }
-  else
-    {
-      char *value;
-
-      value = (char *)xmalloc (1 + (i - start));
-      strncpy (value, &string[start], (i - start));
-      value [i - start] = '\0';
-
-      return (value);
-    }
-}
-
-/* Return non-zero if the characters from SAMPLE are not all valid
-   characters to be found in the first line of a shell script.  We
-   check up to the first newline, or SAMPLE_LEN, whichever comes first.
-   All of the characters must be printable or whitespace. */
-
-#if !defined (isspace)
-#define isspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\f')
-#endif
-
-#if !defined (isprint)
-#define isprint(c) (isletter(c) || digit(c) || ispunct(c))
-#endif
-
-int
-check_binary_file (sample, sample_len)
-     unsigned char *sample;
-     int sample_len;
-{
-  register int i;
-
-  for (i = 0; i < sample_len; i++)
-    {
-      if (sample[i] == '\n')
-       break;
-
-      if (!isspace (sample[i]) && !isprint (sample[i]))
-       return (1);
-    }
-  return (0);
-}
diff --git a/CWRU/posix-parser/Makefile b/CWRU/posix-parser/Makefile
deleted file mode 100644 (file)
index 74f45ae..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-SRCS=  main.c parse.y make.c copy.c aux.c 
-OBJS=  main.o parse.o make.o copy.o aux.o
-
-PROG=  parse
-
-AUX=   ../../../sun4/error.o
-
-CFLAGS=        -g -I. -I../.. -I. -DTEST -Dalloca=__builtin_alloca
-LDFLAGS= -g
-
-$(PROG):       $(OBJS)
-       $(CC) $(LDFLAGS) -o $@ $(OBJS) $(AUX) $(LIBS)
-
-parse.o: parse.y
diff --git a/CWRU/posix-parser/aux.c b/CWRU/posix-parser/aux.c
deleted file mode 100644 (file)
index bd8c8c9..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include "filecntl.h"
-
-#include "shell.h"
-#include <strings.h>
-char *
-xmalloc (size)
-     int size;
-{
-  register char *temp = (char *)malloc (size);
-
-  if (!temp)
-    fatal_error ("Out of virtual memory!");
-
-  return (temp);
-}
-
-char *
-xrealloc (pointer, size)
-     register char *pointer;
-     int size;
-{
-  char *temp;
-
-  if (!pointer)
-    temp = (char *)xmalloc (size);
-  else
-    temp = (char *)realloc (pointer, size);
-
-  if (!temp)
-    fatal_error ("Out of virtual memory!");
-
-  return (temp);
-}
-/* Reverse the chain of structures in LIST.  Output the new head
-   of the chain.  You should always assign the output value of this
-   function to something, or you will lose the chain. */
-GENERIC_LIST *
-reverse_list (list)
-     register GENERIC_LIST *list;
-{
-  register GENERIC_LIST *next, *prev = (GENERIC_LIST *)NULL;
-
-  while (list) {
-    next = list->next;
-    list->next = prev;
-    prev = list;
-    list = next;
-  }
-  return (prev);
-}
-
-/* Return the number of elements in LIST, a generic list. */
-int
-list_length (list)
-     register GENERIC_LIST *list;
-{
-  register int i;
-
-  for (i = 0; list; list = list->next, i++);
-  return (i);
-}
-
-/* Delete the element of LIST which satisfies the predicate function COMPARER.
-   Returns the element that was deleted, so you can dispose of it, or -1 if
-   the element wasn't found.  COMPARER is called with the list element and
-   then ARG.  Note that LIST contains the address of a variable which points
-   to the list.  You might call this function like this:
-
-   SHELL_VAR *elt = delete_element (&variable_list, check_var_has_name, "foo");
-   dispose_variable (elt);
-*/
-GENERIC_LIST *
-delete_element (list, comparer, arg)
-     GENERIC_LIST **list;
-     Function *comparer;
-{
-  register GENERIC_LIST *prev = (GENERIC_LIST *)NULL;
-  register GENERIC_LIST *temp = *list;
-
-  while (temp) {
-    if ((*comparer) (temp, arg)) {
-      if (prev) prev->next = temp->next;
-      else *list = temp->next;
-      return (temp);
-    }
-    prev = temp;
-    temp = temp->next;
-  }
-  return ((GENERIC_LIST *)-1);
-}
-
-/* Find NAME in ARRAY.  Return the index of NAME, or -1 if not present.
-   ARRAY shoudl be NULL terminated. */
-int
-find_name_in_list (name, array)
-     char *name, *array[];
-{
-  int i;
-
-  for (i=0; array[i]; i++)
-    if (strcmp (name, array[i]) == 0)
-      return (i);
-
-  return (-1);
-}
-
-/* Return the length of ARRAY, a NULL terminated array of char *. */
-int
-array_len (array)
-     register char **array;
-{
-  register int i;
-  for (i=0; array[i]; i++);
-  return (i);
-}
-
-/* Free the contents of ARRAY, a NULL terminated array of char *. */
-void
-free_array (array)
-     register char **array;
-{
-  register int i = 0;
-
-  if (!array) return;
-
-  while (array[i])
-    free (array[i++]);
-  free (array);
-}
-
-/* Allocate and return a new copy of ARRAY and its contents. */
-char **
-copy_array (array)
-  register char **array;
-{
-  register int i;
-  int len;
-  char **new_array;
-
-  len = array_len (array);
-  new_array = (char **)xmalloc ((len + 1) * sizeof (char *));
-  for (i = 0; array[i]; i++)
-    new_array[i] = savestring (array[i]);  
-  new_array[i] = (char *)NULL;
-  return (new_array);
-}
-
-/* Append LIST2 to LIST1.  Return the header of the list. */
-GENERIC_LIST *
-list_append (head, tail)
-     GENERIC_LIST *head, *tail;
-{
-  register GENERIC_LIST *t_head = head;
-
-  if (!t_head)
-    return (tail);
-
-  while (t_head->next) t_head = t_head->next;
-  t_head->next = tail;
-  return (head);
-}
-
-#include <stdio.h>
-
-#ifndef NULL
-#define NULL 0x0
-#endif
-
-#if defined (ibm032)
-/*
- * Most vanilla 4.3 (not 4.3-tahoe) sites lack vfprintf.
- * Here is the one from 4.3-tahoe (it is freely redistributable).
- *
- * Beware!  Don't trust the value returned by either of these functions; it
- * seems that pre-4.3-tahoe implementations of _doprnt () return the first
- * argument, i.e. a char *.  Besides, _doprnt () is incorrectly documented
- * in the 4.3 BSD manuals, anyway (it's wrong in SunOS 3.5 also, but they
- * have the v*printf functions (incorrectly documented (vprintf), but they
- * are present)).
- */
-#include <varargs.h>
-
-int
-vfprintf (iop, fmt, ap)
-     FILE *iop;
-     char *fmt;
-     va_list ap;
-{
-  int len;
-  char localbuf[BUFSIZ];
-
-  if (iop->_flag & _IONBF)
-    {
-      iop->_flag &= ~_IONBF;
-      iop->_ptr = iop->_base = localbuf;
-      len = _doprnt (fmt, ap, iop);
-      (void) fflush (iop);
-      iop->_flag |= _IONBF;
-      iop->_base = NULL;
-      iop->_bufsiz = 0;
-      iop->_cnt = 0;
-    }
-  else
-    len = _doprnt (fmt, ap, iop);
-  return (ferror (iop) ? EOF : len);
-}
-
-/*
- * Ditto for vsprintf
- */
-int
-vsprintf (str, fmt, ap)
-     char *str, *fmt;
-     va_list ap;
-{
-  FILE f;
-  int len;
-
-  f._flag = _IOWRT+_IOSTRG;
-  f._ptr = str;
-  f._cnt = 32767;
-  len = _doprnt (fmt, ap, &f);
-  *f._ptr = 0;
-  return (len);
-}
-
-#endif /* ibm032 */
diff --git a/CWRU/posix-parser/command.h b/CWRU/posix-parser/command.h
deleted file mode 100644 (file)
index a7586a7..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* command.h -- The structures used internally to represent commands, and
-   the extern declarations of the functions used to create them. */
-
-#if !defined (_COMMAND_H)
-#define _COMMAND_H
-
-/* Instructions describing what kind of thing to do for a redirection. */
-enum r_instruction {
-  r_output_direction, r_input_direction, r_inputa_direction,
-  r_appending_to, r_reading_until, r_duplicating_input,
-  r_duplicating_output, r_deblank_reading_until, r_close_this,
-  r_err_and_out, r_input_output, r_output_force,
-  r_duplicating_input_word, r_duplicating_output_word
-};
-
-/* Command Types: */
-enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple,
-                   cm_connection, cm_function_def, cm_until, cm_group };
-
-/* A structure which represents a word. */
-typedef struct word_desc {
-  char *word;          /* Zero terminated string. */
-  int dollar_present;  /* Non-zero means dollar sign present. */
-  int quoted;          /* Non-zero means single, double, or back quote
-                          or backslash is present. */
-  int assignment;      /* Non-zero means that this word contains an
-                          assignment. */
-} WORD_DESC;
-
-/* A linked list of words. */
-typedef struct word_list {
-  struct word_list *next;
-  WORD_DESC *word;
-} WORD_LIST;
-
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     Shell Command Structs                       */
-/*                                                                 */
-/* **************************************************************** */
-
-/* What a redirection descriptor looks like.  If FLAGS is IS_DESCRIPTOR,
-   then we use REDIRECTEE.DEST, else we use the file specified. */
-typedef struct redirect {
-  struct redirect *next;       /* Next element, or NULL. */
-  int redirector;              /* Descriptor to be redirected. */
-  int flags;                   /* Flag value for `open'. */
-  enum r_instruction  instruction; /* What to do with the information. */
-  union {
-    int dest;                  /* Place to redirect REDIRECTOR to, or ... */
-    WORD_DESC *filename;       /* filename to redirect to. */
-  } redirectee;
-  char *here_doc_eof;          /* The word that appeared in <<foo. */
-} REDIRECT;
-
-/* An element used in parsing.  A single word or a single redirection.
-   This is an ephemeral construct. */
-typedef struct element {
-  WORD_DESC *word;
-  REDIRECT *redirect;
-  struct element *next;
-} ELEMENT;
-
-/* Possible values for command->flags. */
-#define CMD_WANT_SUBSHELL  0x01        /* User wants a subshell: ( command ) */
-#define CMD_FORCE_SUBSHELL 0x02        /* Shell needs to force a subshell. */
-#define CMD_INVERT_RETURN  0x04        /* Invert the exit value. */
-#define CMD_IGNORE_RETURN  0x08        /* Ignore the exit value.  For set -e. */
-#define CMD_NO_FUNCTIONS   0x10 /* Ignore functions during command lookup. */
-#define CMD_INHIBIT_EXPANSION 0x20 /* Do not expand the command words. */
-
-/* What a command looks like. */
-typedef struct command {
-  enum command_type type;      /* FOR CASE WHILE IF CONNECTION or SIMPLE. */
-  int flags;                   /* Flags controlling execution environment. */
-  REDIRECT *redirects;         /* Special redirects for FOR CASE, etc. */
-  union {
-    struct for_com *For;
-    struct case_com *Case;
-    struct while_com *While;
-    struct if_com *If;
-    struct connection *Connection;
-    struct simple_com *Simple;
-    struct function_def *Function_def;
-    struct group_com *Group;
-  } value;
-} COMMAND;
-
-/* Structure used to represent the CONNECTION type. */
-typedef struct connection {
-  int ignore;                  /* Unused; simplifies make_command (). */
-  COMMAND *first;              /* Pointer to the first command. */
-  COMMAND *second;             /* Pointer to the second command. */
-  int connector;               /* What separates this command from others. */
-} CONNECTION;
-
-/* Structures used to represent the CASE command. */
-
-/* Pattern/action structure for CASE_COM. */
-typedef struct pattern_list {
-  struct pattern_list *next;   /* Clause to try in case this one failed. */
-  WORD_LIST *patterns;         /* Linked list of patterns to test. */
-  COMMAND *action;             /* Thing to execute if a pattern matches. */
-} PATTERN_LIST;
-
-/* The CASE command. */
-typedef struct case_com {
-  int flags;                   /* See description of CMD flags. */
-  WORD_DESC *word;             /* The thing to test. */
-  PATTERN_LIST *clauses;       /* The clauses to test against, or NULL. */
-} CASE_COM;
-
-/* FOR command. */
-typedef struct for_com {
-  int flags;           /* See description of CMD flags. */
-  WORD_DESC *name;     /* The variable name to get mapped over. */
-  WORD_LIST *map_list; /* The things to map over.  This is never NULL. */
-  COMMAND *action;     /* The action to execute.
-                          During execution, NAME is bound to successive
-                          members of MAP_LIST. */
-} FOR_COM;
-
-/* IF command. */
-typedef struct if_com {
-  int flags;                   /* See description of CMD flags. */
-  COMMAND *test;               /* Thing to test. */
-  COMMAND *true_case;          /* What to do if the test returned non-zero. */
-  COMMAND *false_case;         /* What to do if the test returned zero. */
-} IF_COM;
-
-/* WHILE command. */
-typedef struct while_com {
-  int flags;                   /* See description of CMD flags. */
-  COMMAND *test;               /* Thing to test. */
-  COMMAND *action;             /* Thing to do while test is non-zero. */
-} WHILE_COM;
-
-/* The "simple" command.  Just a collection of words and redirects. */
-typedef struct simple_com {
-  int flags;                   /* See description of CMD flags. */
-  WORD_LIST *words;            /* The program name, the arguments,
-                                  variable assignments, etc. */
-  REDIRECT *redirects;         /* Redirections to perform. */
-} SIMPLE_COM;
-
-/* The "function_def" command.  This isn't really a command, but it is
-   represented as such for now.  If the function def appears within 
-   `(' `)' the parser tries to set the SUBSHELL bit of the command.  That
-   means that FUNCTION_DEF has to be run through the executor.  Maybe this
-   command should be defined in a subshell.  Who knows or cares. */
-typedef struct function_def {
-  int ignore;                  /* See description of CMD flags. */
-  WORD_DESC *name;             /* The name of the function. */
-  COMMAND *command;            /* The parsed execution tree. */
-} FUNCTION_DEF;
-
-/* A command that is `grouped' allows pipes to take effect over
-   the entire command structure. */
-typedef struct group_com {
-  int ignore;                  /* See description of CMD flags. */
-  COMMAND *command;
-} GROUP_COM;
-
-/* Forward declarations of functions called by the grammer. */
-extern REDIRECT *make_redirection ();
-extern WORD_LIST *make_word_list ();
-extern WORD_DESC *make_word ();
-
-extern COMMAND
-  *make_for_command (), *make_case_command (), *make_if_command (),
-  *make_while_command (), *command_connect (), *make_simple_command (),
-  *make_function_def (), *clean_simple_command (), *make_until_command (),
-  *make_group_command ();
-
-extern PATTERN_LIST *make_pattern_list ();
-extern COMMAND *global_command, *copy_command ();
-
-#endif /* _COMMAND_H */
diff --git a/CWRU/posix-parser/copy.c b/CWRU/posix-parser/copy.c
deleted file mode 100644 (file)
index 19d49be..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/* copy_command.c -- copy a COMMAND structure.  This is needed
-   primarily for making function definitions, but I'm not sure
-   that anyone else will need it.  */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 1, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "shell.h"
-
-/* Forward declaration. */
-extern COMMAND *copy_command ();
-
-WORD_DESC *
-copy_word (word)
-     WORD_DESC *word;
-{
-  WORD_DESC *new_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
-  bcopy (word, new_word, sizeof (WORD_DESC));
-  new_word->word = savestring (word->word);
-  return (new_word);
-}
-
-/* Copy the chain of words in LIST.  Return a pointer to 
-   the new chain. */
-WORD_LIST *
-copy_word_list (list)
-     WORD_LIST *list;
-{
-  WORD_LIST *new_list = NULL;
-
-  while (list)
-    {
-      WORD_LIST *temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-      temp->next = new_list;
-      new_list = temp;
-      new_list->word = copy_word (list->word);
-      list = list->next;
-    }
-  return ((WORD_LIST *)reverse_list (new_list));
-}
-
-PATTERN_LIST *
-copy_case_clause (clause)
-     PATTERN_LIST *clause;
-{
-  PATTERN_LIST *new_clause = (PATTERN_LIST *)xmalloc (sizeof (PATTERN_LIST));
-  new_clause->patterns = copy_word_list (clause->patterns);
-  new_clause->action = copy_command (clause->action);
-  return (new_clause);
-}
-
-PATTERN_LIST *
-copy_case_clauses (clauses)
-     PATTERN_LIST *clauses;
-{
-  PATTERN_LIST *new_list = (PATTERN_LIST *)NULL;
-
-  while (clauses)
-    {
-      PATTERN_LIST *new_clause = copy_case_clause (clauses);
-      new_clause->next = new_list;
-      new_list = new_clause;
-      clauses = clauses->next;
-    }
-  return ((PATTERN_LIST *)reverse_list (new_list));
-}
-
-/* Copy a single redirect. */
-REDIRECT *
-copy_redirect (redirect)
-     REDIRECT *redirect;
-{
-  REDIRECT *new_redirect = (REDIRECT *)xmalloc (sizeof (REDIRECT));
-  bcopy (redirect, new_redirect, (sizeof (REDIRECT)));
-  switch (redirect->instruction)
-    {
-    case r_reading_until:
-    case r_deblank_reading_until:
-      new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
-      /* There is NO BREAK HERE ON PURPOSE!!!! */
-    case r_appending_to:
-    case r_output_direction:
-    case r_input_direction:
-    case r_inputa_direction:
-    case r_err_and_out:
-    case r_input_output:
-    case r_output_force:
-    case r_duplicating_input_word:
-    case r_duplicating_output_word:
-      new_redirect->redirectee.filename =
-       copy_word (redirect->redirectee.filename);
-      break;
-    }
-  return (new_redirect);
-}
-  
-REDIRECT *
-copy_redirects (list)
-     REDIRECT *list;
-{
-  REDIRECT *new_list = NULL;
-
-  while (list)
-    {
-      REDIRECT *temp = copy_redirect (list);
-      temp->next = new_list;
-      new_list = temp;
-      list = list->next;
-    }
-  return ((REDIRECT *)reverse_list (new_list));
-}
-  
-FOR_COM *
-copy_for_command (com)
-     FOR_COM *com;
-{
-  FOR_COM *new_for = (FOR_COM *)xmalloc (sizeof (FOR_COM));
-  new_for->flags = com->flags;
-  new_for->name = copy_word (com->name);
-  new_for->map_list = copy_word_list (com->map_list);
-  new_for->action = copy_command (com->action);
-  return (new_for);
-}
-
-GROUP_COM *
-copy_group_command (com)
-     GROUP_COM *com;
-{
-  GROUP_COM *new_group = (GROUP_COM *)xmalloc (sizeof (GROUP_COM));
-
-  new_group->command = copy_command (com->command);
-  return (new_group);
-}
-
-CASE_COM *
-copy_case_command (com)
-     CASE_COM *com;
-{
-  CASE_COM *new_case = (CASE_COM *)xmalloc (sizeof (CASE_COM));
-
-  new_case->flags = com->flags;
-  new_case->word = copy_word (com->word);
-  new_case->clauses = copy_case_clauses (com->clauses);
-  return (new_case);
-}
-
-WHILE_COM *
-copy_while_command (com)
-     WHILE_COM *com;
-{
-  WHILE_COM *new_while = (WHILE_COM *)xmalloc (sizeof (WHILE_COM));
-
-  new_while->flags = com->flags;
-  new_while->test = copy_command (com->test);
-  new_while->action = copy_command (com->action);
-  return (new_while);
-}
-
-IF_COM *
-copy_if_command (com)
-     IF_COM *com;
-{
-  IF_COM *new_if = (IF_COM *)xmalloc (sizeof (IF_COM));
-
-  new_if->flags = com->flags;
-  new_if->test = copy_command (com->test);
-  new_if->true_case = copy_command (com->true_case);
-  new_if->false_case = copy_command (com->false_case);
-  return (new_if);
-}
-
-SIMPLE_COM *
-copy_simple_command (com)
-     SIMPLE_COM *com;
-{
-  SIMPLE_COM *new_simple = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM));
-
-  new_simple->flags = com->flags;
-  new_simple->words = copy_word_list (com->words);
-  new_simple->redirects = copy_redirects (com->redirects);
-  return (new_simple);
-}
-  
-FUNCTION_DEF *
-copy_function_def (com)
-     FUNCTION_DEF *com;
-{
-  FUNCTION_DEF *new_def = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF));
-
-  new_def->name = copy_word (com->name);
-  new_def->command = copy_command (com->command);
-  return (new_def);
-}
-
-/* Copy the command structure in COMMAND.  Return a pointer to the
-   copy.  Don't you forget to dispose_command () on this pointer
-   later! */
-COMMAND *
-copy_command (command)
-     COMMAND *command;
-{
-  COMMAND *new_command = (COMMAND *)NULL;
-
-  if (command)
-    {
-      new_command = (COMMAND *)xmalloc (sizeof (COMMAND));
-      bcopy (command, new_command, sizeof (COMMAND));
-      new_command->flags = command->flags;
-
-      if (command->redirects)
-       new_command->redirects = copy_redirects (command->redirects);
-
-      switch (command->type)
-       {
-       case cm_for:
-         new_command->value.For = copy_for_command (command->value.For);
-         break;
-
-       case cm_group:
-         new_command->value.Group = copy_group_command (command->value.Group);
-         break;
-
-       case cm_case:
-         new_command->value.Case = copy_case_command (command->value.Case);
-         break;
-      
-       case cm_until:
-       case cm_while:
-         new_command->value.While = copy_while_command (command->value.While);
-         break;
-      
-       case cm_if:
-         new_command->value.If = copy_if_command (command->value.If);
-         break;
-      
-       case cm_simple:
-         new_command->value.Simple = copy_simple_command (command->value.Simple);
-         break;
-      
-       case cm_connection:
-         {
-           CONNECTION *new_connection;
-
-           new_connection = (CONNECTION *)xmalloc (sizeof (CONNECTION));
-           new_connection->connector = command->value.Connection->connector;
-           new_connection->first =
-             copy_command (command->value.Connection->first);
-           new_connection->second =
-             copy_command (command->value.Connection->second);
-           new_command->value.Connection = new_connection;
-           break;
-         }
-      
-         /* Pathological case.  I'm not even sure that you can have a
-            function definition as part of a function definition. */
-       case cm_function_def:
-         new_command->value.Function_def =
-           copy_function_def (command->value.Function_def);
-         break;
-       }
-    }
-  return (new_command);
-}
diff --git a/CWRU/posix-parser/endian.h b/CWRU/posix-parser/endian.h
deleted file mode 100644 (file)
index ebbf6d6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/* endian.h - Define BIG or LITTLE endian. */
-
-/* This file was automatically created by `endian.aux'.  You shouldn't
-   edit this file, because your changes will be overwritten.  Instead,
-   edit the source code file `endian.c'. */
-
-#if !defined (BIG_ENDIAN)
-#  define BIG_ENDIAN
-#endif /* BIG_ENDIAN */
diff --git a/CWRU/posix-parser/main.c b/CWRU/posix-parser/main.c
deleted file mode 100644 (file)
index 2175391..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-#include <stdio.h>
-#include "shell.h"
-
-COMMAND *global_command;
-int last_command_exit_value;
-int interrupt_state;
-int interactive = 1;
-int eof_encountered = 0;
-int exit_immediately_on_error = 1;
-
-char *the_current_maintainer = "chet";
-
-char *shell_name = "posix";
-
-void
-throw_to_top_level()
-{
-}
-
-char *
-base_pathname(s)
-char   *s;
-{
-       return s;
-}
-
-char *
-strerror(s)
-int    s;
-{
-       return ("error");
-}
-
-parse_command ()
-{
-  extern int need_here_doc, current_command_line_count;
-  extern REDIRECT *redirection_needing_here_doc;
-  int r;
-
-  need_here_doc = 0;
-  redirection_needing_here_doc = (REDIRECT *)NULL;
-
-  current_command_line_count = 0;
-  r = yyparse ();
-
-  if (need_here_doc)
-    make_here_document (redirection_needing_here_doc);
-  need_here_doc = 0;
-
-  return (r);
-}
-
-main(argc, argv)
-int    argc;
-char   **argv;
-{
-       with_input_from_stdin();
-
-       if (parse_command () == 0) {
-               printf ("legal command in the Posix shell\n");
-               exit (0);
-       } else {
-               printf ("illegal\n");
-               exit (1);
-       }
-}
-
-char *
-string_quote_removal (s)
-{
-       return (savestring (s));
-}
-
-assignment (string)
-     char *string;
-{
-  register int c, index = 0;
-
-  c = string[index];
-
-  if (!isletter (c) && c != '_')
-    return (0);
-
-  while (c = string[index])
-    {
-      /* The following is safe.  Note that '=' at the start of a word
-         is not an assignment statement. */
-      if (c == '=')
-        return (index);
-
-      if (!isletter (c) && !digit (c) && c != '_')
-        return (0);
-
-      index++;
-    }
-  return (0);
-}
diff --git a/CWRU/posix-parser/make.c b/CWRU/posix-parser/make.c
deleted file mode 100644 (file)
index cc49b18..0000000
+++ /dev/null
@@ -1,596 +0,0 @@
-/* make_cmd.c --
-   Functions for making instances of the various parser constructs. */
-
-/* Copyright (C) 1989 Free Software Foundation, Inc.
-
-This file is part of GNU Bash, the Bourne Again SHell.
-
-Bash is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 1, or (at your option) any later
-version.
-
-Bash is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License along
-with Bash; see the file COPYING.  If not, write to the Free Software
-Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include "config.h"
-#include "general.h"
-#include "error.h"
-#include "command.h"
-#include "flags.h"
-#include "filecntl.h"
-
-#if defined (JOB_CONTROL)
-#include "jobs.h"
-#endif
-
-extern GENERIC_LIST *reverse_list ();
-
-WORD_DESC *
-make_word (string)
-     char *string;
-{
-  WORD_DESC *temp;
-
-  temp = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
-  temp->word = savestring (string);
-  temp->quoted = temp->dollar_present = temp->assignment = 0;
-
-  while (*string)
-    {
-      if (*string == '$') temp->dollar_present = 1;
-
-      if (member (*string, "'`\\\""))
-       {
-         temp->quoted = 1;
-         if (*string == '\\')
-           string++;
-       }
-
-      if (*string)
-       (string++);
-    }
-  return (temp);
-}
-
-WORD_DESC *
-make_word_from_token (token)
-     int token;
-{
-  char tokenizer[2];
-
-  tokenizer[0] = token;
-  tokenizer[1] = '\0';
-
-  return (make_word (tokenizer));
-}
-
-WORD_LIST *
-make_word_list (word, link)
-     WORD_DESC *word;
-     WORD_LIST *link;
-{
-  WORD_LIST *temp;
-
-  temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-  temp->word = word;
-  temp->next = link;
-  return (temp);
-}
-
-WORD_LIST *
-add_string_to_list (string, list)
-     char *string;
-     WORD_LIST *list;
-{
-  WORD_LIST *temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-  temp->word = make_word (string);
-  temp->next = list;
-  return (temp);
-}
-
-WORD_DESC *
-coerce_to_word (number)
-     int number;
-{
-  char string[24];
-
-  sprintf (string, "%d", number);
-  return (make_word (string));
-}
-
-COMMAND *
-make_command (type, pointer)
-     enum command_type type;
-     SIMPLE_COM *pointer;
-{
-  COMMAND *temp;
-
-  temp = (COMMAND *)xmalloc (sizeof (COMMAND));
-  temp->type = type;
-  temp->value.Simple = pointer;
-  temp->value.Simple->flags = 0;
-  temp->flags = 0;
-  temp->redirects = (REDIRECT *)NULL;
-  return (temp);
-}
-
-COMMAND *
-command_connect (com1, com2, connector)
-     COMMAND *com1, *com2;
-     int connector;
-{
-  CONNECTION *temp;
-
-  temp = (CONNECTION *)xmalloc (sizeof (CONNECTION));
-  temp->connector = connector;
-  temp->first = com1;
-  temp->second = com2;
-  return (make_command (cm_connection, (SIMPLE_COM *)temp));
-}
-
-COMMAND *
-make_for_command (name, map_list, action)
-     WORD_DESC *name;
-     WORD_LIST *map_list;
-     COMMAND *action;
-{
-  FOR_COM *temp = (FOR_COM *)xmalloc (sizeof (FOR_COM));
-
-  temp->flags = 0;
-  temp->name = name;
-  temp->map_list = map_list;
-  temp->action = action;
-  return (make_command (cm_for, (SIMPLE_COM *)temp));
-}
-
-COMMAND *
-make_group_command (command)
-     COMMAND *command;
-{
-  GROUP_COM *temp = (GROUP_COM *)xmalloc (sizeof (GROUP_COM));
-
-  temp->command = command;
-  return (make_command (cm_group, (SIMPLE_COM *)temp));
-}
-
-COMMAND *
-make_case_command (word, clauses)
-     WORD_DESC *word;
-     PATTERN_LIST *clauses;
-{
-  CASE_COM *temp;
-
-  temp = (CASE_COM *)xmalloc (sizeof (CASE_COM));
-  temp->flags = 0;
-  temp->word = word;
-  temp->clauses = (PATTERN_LIST *)reverse_list (clauses);
-  return (make_command (cm_case, (SIMPLE_COM *)temp));
-}
-
-PATTERN_LIST *
-make_pattern_list (patterns, action)
-     WORD_LIST *patterns;
-     COMMAND *action;
-{
-  PATTERN_LIST *temp;
-
-  temp = (PATTERN_LIST *)xmalloc (sizeof (PATTERN_LIST));
-  temp->patterns = patterns;
-  temp->action = action;
-  temp->next = NULL;
-  return (temp);
-}
-
-COMMAND *
-make_if_command (test, true_case, false_case)
-     COMMAND *test, *true_case, *false_case;
-{
-  IF_COM *temp;
-
-  temp = (IF_COM *)xmalloc (sizeof (IF_COM));
-  temp->flags = 0;
-  temp->test = test;
-  temp->true_case = true_case;
-  temp->false_case = false_case;
-  return (make_command (cm_if, (SIMPLE_COM *)temp));
-}
-
-COMMAND *
-make_until_or_while (test, action, which)
-     COMMAND *test, *action;
-     enum command_type which;
-{
-  WHILE_COM *temp;
-
-  temp = (WHILE_COM *)xmalloc (sizeof (WHILE_COM));
-  temp->flags = 0;
-  temp->test = test;
-  temp->action = action;
-  return (make_command (which, (SIMPLE_COM *)temp));
-}
-
-COMMAND *
-make_while_command (test, action)
-     COMMAND *test, *action;
-{
-  return (make_until_or_while (test, action, cm_while));
-}
-
-COMMAND *
-make_until_command (test, action)
-     COMMAND *test, *action;
-{
-  return (make_until_or_while (test, action, cm_until));
-}
-
-COMMAND *
-make_bare_simple_command ()
-{
-  COMMAND *command;
-  SIMPLE_COM *temp = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM));
-
-  temp->flags = 0;
-  temp->words = (WORD_LIST *)NULL;
-  temp->redirects = (REDIRECT *)NULL;
-  command = (COMMAND *)xmalloc (sizeof (COMMAND));
-  command->type = cm_simple;
-  command->redirects = (REDIRECT *)NULL;
-  command->flags = 0;
-  command->value.Simple = temp;
-  return (command);
-}
-
-COMMAND *
-new_make_simple_command (word, prefix, suffix)
-     WORD_DESC *word;
-     ELEMENT *prefix;
-     ELEMENT *suffix;
-{
-  /* Make a list of words and redirects from WORD, PREFIX, and SUFFIX. */
-  WORD_LIST *w = (WORD_LIST *)NULL;
-  REDIRECT *r = (REDIRECT *)NULL;
-  COMMAND *ret;
-  SIMPLE_COM *sc;
-  register ELEMENT *te;
-
-  ret = make_bare_simple_command ();
-  sc = ret->value.Simple;
-
-  te = prefix;
-  while (te)
-    {
-      ELEMENT *t2;
-      if (te->redirect)
-        {
-          te->redirect->next  = r;
-          r->next = te->redirect;
-        }
-      else if (te->word)
-        {
-          WORD_LIST *twl = make_word_list (te->word, (WORD_LIST *)NULL);
-          twl->next = w;
-          w = twl;
-        }
-      t2 = te;
-      te = te->next;
-      free (t2);
-    }
-
-  if (word)
-    {
-      WORD_LIST *twl = make_word_list (word, (WORD_LIST *)NULL);
-      twl->next = w;
-      w = twl;
-    }
-
-  te = suffix;
-  while (te)
-    {
-      ELEMENT *t2;
-      if (te->redirect)
-        {
-          te->redirect->next  = r;
-          r->next = te->redirect;
-        }
-      else if (te->word)
-        {
-          WORD_LIST *twl = make_word_list (te->word, (WORD_LIST *)NULL);
-          twl->next = w;
-          w = twl;
-        }
-      t2 = te;
-      te = te->next;
-      free (t2);
-    }
-
-  sc->words = (WORD_LIST *)reverse_list (w);
-  sc->redirects = (REDIRECT *)reverse_list (r);
-  sc->flags = 0;
-
-  return (ret);
-}
-
-/* Return a command which is the connection of the word or redirection
-   in ELEMENT, and the command * or NULL in COMMAND. */
-COMMAND *
-make_simple_command (element, command)
-     ELEMENT element;
-     COMMAND *command;
-{
-  /* If we are starting from scratch, then make the initial command
-     structure.  Also note that we have to fill in all the slots, since
-     malloc doesn't return zeroed space. */
-  if (!command)
-    command = make_bare_simple_command ();
-  if (element.word)
-    {
-      WORD_LIST *tw = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-      tw->word = element.word;
-      tw->next = command->value.Simple->words;
-      command->value.Simple->words = tw;
-    }
-  else
-    {
-      REDIRECT *r = element.redirect;
-      /* Due to the way <> is implemented, there may be more than a single
-        redirection in element.redirect.  We just follow the chain as far
-        as it goes, and hook onto the end. */
-      while (r->next)
-       r = r->next;
-      r->next = command->value.Simple->redirects;
-      command->value.Simple->redirects = element.redirect;
-    }
-  return (command);
-}
-
-#define POSIX_HERE_DOCUMENTS
-make_here_document (temp)
-     REDIRECT *temp;
-{
-  int kill_leading = 0;
-
-  switch (temp->instruction)
-    {
-      /* Because we are Bourne compatible, we read the input for this
-        << or <<- redirection now, from wherever input is coming from.
-        We store the input read into a WORD_DESC.  Replace the text of
-        the redirectee.word with the new input text.  If <<- is on,
-        then remove leading TABS from each line. */
-
-      case r_deblank_reading_until:    /* <<-foo */
-       kill_leading++;
-       /* ... */
-      case r_reading_until:            /* <<foo */
-       {
-         extern char *redirection_expand ();
-         extern char *string_quote_removal ();
-         char *redirectee_word;
-         int len;
-
-         char *document = (char *)NULL;
-         int document_index = 0, document_size = 0;
-
-#if !defined (POSIX_HERE_DOCUMENTS)
-         /* Because of Bourne shell semantics, we turn off globbing, but
-            only for this style of redirection.  I feel a little ill.  */
-         {
-           extern int disallow_filename_globbing;
-           int old_value = disallow_filename_globbing;
-           disallow_filename_globbing = 1;
-
-           redirectee_word = redirection_expand (temp->redirectee.filename);
-
-           disallow_filename_globbing = old_value;
-         }
-#else /* POSIX_HERE_DOCUMENTS */
-         /* Quote removal is the only expansion performed on the delimiter
-            for here documents, making it an extremely special case.  I
-            still feel ill. */
-         redirectee_word =
-           string_quote_removal (temp->redirectee.filename->word, 0);
-#endif /* POSIX_HERE_DOCUMENTS */
-
-         /* redirection_expand will return NULL if the expansion results in
-            multiple words or no words.  Check for that here, and just abort
-            this here document if it does. */
-         if (redirectee_word)
-           len = strlen (redirectee_word);
-         else
-           {
-             temp->here_doc_eof = savestring ("");
-             goto document_done;
-           }
-
-         free (temp->redirectee.filename->word);
-         temp->here_doc_eof = redirectee_word;
-
-         /* Read lines from wherever lines are coming from.
-            For each line read, if kill_leading, then kill the
-            leading tab characters.
-            If the line matches redirectee_word exactly, then we have
-            manufactured the document.  Otherwise, add the line to the
-            list of lines in the document. */
-         {
-           extern char *read_secondary_line ();
-           char *line;
-           int l;
-
-           while (line = read_secondary_line ())
-             {
-               if (!line)
-                 goto document_done;
-
-               if (kill_leading)
-                 {
-                   register int i;
-
-                   /* Hack:  To be compatible with some Bourne shells, we 
-                      check the word before stripping the whitespace.  This
-                      is a hack, though. */
-                   if ((strncmp (line, redirectee_word, len) == 0) &&
-                       line[len] == '\n')
-                     goto document_done;
-
-                   for (i = 0; line[i] == '\t'; i++)
-                     ;
-
-                   if (i)
-                     strcpy (&line[0], &line[i]);
-                 }
-
-               if ((strncmp (line, redirectee_word, len) == 0) &&
-                   line[len] == '\n')
-                 goto document_done;
-
-               l = strlen (line);
-               if (l + document_index >= document_size)
-                 {
-                   document = (char *)
-                     xrealloc (document, (document_size += (10 * l)));
-                 }
-
-               if (l != 0)
-                 {
-                   strcpy (&document[document_index], line);
-                   free (line);
-                   document_index += l;
-                 }
-             }
-  document_done:
-           if (!document)
-             document = savestring ("");
-           temp->redirectee.filename->word = document;
-         }
-       }
-    }
-}
-   
-/* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION. 
-   INSTRUCTION is the instruction type, SOURCE is an INT,
-   and DEST is an INT or a WORD_DESC *. */
-REDIRECT *
-make_redirection (source, instruction, dest)
-     enum r_instruction instruction;
-{
-  REDIRECT *temp = (REDIRECT *)xmalloc (sizeof (REDIRECT));
-
-  /* First do the common cases. */
-  temp->redirector = source;
-  temp->redirectee.dest = dest;
-  temp->instruction = instruction;
-  temp->next = (REDIRECT *)NULL;
-
-  switch (instruction)
-    {
-
-    case r_output_direction:   /* >foo */
-    case r_output_force:       /* >| foo */
-      temp->flags = O_TRUNC | O_WRONLY | O_CREAT;
-      break;
-
-    case r_input_direction:    /* <foo */
-    case r_inputa_direction:   /* foo & makes this. */
-      temp->flags = O_RDONLY;
-      break;
-
-    case r_appending_to:       /* >>foo */
-      temp->flags = O_APPEND | O_WRONLY | O_CREAT;
-      break;
-
-    case r_deblank_reading_until: /* <<-foo */
-    case r_reading_until:      /* << foo */
-      break;
-
-    case r_duplicating_input:          /* 1<&2 */
-    case r_duplicating_output:         /* 1>&2 */
-    case r_close_this:                 /* <&- */
-    case r_duplicating_input_word:     /* 1<&$foo */
-    case r_duplicating_output_word:    /* 1>&$foo */
-      break;
-    
-    case r_err_and_out:                /* command &>filename */
-      temp->flags = O_TRUNC | O_WRONLY | O_CREAT;
-      break;
-
-    case r_input_output:
-      temp->flags = O_RDWR;
-      break;
-
-    default:
-      programming_error ("Redirection instruction from yyparse () '%d' is\n\
-out of range in make_redirection ().", instruction);
-      abort ();
-      break;
-    }
-  return (temp);
-}
-
-COMMAND *
-make_function_def (name, command)
-     WORD_DESC *name;
-     COMMAND *command;
-{
-  FUNCTION_DEF *temp;
-
-  temp = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF));
-  temp->command = command;
-  temp->name = name;
-  return (make_command (cm_function_def, (SIMPLE_COM *)temp));
-}
-
-/* Reverse the word list and redirection list in the simple command
-   has just been parsed.  It seems simpler to do this here the one
-   time then by any other method that I can think of. */
-COMMAND *
-clean_simple_command (command)
-     COMMAND *command;
-{
-  extern GENERIC_LIST *reverse_list ();
-
-  if (command->type != cm_simple)
-    {
-      programming_error
-       ("clean_simple_command () got a command with type %d.", command->type);
-    }
-  else
-    {
-      command->value.Simple->words =
-       (WORD_LIST *)reverse_list (command->value.Simple->words);
-      command->value.Simple->redirects = 
-       (REDIRECT *)reverse_list (command->value.Simple->redirects);
-    }
-
-  return (command);
-}
-
-/* Cons up a new array of words.  The words are taken from LIST,
-   which is a WORD_LIST *.  Absolutely everything is malloc'ed,
-   so you should free everything in this array when you are done.
-   The array is NULL terminated. */
-char **
-make_word_array (list)
-     WORD_LIST *list;
-{
-  int count = list_length (list);
-  char **array = (char **)xmalloc ((1 + count) * sizeof (char *));
-
-  for (count = 0; list; count++)
-    {
-      array[count] = (char *)xmalloc (1 + strlen (list->word->word));
-      strcpy (array[count], list->word->word);
-      list = list->next;
-    }
-  array[count] = (char *)NULL;
-  return (array);
-}
diff --git a/CWRU/posix-parser/parse.y b/CWRU/posix-parser/parse.y
deleted file mode 100644 (file)
index df7faba..0000000
+++ /dev/null
@@ -1,1932 +0,0 @@
-/* Yacc grammar for bash. */
-
-/* Copyright (C) 1989 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it under
-   the terms of the GNU General Public License as published by the Free
-   Software Foundation; either version 1, or (at your option) any later
-   version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
-   WARRANTY; without even the implied warranty of MERCHANTABILITY or
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with Bash; see the file LICENSE.  If not, write to the Free Software
-   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-%{
-#include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <varargs.h>
-#include "shell.h"
-#include "flags.h"
-
-#define YYDEBUG 1
-extern int eof_encountered;
-extern int no_line_editing;
-extern int interactive, interactive_shell;
-
-extern COMMAND *new_make_simple_command ();
-
-extern char *index ();
-/* **************************************************************** */
-/*                                                                 */
-/*                 "Forward" declarations                          */
-/*                                                                 */
-/* **************************************************************** */
-
-/* This is kind of sickening.  In order to let these variables be seen by
-   all the functions that need them, I am forced to place their declarations
-   far away from the place where they should logically be found. */
-
-static int reserved_word_acceptable ();
-
-/* PROMPT_STRING_POINTER points to one of these, never to an actual string. */
-char *ps1_prompt, *ps2_prompt;
-
-/* Handle on the current prompt string.  Indirectly points through
-   ps1_ or ps2_prompt. */
-char **prompt_string_pointer = (char **)NULL;
-char *current_prompt_string;
-
-/* The number of lines read from input while creating the current command. */
-int current_command_line_count = 0;
-
-/* Variables to manage the task of reading here documents, because we need to
-   defer the reading until after a complete command has been collected. */
-REDIRECT *redirection_needing_here_doc = (REDIRECT *)NULL;
-int need_here_doc = 0;
-%}
-
-%union {
-  WORD_DESC *word;             /* the word that we read. */
-  int number;                  /* the number that we read. */
-  WORD_LIST *word_list;
-  COMMAND *command;
-  REDIRECT *redirect;
-  ELEMENT *element;
-  PATTERN_LIST *pattern;
-  int separator_token;
-}
-
-/* Reserved words.  Members of the first group are only recognized
-   in the case that they are preceded by a list_terminator.  Members
-   of the second group are recognized only under special circumstances. */
-%token IF THEN ELSE ELIF FI CASE ESAC FOR WHILE UNTIL DO DONE FUNCTION
-%token IN BANG
-
-/* More general tokens. yylex () knows how to make these. */
-%token <word> WORD ASSIGNMENT_WORD NAME
-%token <number> NUMBER
-%token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND
-%token GREATER_AND SEMI_SEMI LESS_LESS_MINUS AND_GREATER LESS_GREATER
-%token GREATER_BAR NEWLINE
-
-/* The types that the various syntactical units return. */
-
-%type <command> complete_command
-%type <command> list and_or pipeline pipe_sequence tcommand compound_command
-%type <command> simple_command subshell compound_list term
-%type <command> function_definition brace_group
-%type <command> for_clause case_clause while_clause if_clause until_clause
-%type <command> do_group else_part
-%type <redirect> redirect_list redirect
-%type <word_list> wordlist pattern 
-%type <separator_token> separator separator_op linebreak newline_list
-%type <separator_token> sequential_sep
-%type <pattern> case_list case_item
-%type <element> cmd_prefix cmd_suffix
-%type <word> cmd_name cmd_word
-
-%start inputunit
-
-%left yacc_EOF
-%%
-
-inputunit:     complete_command NEWLINE
-                       {
-                         TRACE("reduced complete_command NEWLINE to inputunit");
-                         global_command = $1;
-                         YYACCEPT;
-                       }
-       |       NEWLINE
-                       {
-                         TRACE("reduced NEWLINE to inputunit");
-                         global_command = (COMMAND *)NULL;
-                         YYACCEPT;
-                       }
-       ;
-
-complete_command
-       :       list separator
-                       {
-                         TRACE("reduced 'list separator' to complete_command");
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-                         $$ = $1;
-                       }
-       |       list
-                       {
-                         TRACE("reduced list to complete_command");
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-                         $$ = $1;
-                       }
-       |       error
-                       {
-                         /* Error during parsing.  Return NULL command. */
-                         global_command = (COMMAND *)NULL;
-                         eof_encountered = 0;
-                         discard_parser_constructs (1);
-                         if (interactive)
-                           {
-                             YYACCEPT;
-                           }
-                         else
-                           {
-                             YYABORT;
-                           }
-                       }
-       |       yacc_EOF
-                       {
-                         /* Case of EOF seen by itself.  Do ignoreeof or 
-                            not. */
-                         global_command = (COMMAND *)NULL;
-                         handle_eof_input_unit ();
-                         YYACCEPT;
-                       }
-       ;
-
-list   :       list separator_op and_or
-                       {
-                         $$ = command_connect ($1, $3, $2);
-                         if (need_here_doc)
-                           make_here_document (redirection_needing_here_doc);
-                         need_here_doc = 0;
-                        }
-       |       and_or
-                       {
-                         $$ = $1;
-                         if (need_here_doc)
-                           make_here_document (redirection_needing_here_doc);
-                         need_here_doc = 0;
-                         TRACE("reduced and_or to list");
-                        }
-       ;
-
-and_or :       pipeline
-                       {
-                         TRACE("reduced pipeline to and_or");
-                         $$ = $1;
-                       }
-       |       and_or AND_AND linebreak pipeline
-                       { $$ = command_connect ($1, $4, AND_AND); }
-       |       and_or OR_OR linebreak pipeline
-                       { $$ = command_connect ($1, $4, OR_OR); }
-       ;
-
-pipeline:      pipe_sequence
-                       {
-                         TRACE("reduced pipe_sequence to pipeline");
-                         $$ = $1;
-                       }
-       |       BANG pipe_sequence
-                       {
-                         $2->flags |= CMD_INVERT_RETURN;
-                         $$ = $2;
-                       }
-       ;
-
-pipe_sequence: tcommand
-                       { 
-                         TRACE("reduced tcommand to pipe_sequence");
-                         $$ = $1;
-                       }
-       |       pipe_sequence '|' linebreak tcommand
-                       { $$ = command_connect ($1, $4, '|'); }
-       ;
-
-tcommand:      simple_command
-                       { 
-                         TRACE("reduced simple_command to tcommand");
-                         $$ = clean_simple_command ($1);
-                       }
-       |       compound_command
-                       { $$ = $1; }
-       |       compound_command redirect_list
-                       {
-                         $1->redirects = $2;
-                         $$ = $1;
-                       }
-       |       function_definition
-                       { $$ = $1; }
-       ;
-
-compound_command
-       :       brace_group
-                       { $$ = $1; }
-       |       subshell
-                       { $$ = $1; }
-       |       for_clause
-                       {
-                         TRACE("reduced FOR_CLAUSE to COMPOUND_COMMAND");
-                         $$ = $1;
-                       }
-       |       case_clause
-                       { $$ = $1; }
-       |       if_clause
-                       {
-                         TRACE("reduced IF_CLAUSE to COMPOUND_COMMAND");
-                         $$ = $1;
-                       }
-       |       while_clause
-                       {
-                         TRACE("reduced WHILE_CLAUSE to COMPOUND_COMMAND");
-                         $$ = $1;
-                       }
-       |       until_clause
-                       { $$ = $1; }
-       ;
-
-subshell:      '(' list ')'
-                       { $2->flags |= CMD_WANT_SUBSHELL; $$ = $2; }
-       ;
-
-
-compound_list
-       :       term
-                       { $$ = $1; }
-       |       newline_list term
-                       { $$ = $2; }
-       |       term separator
-                       { $$ = command_connect ($1, 0, $2); }
-       |       newline_list term separator
-                       { $$ = command_connect ($2, 0, $3); }
-       ;
-
-term   :       term separator and_or
-                       { $$ = command_connect ($1, $3, $2); }
-       |       and_or
-                       { $$ = $1; }
-       ;
-
-for_clause
-       :       FOR WORD do_group
-                       { $$ = make_for_command ($2, (WORD_LIST *)add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $3); }
-       |       FOR WORD newline_list IN wordlist sequential_sep do_group
-                       { $$ = make_for_command ($2, (WORD_LIST *)reverse_list ($5), $7); }
-       |       FOR WORD IN wordlist sequential_sep do_group
-                       {
-                         TRACE("reduced FOR_CLAUSE");
-                         $$ = make_for_command ($2, (WORD_LIST *)reverse_list ($4), $6);
-                       }
-       ;
-
-wordlist:      wordlist WORD
-                       { $$ = make_word_list ($2, $1); }
-       |       WORD
-                       { $$ = make_word_list ($1, (WORD_LIST *)NULL); }
-       ;
-
-case_clause
-       :       CASE WORD IN linebreak case_list ESAC
-                       { $$ = make_case_command ($2, $5); }
-       |       CASE WORD IN linebreak ESAC
-                       { $$ = make_case_command ($2, (PATTERN_LIST *)NULL); }
-       ;
-
-case_list
-       :       case_list case_item
-                       { $2->next = $1; $$ = $2; }
-       |       case_item
-                       { $$ = $1; }
-       ;
-
-case_item
-       :       pattern ')' linebreak SEMI_SEMI linebreak
-                       { $$ = make_pattern_list ($1, (COMMAND *)NULL); }
-       |       pattern ')' compound_list SEMI_SEMI linebreak
-                       { $$ = make_pattern_list ($1, $3); }
-       |       '(' pattern ')' compound_list SEMI_SEMI linebreak
-                       { $$ = make_pattern_list ($2, $4); }
-       |       '(' pattern ')' linebreak SEMI_SEMI linebreak
-                       { $$ = make_pattern_list ($2, (COMMAND *)NULL); }
-       ;
-
-pattern:       WORD
-                       { $$ = make_word_list ($1, (WORD_LIST *)NULL); }
-       |       pattern '|' WORD
-                       { $$ = make_word_list ($3, $1); }
-       ;
-
-if_clause:     IF compound_list THEN compound_list else_part FI
-                       { $$ = make_if_command ($2, $4, $5); }
-       |       IF compound_list THEN compound_list FI
-                       { $$ = make_if_command ($2, $4, (COMMAND *)NULL); }
-       ;
-
-else_part:     ELIF compound_list THEN else_part
-                       { $$ = make_if_command ($2, $4, (COMMAND *)NULL); }
-       |       ELSE compound_list
-                       { $$ = $2; }
-       ;
-
-while_clause:  WHILE compound_list do_group
-                       {
-                         TRACE("reduced WHILE_CLAUSE");
-                         $$ = make_while_command ($2, $3);
-                       }
-       ;
-
-until_clause:  UNTIL compound_list do_group
-                       { $$ = make_until_command ($2, $3); }
-       ;
-
-function_definition
-       :       WORD '(' ')' linebreak brace_group
-                       { $$ = make_function_def ($1, $5); }
-       ;
-
-brace_group:   '{' compound_list '}'
-                       { $$ = make_group_command ($2); }
-       ;
-
-
-do_group:      DO compound_list DONE
-                       {
-                         TRACE("reduced DO_GROUP");
-                         $$ = $2;
-                       }
-       ;
-
-cmd_prefix:    ASSIGNMENT_WORD
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = $1;
-                         temp_element->redirect = (REDIRECT *)NULL;
-                         temp_element->next = (struct element *)NULL;
-                         TRACE("reduced cmd_prefix to ASSIGNMENT_WORD");
-                         $$ = temp_element;
-                       }
-       |       cmd_prefix ASSIGNMENT_WORD
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = $2;
-                         temp_element->redirect = (REDIRECT *)NULL;
-                         temp_element->next = (struct element *)NULL;
-                         $1->next = temp_element;
-                         TRACE("reduced cmd_prefix to cmd_prefix ASSIGNMENT_WORD");
-                         $$ = $1;
-                       }
-       |       redirect
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = (WORD_DESC *)NULL;
-                         temp_element->redirect = $1;
-                         temp_element->next = (struct element *)NULL;
-                         TRACE("reduced cmd_prefix to redirect");
-                         $$ = temp_element;
-                       }
-       |       cmd_prefix redirect                     
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = (WORD_DESC *)NULL;
-                         temp_element->redirect = $2;
-                         temp_element->next = (struct element *)NULL;
-                         $1->next = temp_element;
-                         TRACE("reduced cmd_prefix to cmd_prefix redirect");
-                         $$ = $1;
-                       }
-       ;
-
-cmd_name:      WORD
-                       {
-                         TRACE ("reduced WORD to cmd_name");
-                         $$ = $1;
-                       }
-       ;
-       
-cmd_word:      WORD
-                       {
-                         TRACE ("reduced WORD to cmd_word");
-                         $$ = $1;
-                       }
-       ;
-
-cmd_suffix:    WORD
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = $1;
-                         temp_element->redirect = (REDIRECT *)NULL;
-                         temp_element->next = (struct element *)NULL;
-                         TRACE("reduced cmd_suffix to WORD");
-                         $$ = temp_element;
-                       }
-       |       cmd_suffix WORD
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = $2;
-                         temp_element->redirect = (REDIRECT *)NULL;
-                         temp_element->next = (struct element *)NULL;
-                         TRACE("reduced cmd_suffix to cmd_suffix WORD");
-                         $1->next = temp_element;
-                         $$ = $1;
-                       }
-       |       redirect
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = (WORD_DESC *)NULL;
-                         temp_element->redirect = $1;
-                         temp_element->next = (struct element *)NULL;
-                         TRACE("reduced cmd_sufffix to redirect");
-                         $$ = temp_element;
-                       }
-       |       cmd_suffix redirect                     
-                       {
-                         struct element *temp_element;
-                         temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT));
-                         temp_element->word = (WORD_DESC *)NULL;
-                         temp_element->redirect = $2;
-                         temp_element->next = (struct element *)NULL;
-                         $1->next = temp_element;
-                         TRACE("reduced cmd_suffix to cmd_suffix redirect");
-                         $$ = $1;
-                       }
-       ;
-
-simple_command:        cmd_prefix cmd_word cmd_suffix
-                       { $$ = new_make_simple_command ($2, $1, $3); }
-       |       cmd_prefix cmd_word
-                       { $$ = new_make_simple_command ($2, $1, (ELEMENT *)NULL); }
-       |       cmd_prefix
-                       { $$ = new_make_simple_command ((WORD_DESC *)NULL, $1, (ELEMENT *)NULL); }
-       |       cmd_name cmd_suffix
-                       { $$ = new_make_simple_command ($1, (ELEMENT *)NULL, $2); }
-       |       cmd_name
-                       {
-                         TRACE("reduced cmd_name to simple_command");
-                         $$ = new_make_simple_command ($1, (ELEMENT *)NULL, (ELEMENT *)NULL);
-                       }
-       ;
-
-redirect_list: redirect
-                       {
-                         $$ = $1;
-                       }
-       |       redirect_list redirect
-                       { 
-                         register REDIRECT *t = $1;
-
-                         while (t->next)
-                           t = t->next;
-                         t->next = $2; 
-                         $$ = $1;
-                       }
-       ;
-
-redirect:      '>' WORD
-                       { $$ = make_redirection ( 1, r_output_direction, $2); }
-       |       '<' WORD
-                       { $$ = make_redirection ( 0, r_input_direction, $2); }
-       |       NUMBER '>' WORD
-                       { $$ = make_redirection ($1, r_output_direction, $3); }
-       |       NUMBER '<' WORD
-                       { $$ = make_redirection ($1, r_input_direction, $3); }
-       |       GREATER_GREATER WORD
-                       { $$ = make_redirection ( 1, r_appending_to, $2); }
-       |       NUMBER GREATER_GREATER WORD
-                       { $$ = make_redirection ($1, r_appending_to, $3); }
-
-       |       LESS_AND NUMBER
-                       { $$ = make_redirection ( 0, r_duplicating_input, $2); }
-       |       NUMBER LESS_AND NUMBER
-                       { $$ = make_redirection ($1, r_duplicating_input, $3); }
-       |       GREATER_AND NUMBER
-                       { $$ = make_redirection ( 1, r_duplicating_output, $2); }
-       |       NUMBER GREATER_AND NUMBER
-                       { $$ = make_redirection ($1, r_duplicating_output, $3); }
-       |       LESS_AND WORD
-                       { $$ = make_redirection ( 0, r_duplicating_input_word, $2); }
-       |       NUMBER LESS_AND WORD
-                       { $$ = make_redirection ($1, r_duplicating_input_word, $3); }
-       |       GREATER_AND WORD
-                       { $$ = make_redirection ( 1, r_duplicating_output_word, $2); }
-       |       NUMBER GREATER_AND WORD
-                       { $$ = make_redirection ($1, r_duplicating_output_word, $3); }
-       |       GREATER_AND '-'
-                       { $$ = make_redirection ( 1, r_close_this, 0); }
-       |       NUMBER GREATER_AND '-'
-                       { $$ = make_redirection ($1, r_close_this, 0); }
-       |       LESS_AND '-'
-                       { $$ = make_redirection ( 0, r_close_this, 0); }
-       |       NUMBER LESS_AND '-'
-                       { $$ = make_redirection ($1, r_close_this, 0); }
-       |       AND_GREATER WORD
-                       { $$ = make_redirection ( 1, r_err_and_out, $2); }
-       |       NUMBER LESS_GREATER WORD
-                       { $$ = make_redirection ( $1, r_input_output, $3); }
-       |       LESS_GREATER WORD
-                       {
-                         REDIRECT *t1, *t2;
-                         extern WORD_DESC *copy_word ();
-
-                         t1 = make_redirection ( 0, r_input_direction, $2);
-                         t2 = make_redirection ( 1, r_output_direction, copy_word ($2));
-                         t1->next = t2;
-                         $$ = t1;
-                       }                         
-       |       GREATER_BAR WORD
-                       { $$ = make_redirection ( 1, r_output_force, $2); }
-       |       NUMBER GREATER_BAR WORD
-                       { $$ = make_redirection ( $1, r_output_force, $3); }
-       |       LESS_LESS WORD
-                       {
-                         $$ = make_redirection ( 0, r_reading_until, $2);
-                         redirection_needing_here_doc = $$;
-                         need_here_doc = 1;
-                       }
-       |       NUMBER LESS_LESS WORD
-                       {
-                         $$ = make_redirection ($1, r_reading_until, $3);
-                         redirection_needing_here_doc = $$;
-                         need_here_doc = 1;
-                       }
-       |       LESS_LESS_MINUS WORD
-                       {
-                         $$ = make_redirection ( 0, r_deblank_reading_until, $2);
-                         redirection_needing_here_doc = $$;
-                         need_here_doc = 1;
-                       }
-       |       NUMBER LESS_LESS_MINUS WORD
-                       {
-                         $$ = make_redirection ($1, r_deblank_reading_until, $3);
-                         redirection_needing_here_doc = $$;
-                         need_here_doc = 1;
-                       }
-       ;
-
-newline_list:  NEWLINE
-                       {
-                         TRACE("reduced NEWLINE to newline_list");
-                         $$  = NEWLINE; /* XXX -- broken */
-                       }
-       |       newline_list NEWLINE
-                       {
-                         TRACE("reduced newline_list newline to newline_list");
-                         $$ = NEWLINE; /* XXX -- broken */
-                       }
-       ;
-
-linebreak:     newline_list
-                       {
-                         TRACE("reduced newline_list to linebreak");
-                         $$ = NEWLINE; /* XXX -- broken */
-                       }
-       |
-                       {
-                         TRACE("reduced empty to linebreak");
-                         $$ = NEWLINE; /* XXX -- broken */
-                       }
-       ;
-
-separator_op:  '&'
-                       {
-                         TRACE("reducing '&' to separator_op");
-                         $$ = '&'; /* XXX -- broken */
-                       }
-       |       ';'
-                       {
-                         TRACE("reducing ';' to separator_op");
-                         $$ = ';'; /* XXX -- broken */
-                       }
-       ;
-
-separator:     separator_op linebreak
-                       {
-                         TRACE("reduced separator_op linebreak to separator");
-                         $$ = $1; /* XXX -- broken */
-                       }
-       |       newline_list
-                       {
-                         TRACE("reduced newline_list to separator");
-                         $$ = ';'; /* XXX -- broken */
-                       }
-       ;
-
-sequential_sep:        ';' linebreak
-                       {
-                         TRACE("reduced ';' linebreak to sequential_sep");
-                         $$ = ';'; /* XXX -- broken */
-                       }
-       |       newline_list
-                       {
-                         TRACE("reduced newline_list to sequential_sep: ';'");
-                         $$ = ';'; /* XXX -- broken */
-                       }
-       ;
-
-%%
-
-/* Initial size to allocate for tokens, and the
-   amount to grow them by. */
-#define TOKEN_DEFAULT_GROW_SIZE 512
-
-/* The token currently being read. */
-int current_token = 0;
-
-/* The last read token, or NULL.  read_token () uses this for context
-   checking. */
-int last_read_token = 0;
-
-/* The token read prior to last_read_token. */
-int token_before_that = 0;
-
-/* Global var is non-zero when end of file has been reached. */
-int EOF_Reached = 0;
-
-/* yy_getc () returns the next available character from input or EOF.
-   yy_ungetc (c) makes `c' the next character to read.
-   init_yy_io (get, unget), makes the function `get' the installed function
-   for getting the next character, and makes `unget' the installed function
-   for un-getting a character. */
-return_EOF ()                  /* does nothing good. */
-{
-  return (EOF);
-}
-
-/* Variables containing the current get and unget functions. */
-
-/* Some stream `types'. */
-#define st_stream 0
-#define st_string 1
-
-Function *get_yy_char = return_EOF;
-Function *unget_yy_char = return_EOF;
-int yy_input_type = st_stream;
-FILE *yy_input_dev = (FILE *)NULL;
-
-/* The current stream name.  In the case of a file, this is a filename. */
-char *stream_name = (char *)NULL;
-
-/* Function to set get_yy_char and unget_yy_char. */
-init_yy_io (get_function, unget_function, type, location)
-     Function *get_function, *unget_function;
-     int type;
-     FILE *location;
-{
-  get_yy_char = get_function;
-  unget_yy_char = unget_function;
-  yy_input_type = type;
-  yy_input_dev = location;
-}
-
-/* Call this to get the next character of input. */
-yy_getc ()
-{
-  return (*get_yy_char) ();
-}
-
-/* Call this to unget C.  That is, to make C the next character
-   to be read. */
-yy_ungetc (c)
-{
-  return (*unget_yy_char) (c);
-}
-
-with_input_from_stdin ()
-{
-  with_input_from_stream (stdin, "stdin");
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*   Let input come from STRING.  STRING is zero terminated.       */
-/*                                                                 */
-/* **************************************************************** */
-
-int
-yy_string_get ()
-{
-  /* If the string doesn't exist, or is empty, EOF found. */
-  if (!(char *)yy_input_dev || !*(char *)yy_input_dev)
-    return (EOF);
-  else
-    {
-      register char *temp = (char *)yy_input_dev;
-      int c = *temp++;
-      yy_input_dev = (FILE *)temp;
-      return (c);
-    }
-}
-
-int
-yy_string_unget (c)
-     int c;
-{
-  register char *temp = (char *)yy_input_dev;
-  *(--temp) = c;
-  yy_input_dev = (FILE *)temp;
-  return (c);
-}
-
-with_input_from_string (string, name)
-     char *string;
-     char *name;
-{
-  init_yy_io (yy_string_get, yy_string_unget, st_string, (FILE *)string);
-  stream_name = savestring (name);
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                  Let input come from STREAM.                    */
-/*                                                                 */
-/* **************************************************************** */
-
-int
-yy_stream_get ()
-{
-  if (yy_input_dev)
-    return (getc (yy_input_dev));
-  else
-    return (EOF);
-}
-
-int
-yy_stream_unget (c)
-     int c;
-{
-  return (ungetc (c, yy_input_dev));
-}
-
-with_input_from_stream (stream, name)
-     FILE *stream;
-     char *name;
-{
-  init_yy_io (yy_stream_get, yy_stream_unget, st_stream, stream);
-  stream_name = savestring (name);
-}
-
-typedef struct stream_saver {
-  struct stream_saver *next;
-  Function *getter, *putter;
-  int type, line;
-  char *location, *name;
-} STREAM_SAVER;
-
-/* The globally known line number. */
-int line_number = 0;
-
-STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL;
-
-push_stream ()
-{
-  STREAM_SAVER *temp = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER));
-  temp->type = yy_input_type;
-  temp->location = (char *)yy_input_dev;
-  temp->getter = get_yy_char;
-  temp->putter = unget_yy_char;
-  temp->line = line_number;
-  temp->name = stream_name; stream_name = (char *)NULL;
-  temp->next = stream_list;
-  stream_list = temp;
-  EOF_Reached = line_number = 0;
-}
-
-pop_stream ()
-{
-  if (!stream_list)
-    {
-      EOF_Reached = 1;
-    }
-  else
-    {
-      STREAM_SAVER *temp = stream_list;
-    
-      EOF_Reached = 0;
-      stream_list = stream_list->next;
-
-      if (stream_name)
-       free (stream_name);
-      stream_name = temp->name;
-
-      init_yy_io (temp->getter, temp->putter, temp->type, (FILE *)temp->location);
-      line_number = temp->line;
-      free (temp);
-    }
-}
-static int in_case_pattern_list = 0;
-
-\f
-/* Return a line of text, taken from wherever yylex () reads input.
-   If there is no more input, then we return NULL. */
-char *
-read_a_line ()
-{
-  char *line_buffer = (char *)NULL;
-  int indx = 0, buffer_size = 0;
-  int c;
-
-  while (1)
-    {
-      c = yy_getc ();
-
-      if (c == 0)
-       continue;
-
-      /* If there is no more input, then we return NULL. */
-      if (c == EOF)
-       {
-         c = '\n';
-         if (!line_buffer)
-           return ((char *)NULL);
-       }
-
-      /* `+2' in case the final (200'th) character in the buffer is a newline;
-        otherwise the code below that NULL-terminates it will write over the
-        201st slot and kill the range checking in free(). */
-      if (indx + 2 > buffer_size)
-       if (!buffer_size)
-         line_buffer = (char *)xmalloc (buffer_size = 200);
-       else
-         line_buffer = (char *)xrealloc (line_buffer, buffer_size += 200);
-
-      line_buffer[indx++] = c;
-      if (c == '\n')
-       {
-         line_buffer[indx] = '\0';
-         return (line_buffer);
-       }
-    }
-}
-
-/* Return a line as in read_a_line (), but insure that the prompt is
-   the secondary prompt. */
-char *
-read_secondary_line ()
-{
-  prompt_string_pointer = &ps2_prompt;
-  prompt_again ();
-  return (read_a_line ());
-}
-
-\f
-/* **************************************************************** */
-/*                                                                 */
-/*                             YYLEX ()                            */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Reserved words.  These are only recognized as the first word of a
-   command.  TOKEN_WORD_ALIST. */
-STRING_INT_ALIST word_token_alist[] = {
-  {"if", IF},
-  {"then", THEN},
-  {"else", ELSE},
-  {"elif", ELIF},
-  {"fi", FI},
-  {"case", CASE},
-  {"esac", ESAC},
-  {"for", FOR},
-  {"while", WHILE},
-  {"until", UNTIL},
-  {"do", DO},
-  {"done", DONE},
-  {"in", IN},
-  {"function", FUNCTION},
-  {"{", '{'},
-  {"}", '}'},
-  {"!", BANG},
-  {(char *)NULL, 0}
-};
-
-/* Where shell input comes from.  History expansion is performed on each
-   line when the shell is interactive. */
-char *shell_input_line = (char *)NULL;
-int shell_input_line_index = 0;
-int shell_input_line_size = 0; /* Amount allocated for shell_input_line. */
-int shell_input_line_len = 0;  /* strlen (shell_input_line) */
-
-/* Either zero, or EOF. */
-int shell_input_line_terminator = 0;
-
-/* Return the next shell input character.  This always reads characters
-   from shell_input_line; when that line is exhausted, it is time to
-   read the next line. */
-int
-shell_getc (remove_quoted_newline)
-     int remove_quoted_newline;
-{
-  int c;
-
-  QUIT;
-
-  if (!shell_input_line || !shell_input_line[shell_input_line_index])
-    {
-      register int i, l;
-      char *pre_process_line (), *expansions;
-
-      restart_read_next_line:
-
-      line_number++;
-
-    restart_read:
-
-      i = 0;
-      shell_input_line_terminator = 0;
-
-      clearerr (stdin);
-      while (c = yy_getc ())
-       {
-         if (i + 2 > shell_input_line_size)
-           shell_input_line = (char *)
-             xrealloc (shell_input_line, shell_input_line_size += 256);
-
-         if (c == EOF)
-           {
-             clearerr (stdin);
-
-             if (!i)
-               shell_input_line_terminator = EOF;
-
-             shell_input_line[i] = '\0';
-             break;
-           }
-
-         shell_input_line[i++] = c;
-
-         if (c == '\n')
-           {
-             shell_input_line[--i] = '\0';
-             current_command_line_count++;
-             break;
-           }
-       }
-      shell_input_line_index = 0;
-      shell_input_line_len = i;                /* == strlen (shell_input_line) */
-
-      if (!shell_input_line || !shell_input_line[0])
-       goto after_pre_process;
-
-      if (interactive)
-       {
-         expansions = pre_process_line (shell_input_line, 1, 1);
-
-         free (shell_input_line);
-         shell_input_line = expansions;
-         shell_input_line_len = shell_input_line ?
-                                strlen (shell_input_line) :
-                                0;
-         /* We have to force the xrealloc below because we don't know the
-            true allocated size of shell_input_line anymore. */
-         shell_input_line_size = shell_input_line_len;
-       }
-
-  after_pre_process:
-#if 0
-      if (shell_input_line)
-       {
-         fprintf (stderr, "%s\n", shell_input_line);
-       }
-      else
-       {
-         shell_input_line_size = 0;
-         prompt_string_pointer = &current_prompt_string;
-         prompt_again ();
-         goto restart_read;
-       }
-#endif
-
-      /* Add the newline to the end of this string, iff the string does
-        not already end in an EOF character.  */
-      if (shell_input_line_terminator != EOF)
-       {
-         l = shell_input_line_len;     /* was a call to strlen */
-
-         if (l + 3 > shell_input_line_size)
-           shell_input_line = (char *)xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
-
-         strcpy (shell_input_line + l, "\n");
-       }
-    }
-  
-  c = shell_input_line[shell_input_line_index];
-
-  if (c)
-    shell_input_line_index++;
-
-  if (c == '\\' && remove_quoted_newline &&
-      shell_input_line[shell_input_line_index] == '\n')
-    {
-       prompt_again ();
-       goto restart_read_next_line;
-    }
-
-  if (!c && shell_input_line_terminator == EOF)
-    {
-      if (shell_input_line_index != 0)
-       return (NEWLINE);
-      else
-       return (EOF);
-    }
-
-  return (c);
-}
-
-/* Put C back into the input for the shell. */
-shell_ungetc (c)
-     int c;
-{
-  if (shell_input_line && shell_input_line_index)
-    shell_input_line[--shell_input_line_index] = c;
-}
-
-/* Discard input until CHARACTER is seen. */
-discard_until (character)
-     int character;
-{
-  int c;
-  while ((c = shell_getc (0)) != EOF && c != character)
-    ;
-  if (c != EOF )
-    shell_ungetc (c);
-}
-
-#if defined (HISTORY_REEDITING)
-/* Tell readline () that we have some text for it to edit. */
-re_edit (text)
-     char *text;
-{
-#if defined (READLINE)
-  if (strcmp (stream_name, "readline stdin") == 0)
-    bash_re_edit (text);
-#endif /* READLINE */
-}
-#endif /* HISTORY_REEDITING */
-
-/* Non-zero means do no history expansion on this line, regardless
-   of what history_expansion says. */
-int history_expansion_inhibited = 0;
-
-/* Do pre-processing on LINE.  If PRINT_CHANGES is non-zero, then
-   print the results of expanding the line if there were any changes.
-   If there is an error, return NULL, otherwise the expanded line is
-   returned.  If ADDIT is non-zero the line is added to the history
-   list after history expansion.  ADDIT is just a suggestion;
-   REMEMBER_ON_HISTORY can veto, and does.
-   Right now this does history expansion. */
-char *
-pre_process_line (line, print_changes, addit)
-     char *line;
-     int print_changes, addit;
-{
-  char *return_value;
-  return_value = savestring (line);
-
-  return (return_value);
-}
-
-\f
-/* Place to remember the token.  We try to keep the buffer
-   at a reasonable size, but it can grow. */
-char *token = (char *)NULL;
-
-/* Current size of the token buffer. */
-int token_buffer_size = 0;
-
-/* Command to read_token () explaining what we want it to do. */
-#define READ 0
-#define RESET 1
-#define prompt_is_ps1 \
-      (!prompt_string_pointer || prompt_string_pointer == &ps1_prompt)
-
-/* Function for yyparse to call.  yylex keeps track of
-   the last two tokens read, and calls read_token.  */
-
-yylex ()
-{
-  if (interactive && (!current_token || current_token == NEWLINE))
-    {
-      prompt_again ();
-    }
-
-  token_before_that = last_read_token;
-  last_read_token = current_token;
-  current_token = read_token (READ);
-  return (current_token);
-}
-
-/* Called from shell.c when Control-C is typed at top level.  Or
-   by the error rule at top level. */
-reset_parser ()
-{
-  read_token (RESET);
-}
-  
-/* When non-zero, we have read the required tokens
-   which allow ESAC to be the next one read. */
-static int allow_esac_as_next = 0;
-
-/* When non-zero, accept single '{' as a token itself. */
-static int allow_open_brace = 0;
-
-/* DELIMITER is the value of the delimiter that is currently
-   enclosing, or zero for none. */
-static int delimiter = 0;
-static int old_delimiter = 0;
-
-/* When non-zero, an open-brace used to create a group is awaiting a close
-   brace partner. */
-static int open_brace_awaiting_satisfaction = 0;
-
-/* If non-zero, it is the token that we want read_token to return regardless
-   of what text is (or isn't) present to be read.  read_token resets this. */
-int token_to_read = 0;
-
-/* Read the next token.  Command can be READ (normal operation) or 
-   RESET (to normalize state). */
-read_token (command)
-     int command;
-{
-  extern int interactive_shell;        /* Whether the current shell is interactive. */
-  int character;               /* Current character. */
-  int peek_char;               /* Temporary look-ahead character. */
-  int result;                  /* The thing to return. */
-  WORD_DESC *the_word;         /* The value for YYLVAL when a WORD is read. */
-
-  if (token_buffer_size < TOKEN_DEFAULT_GROW_SIZE)
-    {
-      if (token)
-       free (token);
-      token = (char *)xmalloc (token_buffer_size = TOKEN_DEFAULT_GROW_SIZE);
-    }
-
-  if (command == RESET)
-    {
-      delimiter = old_delimiter = 0;
-      open_brace_awaiting_satisfaction = 0;
-      in_case_pattern_list = 0;
-
-      if (shell_input_line)
-       {
-         free (shell_input_line);
-         shell_input_line = (char *)NULL;
-         shell_input_line_size = shell_input_line_index = 0;
-       }
-      last_read_token = NEWLINE;
-      token_to_read = NEWLINE;
-      return (NEWLINE);
-    }
-
-  if (token_to_read)
-    {
-      int rt = token_to_read;
-      token_to_read = 0;
-      return (rt);
-    }
-
-  /* Read a single word from input.  Start by skipping blanks. */
-  while ((character = shell_getc (1)) != EOF && whitespace (character));
-
-  if (character == EOF)
-    return (yacc_EOF);
-
-  if (character == '#' && !interactive)
-    {
-      /* A comment.  Discard until EOL or EOF, and then return a newline. */
-      discard_until ('\n');
-      shell_getc (0);
-
-      /* If we're about to return an unquoted newline, we can go and collect
-        the text of any pending here document. */
-      if (need_here_doc)
-       make_here_document (redirection_needing_here_doc);
-      need_here_doc = 0;
-
-      return (NEWLINE);
-    }
-
-  if (character == '\n')
-    {
-      /* If we're about to return an unquoted newline, we can go and collect
-        the text of any pending here document. */
-      if (need_here_doc)
-       make_here_document (redirection_needing_here_doc);
-      need_here_doc = 0;
-
-      TRACE ("read_token: returning NEWLINE");
-      return (NEWLINE);
-    }
-
-  if (member (character, "()<>;&|"))
-    {
-      /* Please note that the shell does not allow whitespace to
-        appear in between tokens which are character pairs, such as
-        "<<" or ">>".  I believe this is the correct behaviour. */
-      if (character == (peek_char = shell_getc (1)))
-       {
-         switch (character)
-           {
-             /* If '<' then we could be at "<<" or at "<<-".  We have to
-                look ahead one more character. */
-           case '<':
-             peek_char = shell_getc (1);
-             if (peek_char == '-')
-               return (LESS_LESS_MINUS);
-             else
-               {
-                 shell_ungetc (peek_char);
-                 return (LESS_LESS);
-               }
-
-           case '>':
-             return (GREATER_GREATER);
-
-           case ';':
-             in_case_pattern_list = 1;
-             return (SEMI_SEMI);
-
-           case '&':
-             return (AND_AND);
-
-           case '|':
-             return (OR_OR);
-           }
-       }
-      else
-       {
-         if (peek_char == '&')
-           {
-             switch (character)
-               {
-               case '<': return (LESS_AND);
-               case '>': return (GREATER_AND);
-               }
-           }
-         if (character == '<' && peek_char == '>')
-           return (LESS_GREATER);
-         if (character == '>' && peek_char == '|')
-           return (GREATER_BAR);
-         if (peek_char == '>' && character == '&')
-           return (AND_GREATER);
-       }
-      shell_ungetc (peek_char);
-
-      /* If we look like we are reading the start of a function
-        definition, then let the reader know about it so that
-        we will do the right thing with `{'. */
-      if (character == ')' &&
-         last_read_token == '(' && token_before_that == WORD)
-       {
-         allow_open_brace = 1;
-       }
-
-      if (in_case_pattern_list && (character == ')'))
-       in_case_pattern_list = 0;
-#if defined (PROCESS_SUBSTITUTION)
-      /* If we are performing process substitution, let <( and >( by
-        and make a word. */
-      if (!((character == '>' || character == '<') && peek_char == '('))
-#endif /* PROCESS_SUBSTITUTION */
-
-      TRACE("read_token: returning '%c'", character);
-      return (character);
-    }
-
-  /* Hack <&- (close stdin) case. */
-  if (character == '-')
-    {
-      switch (last_read_token)
-       {
-       case LESS_AND:
-       case GREATER_AND:
-         return (character);
-       }
-    }
-  
-  /* Okay, if we got this far, we have to read a word.  Read one,
-     and then check it against the known ones. */
-  {
-    /* Index into the token that we are building. */
-    int token_index = 0;
-
-    /* ALL_DIGITS becomes zero when we see a non-digit. */
-    int all_digits = digit (character);
-
-    /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */
-    int dollar_present = 0;
-
-    /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */
-    int quoted = 0;
-
-    /* Non-zero means to ignore the value of the next character, and just
-       to add it no matter what. */
-    int pass_next_character = 0;
-
-    /* Non-zero means parsing a dollar-paren construct.  It is the count of
-       un-quoted closes we need to see. */
-    int dollar_paren_level = 0;
-
-    /* Non-zero means parsing a dollar-bracket construct ($[...]).  It is
-       the count of un-quoted `]' characters we need to see. */
-    int dollar_bracket_level = 0;
-
-    /* Another level variable.  This one is for dollar_parens inside of
-       double-quotes. */
-    int delimited_paren_level = 0;
-
-    for (;;)
-      {
-       if (character == EOF)
-         goto got_token;
-
-       if (pass_next_character)
-         {
-           pass_next_character = 0;
-           goto got_character;
-         }
-
-      if (delimiter && character == '\\' && delimiter != '\'')
-       {
-         peek_char = shell_getc (0);
-         if (peek_char != '\\')
-           shell_ungetc (peek_char);
-         else
-           {
-             token[token_index++] = character;
-             goto got_character;
-           }
-       }
-
-       /* Handle backslashes.  Quote lots of things when not inside of
-          double-quotes, quote some things inside of double-quotes. */
-          
-       if (character == '\\' && delimiter != '\'')
-         {
-           peek_char = shell_getc (0);
-
-           /* Backslash-newline is ignored in all cases excepting
-              when quoted with single quotes. */
-           if (peek_char == '\n')
-             {
-               character = '\n';
-               goto next_character;
-             }
-           else
-             {
-               shell_ungetc (peek_char);
-
-               /* If the next character is to be quoted, do it now. */
-               if (!delimiter || delimiter == '`' ||
-                   ((delimiter == '"' ) &&
-                    (member (peek_char, slashify_in_quotes))))
-                 {
-                   pass_next_character++;
-                   quoted = 1;
-                   goto got_character;
-                 }
-             }
-         }
-
-       /* This is a hack, in its present form.  If a backquote substitution
-          appears within double quotes, everything within the backquotes
-          should be read as part of a single word.  Jesus.  Now I see why
-          Korn introduced the $() form. */
-       if (delimiter && delimiter == '"' && character == '`')
-         {
-           old_delimiter = delimiter;
-           delimiter = character;
-           goto got_character;
-         }
-
-       if (delimiter)
-         {
-           if (character == delimiter)
-             {
-               if (delimited_paren_level)
-                 {
-#if defined (NOTDEF)
-                   report_error ("Expected ')' before %c", character);
-                   return (NEWLINE);
-#else
-                   goto got_character;
-#endif /* NOTDEF */
-                 }
-
-               delimiter = 0;
-
-               if (old_delimiter == '"' && character == '`')
-                 {
-                   delimiter = old_delimiter;
-                   old_delimiter = 0;
-                 }
-
-               goto got_character;
-             }
-         }
-
-       if (!delimiter || delimiter == '`' || delimiter == '"')
-         {
-#if defined (PROCESS_SUBSTITUTION)
-           if (character == '$' || character == '<' || character == '>')
-#else
-           if (character == '$')
-#endif /* PROCESS_SUBSTITUTION */
-             {
-               peek_char = shell_getc (1);
-               shell_ungetc (peek_char);
-               if (peek_char == '(')
-                 {
-                   if (!delimiter)
-                     dollar_paren_level++;
-                   else
-                     delimited_paren_level++;
-
-                   pass_next_character++;
-                   goto got_character;
-                 }
-               else if (peek_char == '[')
-                 {
-                   if (!delimiter)
-                     dollar_bracket_level++;
-
-                   pass_next_character++;
-                   goto got_character;
-                 }
-             }
-
-           /* If we are parsing a $() or $[] construct, we need to balance
-              parens and brackets inside the construct.  This whole function
-              could use a rewrite. */
-           if (character == '(')
-             {
-               if (delimiter && delimited_paren_level)
-                 delimited_paren_level++;
-
-               if (!delimiter && dollar_paren_level)
-                 dollar_paren_level++;
-             }
-
-           if (character == '[')
-             {
-               if (!delimiter && dollar_bracket_level)
-                 dollar_bracket_level++;
-             }
-
-           /* This code needs to take into account whether we are inside a
-              case statement pattern list, and whether this paren is supposed
-              to terminate it (hey, it could happen).  It's not as simple
-              as just using in_case_pattern_list, because we're not parsing
-              anything while we're reading a $( ) construct.  Maybe we
-              should move that whole mess into the yacc parser. */
-           if (character == ')')
-             {
-               if (delimiter && delimited_paren_level)
-                 delimited_paren_level--;
-
-               if (!delimiter && dollar_paren_level)
-                 {
-                   dollar_paren_level--;
-                   goto got_character;
-                 }
-             }
-
-           if (character == ']')
-             {
-               if (!delimiter && dollar_bracket_level)
-                 {
-                   dollar_bracket_level--;
-                   goto got_character;
-                 }
-             }
-         }
-
-       if (!dollar_paren_level && !dollar_bracket_level && !delimiter &&
-           member (character, " \t\n;&()|<>"))
-         {
-           shell_ungetc (character);
-           goto got_token;
-         }
-    
-       if (!delimiter)
-         {
-           if (character == '"' || character == '`' || character == '\'')
-             {
-               quoted = 1;
-               delimiter = character;
-               goto got_character;
-             }
-         }
-
-       if (all_digits) all_digits = digit (character);
-       if (character == '$') dollar_present = 1;
-
-      got_character:
-
-       token[token_index++] = character;
-
-       if (token_index == (token_buffer_size - 1))
-         token = (char *)xrealloc (token, (token_buffer_size
-                                           += TOKEN_DEFAULT_GROW_SIZE));
-       {
-         char *decode_prompt_string ();
-
-       next_character:
-         if (character == '\n' && interactive && yy_input_type != st_string)
-           prompt_again ();
-       }
-       /* We want to remove quoted newlines (that is, a \<newline> pair)
-          unless we are within single quotes or pass_next_character is
-          set (the shell equivalent of literal-next). */
-       character = shell_getc ((delimiter != '\'') && (!pass_next_character));
-      }
-
-  got_token:
-
-    token[token_index] = '\0';
-       
-    if ((delimiter || dollar_paren_level || dollar_bracket_level) &&
-       character == EOF)
-      {
-       if (dollar_paren_level && !delimiter)
-         delimiter = ')';
-       else if (dollar_bracket_level && !delimiter)
-         delimiter = ']';
-
-       report_error ("Unexpected EOF.  Looking for `%c'.", delimiter);
-       return (-1);
-      }
-
-    if (all_digits)
-      {
-       /* Check to see what thing we should return.  If the last_read_token
-          is a `<', or a `&', or the character which ended this token is
-          a '>' or '<', then, and ONLY then, is this input token a NUMBER.
-          Otherwise, it is just a word, and should be returned as such. */
-
-       if ((character == '<' || character == '>') ||
-           (last_read_token == LESS_AND ||
-            last_read_token == GREATER_AND))
-         {
-           yylval.number = atoi (token); /* was sscanf (token, "%d", &(yylval.number)); */
-           return (NUMBER);
-         }
-      }
-
-    /* Handle special case.  IN is recognized if the last token
-       was WORD and the token before that was FOR or CASE. */
-    if ((last_read_token == WORD) &&
-       ((token_before_that == FOR) || (token_before_that == CASE)) &&
-       (STREQ (token, "in")))
-      {
-       if (token_before_that == CASE)
-         {
-           in_case_pattern_list = 1;
-           allow_esac_as_next++;
-         }
-       TRACE("returning %s as IN", token);
-       return (IN);
-      }
-
-    /* Ditto for DO in the FOR case. */
-    if ((last_read_token == WORD) && (token_before_that == FOR) &&
-       (STREQ (token, "do")))
-      return (DO);
-
-    /* Ditto for ESAC in the CASE case. 
-       Specifically, this handles "case word in esac", which is a legal
-       construct, certainly because someone will pass an empty arg to the
-       case construct, and we don't want it to barf.  Of course, we should
-       insist that the case construct has at least one pattern in it, but
-       the designers disagree. */
-    if (allow_esac_as_next)
-      {
-       allow_esac_as_next--;
-       if (STREQ (token, "esac"))
-         {
-           in_case_pattern_list = 0;
-           return (ESAC);
-         }
-      }
-
-    /* Ditto for `{' in the FUNCTION case. */
-    if (allow_open_brace)
-      {
-       allow_open_brace = 0;
-       if (STREQ (token, "{"))
-         {
-           open_brace_awaiting_satisfaction++;
-           return ('{');
-         }
-      }
-
-    /* Check to see if it is a reserved word.  */
-    if (!dollar_present && !quoted &&
-       reserved_word_acceptable (last_read_token))
-      {
-       int i;
-       for (i = 0; word_token_alist[i].word != (char *)NULL; i++)
-         if (STREQ (token, word_token_alist[i].word))
-           {
-             if (in_case_pattern_list && (word_token_alist[i].token != ESAC))
-               break;
-
-             if (word_token_alist[i].token == ESAC)
-               in_case_pattern_list = 0;
-
-             if (word_token_alist[i].token == '{')
-               open_brace_awaiting_satisfaction++;
-
-             TRACE("returning %s as %d", token, word_token_alist[i].token);
-             return (word_token_alist[i].token);
-           }
-      }
-
-    /* What if we are attempting to satisfy an open-brace grouper? */
-    if (open_brace_awaiting_satisfaction && strcmp (token, "}") == 0)
-      {
-       open_brace_awaiting_satisfaction--;
-       return ('}');
-      }
-
-    the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
-    the_word->word = (char *)xmalloc (1 + strlen (token));
-    strcpy (the_word->word, token);
-    the_word->dollar_present = dollar_present;
-    the_word->quoted = quoted;
-    the_word->assignment = assignment (token);
-
-    yylval.word = the_word;
-
-    result = WORD;
-
-    if ((last_read_token == ASSIGNMENT_WORD || command_word_acceptable (last_read_token)) &&
-        the_word->assignment &&
-        token[0] != '=' &&
-        legal_assignment (token))
-      result = ASSIGNMENT_WORD;
-
-    TRACE("read_token: returning %s as %s", token,
-               (result == WORD) ? "WORD" :
-                                  result == NAME ? "NAME" : "ASSIGNMENT_WORD");
-    if (last_read_token == FUNCTION)
-      allow_open_brace = 1;
-  }
-  return (result);
-}
-
-legal_assignment (s)
-char *s;
-{
-  extern char *index ();
-  char *t = index (s, '=');
-  int result;
-
-  *t = '\0';
-  result = legal_identifier (s);
-  *t = '=';
-  return (result);
-}
-
-/* Return 1 if this token is a legal shell `identifier'; that is, it consists
-   solely of letters, digits, and underscores, and does not begin with a
-   digit. */
-legal_identifier (name)
-     char *name;
-{
-  register char *s;
-
-  if (!name || !*name)
-    return (0);
-
-  if (digit (*name))
-    return (0);
-
-  for (s = name; s && *s; s++)
-    {
-      if (!isletter (*s) && !digit (*s) && (*s != '_'))
-        return (0);
-    }
-  return (1);
-}
-
-/* Return 1 if TOKEN is a token that after being read would allow
-   a reserved word to be seen, else 0. */
-static int
-reserved_word_acceptable (token)
-     int token;
-{
-  if (member (token, "\n;()|&{") ||
-      token == AND_AND ||
-      token == BANG ||
-      token == DO ||
-      token == ELIF ||
-      token == ELSE ||
-      token == IF ||
-      token == FI ||
-      token == ESAC ||
-      token == OR_OR ||
-      token == SEMI_SEMI ||
-      token == THEN ||
-      token == UNTIL ||
-      token == WHILE ||
-      token == 0)
-    return (1);
-  else
-    return (0);
-}
-
-/* Return 1 if TOKEN is a token that after being read would allow
-   a reserved word to be seen, else 0. */
-static int
-command_word_acceptable (token)
-     int token;
-{
-  if (member (token, "\n;()|&{") ||
-      token == AND_AND ||
-      token == BANG ||
-      token == DO ||
-      token == ELIF ||
-      token == ELSE ||
-      token == IF ||
-      token == OR_OR ||
-      token == THEN ||
-      token == UNTIL ||
-      token == WHILE ||
-      token == 0)
-    return (1);
-  else
-    return (0);
-}
-
-reset_readline_prompt ()
-{
-}
-
-/* Add a line to the history list.
-   The variable COMMAND_ORIENTED_HISTORY controls the style of history
-   remembering;  when non-zero, and LINE is not the first line of a
-   complete parser construct, append LINE to the last history line instead
-   of adding it as a new line. */
-bash_add_history (line)
-     char *line;
-{
-}
-\f
-/* Issue a prompt, or prepare to issue a prompt when the next character
-   is read. */
-prompt_again ()
-{
-  char *temp_prompt, *decode_prompt_string ();
-
-  ps1_prompt = "posix$ ";
-  ps2_prompt = "> ";
-
-  if (!prompt_string_pointer)
-    prompt_string_pointer = &ps1_prompt;
-
-  current_prompt_string = *prompt_string_pointer;
-  prompt_string_pointer = &ps2_prompt;
-
-  fprintf (stderr, "%s", current_prompt_string);
-  fflush (stderr);
-}
-
-char *
-decode_prompt_string (string)
-     char *string;
-{
-  char *result;
-  result = savestring (string);
-
-  return (result);
-}
-
-/* Report a syntax error, and restart the parser.  Call here for fatal
-   errors. */
-yyerror ()
-{
-  report_syntax_error ((char *)NULL);
-  reset_parser ();
-}
-
-/* Report a syntax error with line numbers, etc.
-   Call here for recoverable errors.  If you have a message to print,
-   then place it in MESSAGE, otherwise pass NULL and this will figure
-   out an appropriate message for you. */
-report_syntax_error (message)
-     char *message;
-{
-  if (message)
-    {
-      if (!interactive)
-       {
-         char *name = stream_name ? stream_name : "stdin";
-         report_error ("%s:%d: `%s'", name, line_number, message);
-       }
-      else
-       report_error ("%s", message);
-
-      return;
-    }
-
-  if (shell_input_line && *shell_input_line)
-    {
-      char *error_token, *t = shell_input_line;
-      register int i = shell_input_line_index;
-      int token_end = 0;
-
-      if (!t[i] && i)
-       i--;
-
-      while (i && (t[i] == ' ' || t[i] == '\t' || t[i] == '\n'))
-       i--;
-
-      if (i)
-       token_end = i + 1;
-
-      while (i && !member (t[i], " \n\t;|&"))
-       i--;
-
-      while (i != token_end && member (t[i], " \n\t"))
-       i++;
-
-      if (token_end)
-       {
-         error_token = (char *)alloca (1 + (token_end - i));
-         strncpy (error_token, t + i, token_end - i);
-         error_token[token_end - i] = '\0';
-
-         report_error ("syntax error near `%s'", error_token);
-       }
-      else if ((i == 0) && (token_end == 0))   /* a 1-character token */
-       {
-         error_token = (char *) alloca (2);
-         strncpy(error_token, t + i, 1);
-         error_token[1] = '\0';
-
-         report_error ("syntax error near `%s'", error_token);
-       }
-
-      if (!interactive)
-       {
-         char *temp = savestring (shell_input_line);
-         char *name = stream_name ? stream_name : "stdin";
-         int l = strlen (temp);
-
-         while (l && temp[l - 1] == '\n')
-           temp[--l] = '\0';
-
-         report_error ("%s:%d: `%s'", name, line_number, temp);
-         free (temp);
-       }
-    }
-  else
-    report_error ("Syntax error");
-}
-
-/* ??? Needed function. ??? We have to be able to discard the constructs
-   created during parsing.  In the case of error, we want to return
-   allocated objects to the memory pool.  In the case of no error, we want
-   to throw away the information about where the allocated objects live.
-   (dispose_command () will actually free the command. */
-discard_parser_constructs (error_p)
-     int error_p;
-{
-/*   if (error_p) {
-     fprintf (stderr, "*");
-  } */
-}
-   
-handle_eof_input_unit ()
-{
-  EOF_Reached = 1;
-}
-
-TRACE(va_alist)
-va_dcl
-{
-  va_list args;
-  char *format;
-  
-  va_start (args);
-  fprintf(stderr, "TRACE: ");
-  format = va_arg (args, char *);
-  vfprintf (stderr, format, args);
-  fprintf (stderr, "\n");
-        
-  va_end (args);
-}
diff --git a/CWRU/posix-parser/shell.h b/CWRU/posix-parser/shell.h
deleted file mode 100644 (file)
index 9fb1442..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/* shell.h -- The data structures used by the shell */
-
-#include "config.h"
-#include "general.h"
-#include "error.h"
-#include "variables.h"
-#include "quit.h"
-#include "maxpath.h"
-#include "unwind_prot.h"
-#include "command.h"
-
-extern int EOF_Reached;
-
-#define NO_PIPE -1
-#define REDIRECT_BOTH -2
-#define IS_DESCRIPTOR -1
-
-#define NO_VARIABLE -1
-
-/* A bunch of stuff for flow of control using setjmp () and longjmp (). */
-#include <setjmp.h>
-extern jmp_buf top_level, catch;
-
-#define NOT_JUMPED 0           /* Not returning from a longjmp. */
-#define FORCE_EOF 1            /* We want to stop parsing. */
-#define DISCARD 2              /* Discard current command. */
-#define EXITPROG 3             /* Unconditionally exit the program now. */
-
-/* Values that can be returned by execute_command (). */
-#define EXECUTION_FAILURE 1
-#define EXECUTION_SUCCESS 0
-
-/* Special exit status used when the shell is asked to execute a
-   binary file as a shell script. */
-#define EX_BINARY_FILE 126
-
-/* The list of characters that are quoted in double-quotes with a
-   backslash.  Other characters following a backslash cause nothing
-   special to happen. */
-#define slashify_in_quotes "\\`$\""
-#define slashify_in_here_document "\\`$"
-
-/* Constants which specify how to handle backslashes and quoting in
-   expand_word_internal ().  Q_DOUBLE_QUOTES means to use the function
-   slashify_in_quotes () to decide whether the backslash should be
-   retained.  Q_HERE_DOCUMENT means slashify_in_here_document () to
-   decide whether to retain the backslash.  Q_KEEP_BACKSLASH means
-   to unconditionally retain the backslash. */
-#define Q_DOUBLE_QUOTES  0x1
-#define Q_HERE_DOCUMENT  0x2
-#define Q_KEEP_BACKSLASH 0x4
-
-extern char **shell_environment;
-extern WORD_LIST *rest_of_args;
-
-/* Generalized global variables. */
-extern int executing, login_shell;
-
-/* Structure to pass around that holds a bitmap of file descriptors
-   to close, and the size of that structure.  Used in execute_cmd.c. */
-struct fd_bitmap {
-  long size;
-  char *bitmap;
-};
-
-#define FD_BITMAP_SIZE 32
-
-#if defined (EIGHT_BIT)
-#  define CTLESC '\001'
-#  define CTLNUL '\002'
-#endif /* EIGHT_BIT */
diff --git a/CWRU/save/unwind_prot.c.sighandling b/CWRU/save/unwind_prot.c.sighandling
deleted file mode 100644 (file)
index a334767..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/* I can't stand it anymore!  Please can't we just write the
-   whole Unix system in lisp or something? */
-
-/* Copyright (C) 1987,1989 Free Software Foundation, Inc.
-
-This file is part of GNU Bash, the Bourne Again SHell.
-
-Bash is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 1, or (at your option) any later
-version.
-
-Bash is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License along
-with Bash; see the file COPYING.  If not, write to the Free Software
-Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                   Unwind Protection Scheme for Bash             */
-/*                                                                 */
-/* **************************************************************** */
-#include <sys/types.h>
-#include <signal.h>
-#include "config.h"
-#include "general.h"
-#include "unwind_prot.h"
-
-/* If CLEANUP is null, then ARG contains a tag to throw back to. */
-typedef struct _uwp {
-  struct _uwp *next;
-  Function *cleanup;
-  char *arg;
-} UNWIND_ELT;
-
-static void
-  unwind_frame_discard_internal (), unwind_frame_run_internal (),
-  add_unwind_protect_internal (), remove_unwind_protect_internal (),
-  run_unwind_protects_internal ();
-
-static UNWIND_ELT *unwind_protect_list = (UNWIND_ELT *)NULL;
-
-/* Run a function without interrupts. */
-void
-without_interrupts (function, arg1, arg2)
-     VFunction *function;
-     char *arg1, *arg2;
-{
-#if defined (_POSIX_VERSION)
-  static int sets_done = 0;
-  static sigset_t set;
-  sigset_t oset;
-
-  /* SET needs to be initialized only once. */
-  if (sets_done == 0)
-    {
-      sigemptyset (&set);
-      sigaddset (&set, SIGINT);
-      sets_done = 1;
-    }
-  sigemptyset (&oset);
-
-  sigprocmask (SIG_BLOCK, &set, &oset);
-#else
-#  if defined (USG)
-  SigHandler *old_int;
-
-  old_int = (SigHandler *)signal (SIGINT, SIG_IGN);
-#  else
-  int oldmask = sigblock (SIGINT);
-#  endif
-#endif
-
-  (*function)(arg1, arg2);
-
-#if defined (_POSIX_VERSION)
-  sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
-#else
-#  if defined (USG)
-  signal (SIGINT, old_int);
-#  else
-  sigsetmask (oldmask);
-#  endif
-#endif
-}
-
-/* Start the beginning of a region. */
-void
-begin_unwind_frame (tag)
-     char *tag;
-{
-  add_unwind_protect ((Function *)NULL, tag);
-}
-
-/* Discard the unwind protects back to TAG. */
-void
-discard_unwind_frame (tag)
-     char *tag;
-{
-  if (unwind_protect_list)
-    without_interrupts (unwind_frame_discard_internal, tag, (char *)NULL);
-}
-
-/* Run the unwind protects back to TAG. */
-void
-run_unwind_frame (tag)
-     char *tag;
-{
-  if (unwind_protect_list)
-    without_interrupts (unwind_frame_run_internal, tag, (char *)NULL);
-}
-
-/* Add the function CLEANUP with ARG to the list of unwindable things. */
-void
-add_unwind_protect (cleanup, arg)
-     Function *cleanup;
-     char *arg;
-{
-  without_interrupts (add_unwind_protect_internal, (char *)cleanup, arg);
-}
-
-/* Remove the top unwind protect from the list. */
-void
-remove_unwind_protect ()
-{
-  if (unwind_protect_list)
-    without_interrupts
-      (remove_unwind_protect_internal, (char *)NULL, (char *)NULL);
-}
-
-/* Run the list of cleanup functions in unwind_protect_list. */
-void
-run_unwind_protects ()
-{
-  if (unwind_protect_list)
-    without_interrupts
-      (run_unwind_protects_internal, (char *)NULL, (char *)NULL);
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                        The Actual Functions                             */
-/*                                                                 */
-/* **************************************************************** */
-
-static void
-add_unwind_protect_internal (cleanup, arg)
-     Function *cleanup;
-     char *arg;
-{
-  UNWIND_ELT *elt;
-
-  elt = (UNWIND_ELT *)xmalloc (sizeof (UNWIND_ELT));
-  elt->cleanup = cleanup;
-  elt->arg = arg;
-  elt->next = unwind_protect_list;
-  unwind_protect_list = elt;
-}
-
-static void
-remove_unwind_protect_internal ()
-{
-  UNWIND_ELT *elt = unwind_protect_list;
-
-  if (elt)
-    {
-      unwind_protect_list = unwind_protect_list->next;
-      free (elt);
-    }
-}
-
-static void
-run_unwind_protects_internal ()
-{
-  UNWIND_ELT *t, *elt = unwind_protect_list;
-
-  while (elt)
-   {
-      /* This function can be run at strange times, like when unwinding
-       the entire world of unwind protects.  Thus, we may come across
-        an element which is simply a label for a catch frame.  Don't call
-        the non-existant function. */
-      if (elt->cleanup)
-       (*(elt->cleanup)) (elt->arg);
-
-      t = elt;
-      elt = elt->next;
-      free (t);
-    }
-  unwind_protect_list = elt;
-}
-
-static void
-unwind_frame_discard_internal (tag)
-     char *tag;
-{
-  UNWIND_ELT *elt;
-
-  while (elt = unwind_protect_list)
-    {
-      unwind_protect_list = unwind_protect_list->next;
-      if (!elt->cleanup && (STREQ (elt->arg, tag)))
-       {
-         free (elt);
-         break;
-       }
-      else
-       free (elt);
-    }
-}
-
-static void
-unwind_frame_run_internal (tag)
-     char *tag;
-{
-  UNWIND_ELT *elt;
-
-  while (elt = unwind_protect_list)
-    {
-      unwind_protect_list = elt->next;
-
-      /* If tag, then compare. */
-      if (!elt->cleanup)
-       {
-         if (STREQ (elt->arg, tag))
-           {
-             free (elt);
-             break;
-           }
-         free (elt);
-         continue;
-       }
-      else
-       {
-         (*(elt->cleanup)) (elt->arg);
-         free (elt);
-       }
-    }
-}
-
-/* Structure describing a saved variable and the value to restore it to. */
-typedef struct {
-  int *variable;
-  char *desired_setting;
-  int size;
-} SAVED_VAR;
-
-/* Restore the value of a variable, based on the contents of SV.  If
-   sv->size is greater than sizeof (int), sv->desired_setting points to
-   a block of memory SIZE bytes long holding the value, rather than the
-   value itself.  This block of memory is copied back into the variable. */
-static void
-restore_variable (sv)
-     SAVED_VAR *sv;
-{
-  if (sv->size > sizeof (int))
-    {
-      bcopy ((char *)sv->desired_setting, (char *)sv->variable, sv->size);
-      free (sv->desired_setting);
-    }
-  else
-    *(sv->variable) = (int)sv->desired_setting;
-
-  free (sv);
-}
-
-/* Save the value of a variable so it will be restored when unwind-protects
-   are run.  VAR is a pointer to the variable.  VALUE is the value to be
-   saved.  SIZE is the size in bytes of VALUE.  If SIZE is bigger than what
-   can be saved in an int, memory will be allocated and the value saved
-   into that using bcopy (). */
-void
-unwind_protect_var (var, value, size)
-     int *var;
-     char *value;
-     int size;
-{
-  SAVED_VAR *s = (SAVED_VAR *)xmalloc (sizeof (SAVED_VAR));
-
-  s->variable = var;
-  if (size > sizeof (int))
-    {
-      s->desired_setting = (char *)xmalloc (size);
-      bcopy (value, (char *)s->desired_setting, size);
-    }
-  else
-    s->desired_setting = value;
-  s->size = size;
-  add_unwind_protect ((Function *)restore_variable, (char *)s);
-}
diff --git a/doc/article.pt.ps b/doc/article.pt.ps
deleted file mode 100644 (file)
index 875a04e..0000000
+++ /dev/null
@@ -1,1331 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.08
-%%DocumentNeededResources: font Palatino-Bold
-%%+ font Palatino-Italic
-%%+ font Palatino-Roman
-%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.08 0
-%%Pages: 12
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.08 0
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll 
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Palatino-Bold
-%%IncludeResource: font Palatino-Italic
-%%IncludeResource: font Palatino-Roman
-%%IncludeResource: font Courier
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
-792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
-/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
-/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
-/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
-/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
-/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
-/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
-/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
-/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
-/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
-/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
-/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
-/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
-/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
-/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
-/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
-/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
-/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
-/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE
-/Palatino-Roman@0 ENC0/Palatino-Roman RE/Palatino-Italic@0 ENC0/Palatino-Italic
-RE/Palatino-Bold@0 ENC0/Palatino-Bold RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 12/Palatino-Bold@0 SF(Bash \255 The GNU shell*)223.71 120 Q/F1 10
-/Palatino-Italic@0 SF(Chet Ramey)263.415 144 Q(Case W)220.45 156 Q
-(estern Reserve University)-.2 E(chet@po.cwru.edu)251.305 168 Q/F2 10
-/Palatino-Bold@0 SF 2.5(1. Introduction)72 234 R(Bash)97 249.6 Q/F3 10
-/Palatino-Roman@0 SF .551(is the shell, or command language interpr)3.051 F
-(eter)-.18 E 3.051(,t)-.74 G .55(hat will appear in the GNU operating)334.708
-249.6 R 4.36(system. The)72 261.6 R 1.86(name is an acr)4.36 F 1.861
-(onym for the `)-.18 F 1.861(`Bourne-Again SHell')-.37 F 1.861
-(', a pun on Steve Bourne, the)-.37 F 1.274(author of the dir)72 273.6 R 1.274
-(ect ancestor of the curr)-.18 F(ent)-.18 E/F4 9/Palatino-Roman@0 SF(UNIX)3.774
-E F3 3.773<8773>C(hell)307.862 273.6 Q F1(/bin/sh)3.773 E F3 3.773(,w)C 1.273
-(hich appear)370.458 273.6 R 1.273(ed in the Seventh)-.18 F
-(Edition Bell Labs Resear)72 285.6 Q(ch version of)-.18 E F4(UNIX)2.5 E F3(.)A
-.925(Bash is an)97 301.2 R F2(sh)3.425 E F3 .925
-(\255compatible shell that incorporates useful featur)B .926(es fr)-.18 F .926
-(om the Korn shell \()-.18 F F2(ksh)A F3(\))A .737(and the C shell \()72 313.2
-R F2(csh)A F3 .737(\), described later in this article.)B .737
-(It is ultimately intended to be a conformant)5.737 F .278
-(implementation of the IEEE POSIX Shell and Utilities speci\214cation \(IEEE W)
-72 325.2 R .279(orking Gr)-.92 F .279(oup 1003.2\).)-.18 F(It of)72 337.2 Q
-(fers functional impr)-.18 E(ovements over sh for both interactive and pr)-.18
-E(ogramming use.)-.18 E 1.299(While the GNU operating system will most likely \
-include a version of the Berkeley shell)97 352.8 R .527
-(csh, Bash will be the default shell.)72 364.8 R .527(Like other GNU softwar)
-5.527 F .527(e, Bash is quite portable.)-.18 F .527(It curr)5.527 F(ently)-.18
-E -.08(ru)72 376.8 S 1.391(ns on nearly every version of).08 F F4(UNIX)3.891 E
-F3 1.391(and a few other operating systems \255 an independently-)3.891 F .278
-(supported port exists for OS/2, and ther)72 388.8 R 2.779(ea)-.18 G .639 -.18
-(re r)264.36 388.8 T .279(umors of ports to DOS and W).1 F .279(indows NT)-.55
-F 5.279(.P)-.74 G .279(orts to)475.591 388.8 R F4(UNIX)72 400.8 Q F3
-(-like systems such as QNX and Minix ar)A 2.5(ep)-.18 G
-(art of the distribution.)285.547 400.8 Q .897
-(The original author of Bash was Brian Fox, an employee of the Fr)97 416.4 R
-.896(ee Softwar)-.18 F 3.396(eF)-.18 G(oundation.)455.63 416.4 Q 1.287
-(The curr)72 428.4 R 1.287(ent developer and maintainer is Chet Ramey)-.18 F
-3.787(,av)-1.11 G 1.287(olunteer who works at Case W)335.573 428.4 R(estern)
--.92 E(Reserve University)72 440.4 Q(.)-1.11 E F2 2.5(2. What')72 464.4 R 2.5
-(sP)-.55 G(OSIX, anyway?)124.22 464.4 Q F1(POSIX)97 480 Q F3 .947
-(is a name originally coined by Richar)5.113 F 3.447(dS)-.18 G .947
-(tallman for a family of open system stan-)316.422 480 R(dar)72 492 Q .644
-(ds based on)-.18 F F4(UNIX)3.144 E F3 5.644(.T)C(her)181.403 492 Q 3.144(ea)
--.18 G 1.004 -.18(re a n)208.717 492 T .644(umber of aspects of).18 F F4(UNIX)
-3.145 E F3 .645(under consideration for standar)3.145 F(d-)-.18 E .814
-(ization, fr)72 504 R .814(om the basic system services at the system call and\
- C library level to applications and)-.18 F 1.191
-(tools to system administration and management.)72 516 R 1.192(Each ar)6.191 F
-1.192(ea of standar)-.18 F 1.192(dization is assigned to a)-.18 F(working gr)72
-528 Q(oup in the 1003 series.)-.18 E .426
-(The POSIX Shell and Utilities standar)97 543.6 R 2.926(dh)-.18 G .426
-(as been developed by IEEE W)279.198 543.6 R .426(orking Gr)-.92 F .426
-(oup 1003.2)-.18 F .238
-(\(POSIX.2\).\210 It concentrates on the command interpr)72 555.6 R .238
-(eter interface and utility pr)-.18 F .238(ograms commonly)-.18 F 1.212
-(executed fr)72 567.6 R 1.212(om the command line or by other pr)-.18 F 3.712
-(ograms. An)-.18 F 1.212(initial version of the standar)3.712 F 3.712(dh)-.18 G
-(as)494.76 567.6 Q .695(been appr)72 579.6 R .695
-(oved and published by the IEEE, and work is curr)-.18 F .694
-(ently underway to update it.)-.18 F(Ther)5.694 E(e)-.18 E(ar)72 591.6 Q 2.5
-(ef)-.18 G(our primary ar)91.39 591.6 Q(eas of work in the 1003.2 standar)-.18
-E(d:)-.18 E 18.94<8341>72 607.2 S .397
-(spects of the shell's syntax and command language.)104.78 607.2 R 2.897(An)
-5.397 G .397(umber of special builtins such as)357.913 607.2 R F2(cd)97 619.2 Q
-F3(and)3.144 E F2(exec)3.144 E F3(ar)3.144 E 3.144(eb)-.18 G .644(eing speci\
-\214ed as part of the shell, since their functionality usually cannot)175.586
-619.2 R(be implemented by a separate executable;)97 631.2 Q 18.94<8341>72 646.8
-S .661(set of utilities to be called by shell scripts and applications.)107.94
-646.8 R .661(Examples ar)5.661 F 3.161(ep)-.18 G -.18(ro)447.859 646.8 S .661
-(grams like).18 F F1 3.472(sed, tr)97 658.8 R(,)-.74 E F3(and)5.972 E F1(awk.)
-4.306 E F3 1.806(Utilities commonly implemented as shell builtins ar)5.972 F
-4.305(ed)-.18 G 1.805(escribed in this)433.67 658.8 R .32 LW 76 668.8 72 668.8
-DL 80 668.8 76 668.8 DL 84 668.8 80 668.8 DL 88 668.8 84 668.8 DL 92 668.8 88
-668.8 DL 96 668.8 92 668.8 DL 100 668.8 96 668.8 DL 104 668.8 100 668.8 DL 108
-668.8 104 668.8 DL 112 668.8 108 668.8 DL 116 668.8 112 668.8 DL 120 668.8 116
-668.8 DL 124 668.8 120 668.8 DL 128 668.8 124 668.8 DL 132 668.8 128 668.8 DL
-136 668.8 132 668.8 DL 140 668.8 136 668.8 DL 144 668.8 140 668.8 DL/F5 8
-/Palatino-Roman@0 SF(*An earlier version of this article appear)72 678.8 Q
-(ed in The Linux Journal.)-.144 E<87>72 688.8 Q/F6 7/Palatino-Roman@0 SF(UNIX)2
-E F5(is a trademark of Bell Laboratories.)2 E(\210IEEE,)72 698.8 Q/F7 8
-/Palatino-Italic@0 SF 1.14(IEEE Standard for Information T)3.14 F 1.141
-(echnology -- Portable Operating System Interface \(POSIX\) Part 2: Shell and)
--.888 F(Utilities)72 708.8 Q F5 2(,1)C(992.)106.672 708.8 Q EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-2-)279.67 48 S .638(section, such as)97 84 R/F1
-10/Palatino-Bold@0 SF(test)3.138 E F0(and)3.138 E F1(kill)3.138 E F0 5.638(.A)C
-3.138(ne)240.928 84 S .638
-(xpansion of this section's scope, termed the User Porta-)254.676 84 R
-(bility Extension, or UPE, has standar)97 96 Q(dized interactive pr)-.18 E
-(ograms such as)-.18 E/F2 10/Palatino-Italic@0 SF(vi)2.5 E F0(and)4.166 E F2
-(mailx;)2.5 E F0 18.94<8341>72 111.6 S(gr)108.58 111.6 Q 1.3
-(oup of functional interfaces to services pr)-.18 F 1.299
-(ovided by the shell, such as the traditional)-.18 F/F3 10/Courier@0 SF
-(system\(\))97 123.6 Q F0 3.385(Cl)3.385 G .885(ibrary function.)161.77 123.6 R
-(Ther)5.885 E 3.385(ea)-.18 G 1.245 -.18(re f)271.195 123.6 T .885
-(unctions to perform shell wor).18 F 3.385(de)-.18 G .885(xpansions, per)
-435.555 123.6 R(-)-.18 E 1.945(form \214lename expansion \()97 135.6 R F2
-(globbing)A F0 1.945(\), obtain values of POSIX.2 system con\214guration vari-)
-B(ables, r)97 147.6 Q(etrieve values of envir)-.18 E(onment variables \()-.18 E
-F3(getenv\(\))A F0(\), and other services;).833 E 18.94<8341>72 163.2 S
-(suite of `)107.28 163.2 Q(`development')-.37 E 2.5('u)-.37 G(tilities such as)
-219.63 163.2 Q F2(c89)2.5 E F0(\(the POSIX.2 version of)4.166 E F2(cc)2.5 E F0
-(\), and)A F2(yacc.)2.5 E F0 1.326(Bash is concerned with the aspects of the s\
-hell's behavior de\214ned by POSIX.2.)97 178.8 R 1.326(The shell)6.326 F 1.156
-(command language has of course been standar)72 190.8 R 1.156
-(dized, including the basic \215ow contr)-.18 F 1.156(ol and pr)-.18 F(o-)-.18
-E 1.168(gram execution constr)72 202.8 R 1.168(ucts, I/O r)-.08 F(edir)-.18 E
-1.168(ection and pipelining, ar)-.18 F 1.168(gument handling, variable expan-)
--.18 F 1(sion, and quoting.)72 214.8 R(The)6 E F2(special)3.5 E F0 .999
-(builtins, which must be implemented as part of the shell to pr)5.166 F(o-)-.18
-E .698(vide the desir)72 226.8 R .698(ed functionality)-.18 F 3.198(,a)-1.11 G
-1.059 -.18(re s)213.942 226.8 T .699
-(peci\214ed as being part of the shell; examples of these ar).18 F(e)-.18 E F1
-(eval)3.199 E F0(and)72 238.8 Q F1(export)3.339 E F0 5.839(.O)C .839(ther util\
-ities appear in the sections of POSIX.2 not devoted to the shell which ar)
-137.358 238.8 R(e)-.18 E .131(commonly \(and in some cases must be\) implement\
-ed as builtin commands, such as)72 250.8 R F1(read)2.632 E F0(and)2.632 E F1
-(test)2.632 E F0(.)A .408(POSIX.2 also speci\214es aspects of the shell's inte\
-ractive behavior as part of the UPE, including job)72 262.8 R(contr)72 274.8 Q
-1.726(ol and command line editing.)-.18 F(Inter)6.726 E 1.726
-(estingly enough, only)-.18 F F2(vi)4.227 E F0 1.727
-(-style line editing commands)B(have been standar)72 286.8 Q(dized;)-.18 E F2
-(emacs)2.5 E F0(editing commands wer)2.5 E 2.5(el)-.18 G
-(eft out due to objections.)321.07 286.8 Q .376
-(While POSIX.2 includes much of what the shell has traditionally pr)97 302.4 R
-.375(ovided, some important)-.18 F .183(things have been omitted as being `)72
-314.4 R .183(`beyond its scope.')-.37 F 5.184('T)-.37 G(her)324.548 314.4 Q
-2.684(ei)-.18 G .184(s, for instance, no mention of a dif-)349.312 314.4 R(fer)
-72 326.4 Q 1.325(ence between a)-.18 F F2(login)3.825 E F0 1.325
-(shell and any other interactive shell \(since POSIX.2 does not specify a)5.491
-F .068(login pr)72 338.4 R 2.568(ogram\). No)-.18 F .068
-(\214xed startup \214les ar)2.568 F 2.568(ed)-.18 G .068
-(e\214ned, either \255 the standar)264.836 338.4 R 2.569(dd)-.18 G .069
-(oes not mention)398.607 338.4 R F2(.pr)2.569 E(o\214le)-.18 E F0(.)1.666 E F1
-2.5(3. Basic)72 362.4 R(Bash features)2.5 E F0 1.359(Since the Bourne shell pr)
-97 378 R 1.358(ovides Bash with most of its philosophical underpinnings, Bash)
--.18 F .721(inherits most of its featur)72 390 R .721(es and functionality fr)
--.18 F .721(om sh.)-.18 F .722(Bash implements all of the traditional sh)5.721
-F 1.342(\215ow contr)72 402 R 1.342(ol constr)-.18 F 1.342(ucts \()-.08 F F2
-(for)A F0(,)A F2(if)3.842 E F0(,)A F2(while)3.842 E F0 3.842(,e)C 3.842
-(tc.\). All)245.072 402 R 1.342
-(of the Bourne shell builtins, including those not)3.842 F .034
-(speci\214ed in the POSIX.2 standar)72 414 R .034(d, appear in Bash.)-.18 F
-(Shell)5.034 E F2(functions)2.534 E F0 2.534(,i)C(ntr)368.5 414 Q .035
-(oduced in the SVR2 version)-.18 F .237(of the Bourne shell, ar)72 426 R 2.736
-(es)-.18 G .236(imilar to shell scripts, but ar)181.472 426 R 2.736(ed)-.18 G
-.236(e\214ned using a special syntax and ar)319.828 426 R 2.736(ee)-.18 G(xe-)
-490.72 426 Q .276(cuted in the same pr)72 438 R .276
-(ocess as the calling shell.)-.18 F .277
-(Bash has shell functions which behave in a fashion)5.276 F(upwar)72 450 Q .114
-(d-compatible with sh functions.)-.18 F(Ther)5.114 E 2.614(ea)-.18 G .474 -.18
-(re c)279.8 450 T .114(ertain shell variables that Bash interpr).18 F .113
-(ets in the)-.18 F .975(same way as sh, such as)72 462 R F1(PS1)3.475 E F0(,)A
-F1(IFS)3.475 E F0 3.475(,a)C(nd)235.91 462 Q F1 -.74(PA)3.475 G(TH)-.18 E F0
-5.975(.B)C .976(ash implements essentially the same grammar)293.13 462 R(,)-.74
-E .025(parameter and variable expansion semantics, r)72 474 R(edir)-.18 E .025
-(ection, and quoting as the Bourne shell.)-.18 F(Wher)5.025 E(e)-.18 E(dif)72
-486 Q(fer)-.18 E 2.74(ences appear between the POSIX.2 standar)-.18 F 5.24(da)
--.18 G 2.74(nd traditional sh behavior)314.53 486 R 5.24(,B)-.74 G 2.74
-(ash follows)451.05 486 R(POSIX.)72 498 Q .494(The Korn Shell \()97 513.6 R F1
-(ksh)A F0 2.994(\)i)C 2.994(sad)196.116 513.6 S .494
-(escendent of the Bourne shell written at A)217.454 513.6 R .494
-(T&T Bell Laboratories)-.74 F 1.435(by David Korn\207.)72 525.6 R 1.435(It pr)
-6.435 F 1.435(ovides a number of useful featur)-.18 F 1.436
-(es that POSIX and Bash have adopted.)-.18 F .87
-(Many of the interactive facilities in POSIX.2 have their r)72 537.6 R .869
-(oots in the ksh: for example, the POSIX)-.18 F .85(and ksh job contr)72 549.6
-R .85(ol facilities ar)-.18 F 3.351(en)-.18 G .851
-(early identical. Bash includes featur)225.181 549.6 R .851(es fr)-.18 F .851
-(om the Korn Shell for)-.18 F .564(both interactive use and shell pr)72 561.6 R
-3.063(ogramming. For)-.18 F(pr)3.063 E .563(ogramming, Bash pr)-.18 F .563
-(ovides variables such as)-.18 F F1(RANDOM)72 573.6 Q F0(and)2.768 E F1(REPL)
-2.768 E(Y)-.92 E F0 2.768(,t)C(he)184.284 573.6 Q F1(typeset)2.768 E F0 .268
-(builtin, the ability to r)2.768 F .269(emove substrings fr)-.18 F .269
-(om variables based)-.18 F .582(on patterns, and shell arithmetic.)72 585.6 R
-F1(RANDOM)5.582 E F0 .581(expands to a random number each time it is r)3.081 F
-(efer)-.18 E(-)-.18 E 2.583(enced; assigning a value to)72 597.6 R F1(RANDOM)
-5.083 E F0 2.583(seeds the random number generator)5.083 F(.)-.74 E F1(REPL)
-7.583 E(Y)-.92 E F0 2.584(is the)5.083 F .034(default variable used by the)72
-609.6 R F1(read)2.534 E F0 .034(builtin when no variable names ar)2.534 F 2.534
-(es)-.18 G .034(upplied as ar)383.348 609.6 R 2.534(guments. The)-.18 F F1
-(typeset)72 621.6 Q F0 .416
-(builtin is used to de\214ne variables and give them attributes such as)2.916 F
-F1(readonly)2.916 E F0 5.416(.B)C .416(ash arith-)461.754 621.6 R 1.31
-(metic allows the evaluation of an expr)72 633.6 R 1.31
-(ession and the substitution of the r)-.18 F 3.81(esult. Shell)-.18 F
-(variables)3.81 E .561(may be used as operands, and the r)72 645.6 R .561
-(esult of an expr)-.18 F .561(ession may be assigned to a variable.)-.18 F
-(Nearly)5.562 E(all of the operators fr)72 657.6 Q(om the C language ar)-.18 E
-2.5(ea)-.18 G(vailable, with the same pr)271.68 657.6 Q(ecedence r)-.18 E
-(ules:)-.08 E F3 6($e)97 675.6 S(cho $\(\(3 + 5 * 32\)\))115 675.6 Q(163)97
-687.6 Q .32 LW 76 698 72 698 DL 80 698 76 698 DL 84 698 80 698 DL 88 698 84 698
-DL 92 698 88 698 DL 96 698 92 698 DL 100 698 96 698 DL 104 698 100 698 DL 108
-698 104 698 DL 112 698 108 698 DL 116 698 112 698 DL 120 698 116 698 DL 124 698
-120 698 DL 128 698 124 698 DL 132 698 128 698 DL 136 698 132 698 DL 140 698 136
-698 DL 144 698 140 698 DL/F4 8/Palatino-Roman@0 SF
-(\207Morris Bolsky and David Korn,)72 708 Q/F5 8/Palatino-Italic@0 SF
-(The KornShell Command and Pr)2 E(ogramming Language)-.144 E F4 2(,P)C -.144
-(re)374.688 708 S(ntice Hall, 1989.).144 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-3-)279.67 48 S .953
-(For interactive use, Bash implements ksh-style aliases and builtins such as)72
-84 R/F1 10/Palatino-Bold@0 SF(fc)3.453 E F0 .953(\(discussed below\))3.453 F
-(and)72 96 Q F1(jobs)2.603 E F0 5.103(.B)C .104
-(ash aliases allow a string to be substituted for a command name.)124.686 96 R
-.104(They can be used to)5.104 F(cr)72 108 Q .936(eate a mnemonic for a)-.18 F
-/F2 9/Palatino-Roman@0 SF(UNIX)3.435 E F0 .935(command name \()3.435 F/F3 10
-/Courier@0 SF .935(alias del=rm)B F0 .935(\), to expand a single wor)B 3.435
-(dt)-.18 G 3.435(oa)490.105 108 S 1.465(complex command \()72 120 R F3 1.465
-(alias news='xterm -g 80x45 -title trn -e trn -e -S1 -N)B(&')72 132 Q F0 .738
-(\), or to ensur)B 3.238(et)-.18 G .737
-(hat a command is invoked with a basic set of options \()153.612 132 R F3 .737
-(alias ls="/bin/ls)B(-F")72 144 Q F0(\).)A .4(The C shell \()97 159.6 R F1(csh)
-A F0 .401(\)\207, originally written by Bill Joy while at Berkeley)B 2.901(,i)
--1.11 G 2.901(sw)396.846 159.6 S .401(idely used and quite)412.327 159.6 R .002
-(popular for its interactive facilities.)72 171.6 R .002
-(Bash includes a csh-compatible history expansion mechanism)5.002 F(\(`)72
-183.6 Q 2.058(`! history')-.37 F 2.058
-('\), brace expansion, access to a stack of dir)-.37 F 2.058(ectories via the)
--.18 F F1(pushd)4.558 E F0(,)A F1(popd)4.558 E F0 4.558(,a)C(nd)469.742 183.6 Q
-F1(dirs)4.558 E F0 .648
-(builtins, and tilde expansion, to generate users' home dir)72 195.6 R 3.148
-(ectories. T)-.18 F .647(ilde expansion has also been)-.55 F
-(adopted by both the Korn Shell and POSIX.2.)72 207.6 Q(Ther)97 223.2 Q 2.98
-(ew)-.18 G(er)133.62 223.2 Q 2.98(ec)-.18 G .48(ertain ar)154.39 223.2 R .48
-(eas in which POSIX.2 felt standar)-.18 F .48(dization was necessary)-.18 F
-2.98(,b)-1.11 G .48(ut no exist-)453.78 223.2 R 1.061(ing implementation pr)72
-235.2 R 1.062(ovided the pr)-.18 F 1.062(oper behavior)-.18 F 6.062(.T)-.74 G
-1.062(he working gr)312.43 235.2 R 1.062(oup invented and standar)-.18 F(d-)
--.18 E .279(ized functionality in these ar)72 247.2 R .279
-(eas, which Bash implements.)-.18 F(The)5.278 E F1(command)2.778 E F0 .278
-(builtin was invented so)2.778 F 1.376
-(that shell functions could be written to r)72 259.2 R 1.376
-(eplace builtins; it makes the capabilities of the builtin)-.18 F .477
-(available to the function.)72 271.2 R .477(The r)5.477 F .477(eserved wor)-.18
-F 2.977(d`)-.18 G(`!')278.12 271.2 Q 2.977('w)-.37 G .477
-(as added to negate the r)300.187 271.2 R .477(eturn value of a com-)-.18 F
-1.09(mand or pipeline; it was nearly impossible to expr)72 283.2 R 1.09(ess `)
--.18 F 1.09(`if not x')-.37 F 3.59('c)-.37 G 1.09
-(leanly using the sh language.)370.99 283.2 R(Ther)72 295.2 Q 3.684(ee)-.18 G
-1.183(xist multiple incompatible implementations of the)105.774 295.2 R F1
-(test)3.683 E F0 1.183(builtin, which tests \214les for type)3.683 F .38
-(and other attributes and performs arithmetic and string comparisons.)72 307.2
-R .38(POSIX consider)5.38 F .38(ed none of)-.18 F .469(these corr)72 319.2 R
-.468(ect, so the standar)-.18 F 2.968(db)-.18 G .468
-(ehavior was speci\214ed in terms of the number of ar)210.762 319.2 R .468
-(guments to the)-.18 F 2.52(command. POSIX.2)72 331.2 R .021
-(dictates exactly what will happen when four or fewer ar)2.52 F .021
-(guments ar)-.18 F 2.521(eg)-.18 G .021(iven to)473.589 331.2 R F1(test)72
-343.2 Q F0 4.905(,a)C 2.405(nd leaves the behavior unde\214ned when mor)100.505
-343.2 R 4.905(ea)-.18 G -.18(rg)325.27 343.2 S 2.404(uments ar).18 F 4.904(es)
--.18 G 4.904(upplied. Bash)395.178 343.2 R 2.404(uses the)4.904 F
-(POSIX.2 algorithm, which was conceived by David Korn.)72 355.2 Q F1 2.5
-(3.1. Features)72 379.2 R(not in the Bourne Shell)2.5 E F0(Ther)97 394.8 Q
-3.958(ea)-.18 G 1.818 -.18(re a n)131.258 394.8 T 1.458(umber of minor dif).18
-F(fer)-.18 E 1.458(ences between Bash and the version of sh pr)-.18 F 1.458
-(esent on)-.18 F .503(most other versions of)72 406.8 R F2(UNIX)3.003 E F0
-5.503(.T)C .503(he majority of these ar)212.582 406.8 R 3.002(ed)-.18 G .502
-(ue to the POSIX standar)326.876 406.8 R .502(d, but some ar)-.18 F(e)-.18 E
-1.173(the r)72 418.8 R 1.173(esult of Bash adopting featur)-.18 F 1.173(es fr)
--.18 F 1.173(om other shells.)-.18 F 1.174
-(For instance, Bash includes the new `)6.173 F(`!')-.37 E(')-.37 E -.18(re)72
-430.8 S .414(served wor).18 F .414(d, the)-.18 F F1(command)2.913 E F0 .413
-(builtin, the ability of the)2.913 F F1(read)2.913 E F0 .413(builtin to corr)
-2.913 F .413(ectly r)-.18 F .413(eturn a line end-)-.18 F 1.635
-(ing with a backslash, symbolic ar)72 442.8 R 1.635(guments to the)-.18 F F1
-(umask)4.135 E F0 1.636(builtin, variable substring r)4.136 F 1.636(emoval, a)
--.18 F .791(way to get the length of a variable, and the new algorithm for the)
-72 454.8 R F1(test)3.29 E F0 .79(builtin fr)3.29 F .79(om the POSIX.2)-.18 F
-(standar)72 466.8 Q(d, none of which appear in sh.)-.18 E 1.408
-(Bash also implements the `)97 482.4 R(`$\(...\)')-.37 E 3.908('c)-.37 G 1.408
-(ommand substitution syntax, which supersedes the sh)255.56 482.4 R .54
-(`...` constr)72 494.4 R 3.04(uct. The)-.08 F -.37(``)3.04 G($\(...\)').37 E
-3.04('c)-.37 G(onstr)193.76 494.4 Q .54
-(uct expands to the output of the command contained within the)-.08 F(par)72
-506.4 Q .708(entheses, with trailing newlines r)-.18 F 3.208(emoved. The)-.18 F
-.709(sh syntax is accepted for backwar)3.208 F .709(ds compati-)-.18 F(bility)
-72 518.4 Q 2.901(,b)-1.11 G .401(ut the `)104.901 518.4 R(`$\(...\)')-.37 E
-2.901('f)-.37 G .401(orm is pr)169.634 518.4 R(eferr)-.18 E .401
-(ed because its quoting r)-.18 F .4(ules ar)-.08 F 2.9(em)-.18 G .4
-(uch simpler and it is easier)383.64 518.4 R(to nest.)72 530.4 Q .697
-(The Bourne shell does not pr)97 546 R .697(ovide such featur)-.18 F .698
-(es as brace expansion, the ability to de\214ne a)-.18 F 2.079(variable and a \
-function with the same name, local variables in shell functions, the ability t\
-o)72 558 R 1.933
-(enable and disable individual builtins or write a function to r)72 570 R 1.933
-(eplace a builtin, or a means to)-.18 F(export a shell function to a child pr)
-72 582 Q(ocess.)-.18 E 1.019
-(Bash has closed a long-standing shell security hole by not using the)97 597.6
-R F1($IFS)3.518 E F0 1.018(variable to split)3.518 F .861(each wor)72 609.6 R
-3.361(dr)-.18 G .861(ead by the shell, but splitting only the r)126.222 609.6 R
-.861(esults of expansion \(ksh and the 4.4 BSD sh)-.18 F .337
-(have \214xed this as well\).)72 621.6 R .337
-(Useful behavior such as a means to abort execution of a script r)5.337 F .336
-(ead with)-.18 F .282(the `)72 633.6 R(`.')-.37 E 2.782('c)-.37 G .283
-(ommand using the)108.754 633.6 R F1(return)2.783 E F0 .283
-(builtin or automatically exporting variables in the shell's envi-)2.783 F -.18
-(ro)72 645.6 S .166(nment to childr).18 F .166(en is also not pr)-.18 F .166
-(esent in the Bourne shell.)-.18 F .165(Bash pr)5.165 F .165(ovides a much mor)
--.18 F 2.665(ep)-.18 G(owerful)469.19 645.6 Q(envir)72 657.6 Q
-(onment for both interactive use and pr)-.18 E(ogramming.)-.18 E .32 LW 76 688
-72 688 DL 80 688 76 688 DL 84 688 80 688 DL 88 688 84 688 DL 92 688 88 688 DL
-96 688 92 688 DL 100 688 96 688 DL 104 688 100 688 DL 108 688 104 688 DL 112
-688 108 688 DL 116 688 112 688 DL 120 688 116 688 DL 124 688 120 688 DL 128 688
-124 688 DL 132 688 128 688 DL 136 688 132 688 DL 140 688 136 688 DL 144 688 140
-688 DL/F4 8/Palatino-Roman@0 SF 1.489(\207Bill Joy)72 698 R 3.489(,A)-.888 G
-3.489(nI)113.666 698 S(ntr)124.507 698 Q 1.489(oduction to the C Shell,)-.144 F
-/F5 8/Palatino-Italic@0 SF 1.489(UNIX User)3.489 F 2.369 -.44('s S).296 H 1.489
-(upplementary Documents).44 F F4 3.489(,U)C 1.489(niversity of California at)
-377.116 698 R(Berkeley)72 708 Q 2(,1)-.888 G(986.)109.88 708 Q EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-4-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5
-(4. Bash-speci\214c)72 84 R(Features)2.5 E F0 .897
-(This section details a few of the featur)97 99.6 R .897
-(es which make Bash unique.)-.18 F .898(Most of them pr)5.898 F(ovide)-.18 E
-(impr)72 111.6 Q 2.913(oved interactive use, but a few pr)-.18 F 2.912
-(ogramming impr)-.18 F 2.912(ovements ar)-.18 F 5.412(ep)-.18 G -.18(re)410.494
-111.6 S 2.912(sent as well.).18 F(Full)7.912 E(descriptions of these featur)72
-123.6 Q(es can be found in the Bash documentation.)-.18 E F1 2.5(4.1. Startup)
-72 147.6 R(Files)2.5 E F0 .207(Bash executes startup \214les dif)97 163.2 R
-(fer)-.18 E .207(ently than other shells.)-.18 F .207
-(The Bash behavior is a compr)5.207 F(omise)-.18 E 1.451(between the csh princ\
-iple of startup \214les with \214xed names executed for each shell and the sh)
-72 175.2 R -.37(``)72 187.2 S(minimalist').37 E 2.677('b)-.37 G(ehavior)138.207
-187.2 Q 5.177(.A)-.74 G 2.678(ni)186.504 187.2 S .178
-(nteractive instance of Bash started as a login shell r)197.912 187.2 R .178
-(eads and executes)-.18 F/F2 10/Palatino-Italic@0 SF(~/.bash_pr)72 199.2 Q
-(o\214le)-.18 E F0 .521(\(the \214le .bash_pr)4.687 F .52(o\214le in the user)
--.18 F .52('s home dir).74 F .52(ectory\), if it exists.)-.18 F .52
-(An interactive non-)5.52 F 1.692(login shell r)72 211.2 R 1.692
-(eads and executes)-.18 F F2(~/.bashr)4.192 E(c)-.18 E F0 6.692(.A)1.666 G
-1.693(non-interactive shell \(one begun to execute a shell)271.99 211.2 R .56
-(script, for example\) r)72 223.2 R .559
-(eads no \214xed startup \214le, but uses the value of the variable)-.18 F F1
-($ENV)3.059 E F0 3.059(,i)C 3.059(fs)470.522 223.2 S .559(et, as)481.151 223.2
-R .06(the name of a startup \214le.)72 235.2 R .061(The ksh practice of r)5.06
-F(eading)-.18 E F1($ENV)2.561 E F0 .061(for every shell, with the accompany-)
-2.561 F 1.309(ing dif)72 247.2 R 1.309(\214culty of de\214ning the pr)-.18 F
-1.308(oper variables and functions for interactive and non-interactive)-.18 F
-.385(shells or having the \214le r)72 259.2 R .385
-(ead only for interactive shells, was consider)-.18 F .385(ed too complex.)-.18
-F .385(Ease of use)5.385 F .252(won out her)72 271.2 R 2.752(e. Inter)-.18 F
-(estingly)-.18 E 2.752(,t)-1.11 G .251(he next r)202.258 271.2 R .251
-(elease of ksh will change to r)-.18 F(eading)-.18 E F1($ENV)2.751 E F0 .251
-(only for interac-)2.751 F(tive shells.)72 283.2 Q F1 2.5(4.2. New)72 307.2 R
-(Builtin Commands)2.5 E F0(Ther)97 322.8 Q 3.077(ea)-.18 G .937 -.18(re a f)
-130.377 322.8 T .577(ew builtins which ar).18 F 3.077(en)-.18 G .578
-(ew or have been extended in Bash.)259.179 322.8 R(The)5.578 E F1(enable)3.078
-E F0(builtin)3.078 E .073(allows builtin commands to be turned on and of)72
-334.8 R 2.573(fa)-.18 G(rbitrarily)296.267 334.8 Q 5.073(.T)-1.11 G 2.573(ou)
-347.87 334.8 S .073(se the version of)361.933 334.8 R F2(echo)2.573 E F0 .073
-(found in a)4.239 F -1.76(user 's)72 346.8 R(sear)2.755 E .255
-(ch path rather than the Bash builtin,)-.18 F/F3 10/Courier@0 SF .255
-(enable -n echo)2.755 F F0(suf)2.756 E 2.756(\214ces. The)-.18 F F1(help)2.756
-E F0 .256(builtin pr)2.756 F(o-)-.18 E .618
-(vides quick synopses of the shell facilities without r)72 358.8 R .618
-(equiring access to a manual page.)-.18 F F1(Builtin)5.618 E F0(is)3.118 E .955
-(similar to)72 370.8 R F1(command)3.455 E F0 .955
-(in that it bypasses shell functions and dir)3.455 F .956
-(ectly executes builtin commands.)-.18 F 2.025
-(Access to a csh-style stack of dir)72 382.8 R 2.025(ectories is pr)-.18 F
-2.025(ovided via the)-.18 F F1(pushd)4.524 E F0(,)A F1(popd)4.524 E F0 4.524
-(,a)C(nd)429.142 382.8 Q F1(dirs)4.524 E F0(builtins.)4.524 E F1(Pushd)72 394.8
-Q F0(and)4.255 E F1(popd)4.255 E F0 1.755(insert and r)4.255 F 1.756(emove dir)
--.18 F 1.756(ectories fr)-.18 F 1.756(om the stack, r)-.18 F(espectively)-.18 E
-4.256(,a)-1.11 G(nd)430.102 394.8 Q F1(dirs)4.256 E F0 1.756(lists the)4.256 F
-.458(stack contents.)72 406.8 R .457
-(On systems that allow \214ne-grained contr)5.458 F .457(ol of r)-.18 F(esour)
--.18 E .457(ces, the)-.18 F F1(ulimit)2.957 E F0 .457(builtin can be)2.957 F
-1.216(used to tune these settings.)72 418.8 R F1(Ulimit)6.216 E F0 1.216
-(allows a user to contr)3.716 F 1.216(ol, among other things, whether cor)-.18
-F(e)-.18 E .306(dumps ar)72 430.8 R 2.806(et)-.18 G 2.806(ob)125.652 430.8 S
-2.806(eg)139.448 430.8 S .306
-(enerated, how much memory the shell or a child pr)152.604 430.8 R .306
-(ocess is allowed to allocate,)-.18 F .991(and how lar)72 442.8 R .991
-(ge a \214le cr)-.18 F .991(eated by a child pr)-.18 F .991(ocess can gr)-.18 F
-(ow)-.18 E 5.991(.T)-.92 G(he)343.212 442.8 Q F1(suspend)3.491 E F0 .992
-(command will stop the)3.491 F .532(shell pr)72 454.8 R .532
-(ocess when job contr)-.18 F .532
-(ol is active; most other shells do not allow themselves to be stopped)-.18 F
-.339(like that.)72 466.8 R F1 -.9(Ty)5.339 G(pe,).9 E F0 .339
-(the Bash answer to)2.839 F F1(which)2.839 E F0(and)2.839 E F1(whence,)2.839 E
-F0 .34(shows what will happen when a wor)2.839 F 2.84(di)-.18 G(s)499.76 466.8
-Q(typed as a command:)72 478.8 Q F3 6($t)97 496.8 S(ype export)115 496.8 Q
-(export is a shell builtin)97 508.8 Q 6($t)97 520.8 S(ype -t export)115 520.8 Q
-(builtin)97 532.8 Q 6($t)97 544.8 S(ype bash)115 544.8 Q(bash is /bin/bash)97
-556.8 Q 6($t)97 568.8 S(ype cd)115 568.8 Q(cd is a function)97 580.8 Q(cd \(\))
-97 592.8 Q({)97 604.8 Q(builtin cd ${1+"$@"} && xtitle $HOST: $PWD)121 616.8 Q
-(})97 628.8 Q F0 -.92(Va)72 650.4 S 1.138(rious modes tell what a command wor)
-.92 F 3.638(di)-.18 G 3.638(s\()273.156 650.4 S -.18(re)284.364 650.4 S 1.138
-(served wor).18 F 1.138(d, alias, function, builtin, or \214le\) or)-.18 F .596
-(which version of a command will be executed based on a user)72 662.4 R .597
-('s sear).74 F .597(ch path.)-.18 F .597(Some of this func-)5.597 F
-(tionality has been adopted by POSIX.2 and folded into the)72 674.4 Q F1
-(command)2.5 E F0(utility)2.5 E(.)-1.11 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5
-(4.3. Editing)72 84 R(and Completion)2.5 E F0 1.094(One ar)97 99.6 R 1.094
-(ea in which Bash shines is command line editing.)-.18 F 1.093(Bash uses the)
-6.093 F/F2 10/Palatino-Italic@0 SF -.18(re)3.593 G(adline).18 E F0 1.093
-(library to)5.259 F -.18(re)72 111.6 S .27(ad and edit lines when interactive.)
-.18 F .271(Readline is a powerful and \215exible input facility that a user)
-5.27 F .013(can con\214gur)72 123.6 R 2.513(et)-.18 G 2.513(oi)137.466 123.6 S
-.013(ndividual tastes.)148.349 123.6 R .012
-(It allows lines to be edited using either emacs or vi commands,)5.013 F(wher)
-72 135.6 Q 3.039(et)-.18 G .539(hose commands ar)105.809 135.6 R 3.039(ea)-.18
-G(ppr)202.526 135.6 Q 3.039(opriate. The)-.18 F .539
-(full capability of emacs is not pr)3.039 F .54(esent \255 ther)-.18 F 3.04(ei)
--.18 G 3.04(sn)485.44 135.6 S(o)498.54 135.6 Q .421(way to execute a named com\
-mand with M-x, for instance \255 but the existing commands ar)72 147.6 R 2.921
-(em)-.18 G(or)489.98 147.6 Q(e)-.18 E 2.773(than adequate.)72 159.6 R 2.773
-(The vi mode is compliant with the command line editing standar)7.773 F 2.774
-(dized by)-.18 F(POSIX.2.)72 171.6 Q 1.222(Readline is fully customizable.)97
-187.2 R 1.221(In addition to the basic commands and key bindings, the)6.222 F
-.263(library allows users to de\214ne additional key bindings using a startup \
-\214le.)72 199.2 R(The)5.263 E F2(inputr)2.763 E(c)-.18 E F0 .263
-(\214le, which)4.429 F .519(defaults to the \214le)72 211.2 R F2(~/.inputr)
-3.019 E(c)-.18 E F0 3.019(,i)1.666 G 3.019(sr)204.981 211.2 S .519
-(ead each time r)216.01 211.2 R .519
-(eadline initializes, permitting users to maintain a)-.18 F 1.084
-(consistent interface acr)72 223.2 R 1.084(oss a set of pr)-.18 F 3.585
-(ograms. Readline)-.18 F 1.085(includes an extensible interface, so each)3.585
-F(pr)72 235.2 Q .885
-(ogram using the library can add its own bindable commands and pr)-.18 F .885
-(ogram-speci\214c key bind-)-.18 F 2.844(ings. Bash)72 247.2 R .345(uses this \
-facility to add bindings that perform history expansion or shell wor)2.844 F
-2.845(de)-.18 G(xpan-)478.68 247.2 Q(sions on the curr)72 259.2 Q
-(ent input line.)-.18 E .164(Readline interpr)97 274.8 R .163
-(ets a number of variables which further tune its behavior)-.18 F 5.163(.V)-.74
-G .163(ariables exist to)435.264 274.8 R(contr)72 286.8 Q 2.503
-(ol whether or not eight-bit characters ar)-.18 F 5.003(ed)-.18 G(ir)300.789
-286.8 Q 2.503(ectly r)-.18 F 2.503(ead as input or converted to meta-)-.18 F
-(pr)72 298.8 Q .076(e\214xed key sequences \(a meta-pr)-.18 F .076
-(e\214xed key sequence consists of the character with the eighth bit)-.18 F
-(zer)72 310.8 Q .204(oed, pr)-.18 F .204(eceded by the)-.18 F F2(meta-pr)2.704
-E(e\214x)-.18 E F0(character)4.37 E 2.704(,u)-.74 G .205
-(sually escape, which selects an alternate keymap\),)282.17 310.8 R .76
-(to decide whether to output characters with the eighth bit set dir)72 322.8 R
-.759(ectly or as a meta-pr)-.18 F .759(e\214xed key)-.18 F .19
-(sequence, whether or not to wrap to a new scr)72 334.8 R .191
-(een line when a line being edited is longer than the)-.18 F(scr)72 346.8 Q
-.099(een width, the keymap to which subsequent key bindings should apply)-.18 F
-2.598(,o)-1.11 G 2.598(re)411.096 346.8 S .098(ven what happens)422.434 346.8 R
-1.031(when r)72 358.8 R 1.031(eadline wants to ring the terminal's bell.)-.18 F
-1.031(All of these variables can be set in the inputr)6.031 F(c)-.18 E(\214le.)
-72 370.8 Q .239(The startup \214le understands a set of C pr)97 386.4 R(epr)
--.18 E(ocessor)-.18 E .238(-like conditional constr)-.18 F .238
-(ucts which allow)-.08 F 1.431
-(variables or key bindings to be assigned based on the application using r)72
-398.4 R 1.432(eadline, the terminal)-.18 F(curr)72 410.4 Q 1.676
-(ently being used, or the editing mode.)-.18 F 1.676(Users can add pr)6.676 F
-1.676(ogram-speci\214c bindings to make)-.18 F .478(their lives easier:)72
-422.4 R 2.978(Ih)5.478 G .478(ave bindings that let me edit the value of)
-165.012 422.4 R F1($P)2.978 E -.92(AT)-.74 G(H).92 E F0 .479
-(and double-quote the cur)2.979 F(-)-.18 E -.18(re)72 434.4 S(nt or pr).18 E
-(evious wor)-.18 E(d:)-.18 E/F3 10/Courier@0 SF 6(#M)97 452.4 S
-(acros that are convenient for shell interaction)115 452.4 Q($if Bash)97 464.4
-Q 6(#e)97 476.4 S(dit the path)115 476.4 Q
-("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 488.4 Q 6(#p)97 500.4 S
-(repare to type a quoted word -- insert open and close double)115 500.4 Q 6(#q)
-97 512.4 S(uotes and move to just after the open quote)115 512.4 Q
-("\\C-x\\"": "\\"\\"\\C-b")97 524.4 Q 6(#Q)97 536.4 S
-(uote the current or previous word)115 536.4 Q("\\C-xq": "\\eb\\"\\ef\\"")97
-548.4 Q($endif)97 560.4 Q F0(Ther)72 582 Q 3.06(ei)-.18 G 3.06(sar)103.27 582 S
-.56(eadline command to r)122.4 582 R(e-r)-.18 E .559
-(ead the \214le, so users can edit the \214le, change some bindings,)-.18 F
-(and begin to use them almost immediately)72 594 Q(.)-1.11 E .701
-(Bash implements the)97 609.6 R F1(bind)3.201 E F0 .701(builtin for mor)3.201 F
-3.201(ed)-.18 G .701(yamic contr)299.567 609.6 R .702(ol of r)-.18 F .702
-(eadline than the startup \214le)-.18 F(permits.)72 621.6 Q F1(Bind)5.572 E F0
-.572(is used in several ways.)3.072 F(In)5.572 E F2(list)3.071 E F0 .571
-(mode, it can display the curr)4.737 F .571(ent key bindings, list)-.18 F .752
-(all the r)72 633.6 R .752(eadline editing dir)-.18 F .752
-(ectives available for binding, list which keys invoke a given dir)-.18 F
-(ective,)-.18 E 1.327(or output the curr)72 645.6 R 1.327
-(ent set of key bindings in a format that can be incorporated dir)-.18 F 1.327
-(ectly into an)-.18 F(inputr)72 657.6 Q 3.075<638c>-.18 G 3.075(le. In)113.365
-657.6 R F2(batch)3.075 E F0 .575(mode, it r)4.741 F .575
-(eads a series of key bindings dir)-.18 F .575(ectly fr)-.18 F .576
-(om a \214le and passes them)-.18 F .751(to r)72 669.6 R 3.251(eadline. In)-.18
-F .751(its most common usage,)3.251 F F1(bind)3.251 E F0 .75
-(takes a single string and passes it dir)3.251 F .75(ectly to r)-.18 F(ead-)
--.18 E .604(line, which interpr)72 681.6 R .604
-(ets the line as if it had just been r)-.18 F .605(ead fr)-.18 F .605
-(om the inputr)-.18 F 3.105<638c>-.18 G 3.105(le. Both)406.525 681.6 R .605
-(key bindings)3.105 F
-(and variable assignments may appear in the string given to)72 693.6 Q F1(bind)
-2.5 E F0(.)A 1.692(The r)97 709.2 R 1.691(eadline library also pr)-.18 F 1.691
-(ovides an interface for)-.18 F F2 1.691(word completion)4.191 F F0 6.691(.W)C
-1.691(hen the)419.582 709.2 R F2(completion)4.191 E F0 3.377
-(character \(usually T)72 721.2 R 3.377(AB\) is typed, r)-.74 F 3.378
-(eadline looks at the wor)-.18 F 5.878(dc)-.18 G(urr)375.406 721.2 Q 3.378
-(ently being enter)-.18 F 3.378(ed and)-.18 F EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-6-)279.67 48 S .089
-(computes the set of \214lenames of which the curr)72 84 R .088(ent wor)-.18 F
-2.588(di)-.18 G 2.588(sav)326.968 84 S .088(alid pr)347.034 84 R 2.588
-(e\214x. If)-.18 F(ther)2.588 E 2.588(ei)-.18 G 2.588(so)437.136 84 S .088
-(nly one pos-)449.424 84 R .81(sible completion, the r)72 96 R .81
-(est of the characters ar)-.18 F 3.31(ei)-.18 G .81(nserted dir)285.2 96 R
-(ectly)-.18 E 3.31(,o)-1.11 G .81(therwise the common pr)365.38 96 R .81
-(e\214x of)-.18 F .715(the set of \214lenames is added to the curr)72 108 R
-.715(ent wor)-.18 F 3.215(d. A)-.18 F .714(second T)3.214 F .714
-(AB character enter)-.74 F .714(ed immediately)-.18 F .527
-(after a non-unique completion causes r)72 120 R .527
-(eadline to list the possible completions; ther)-.18 F 3.027(ei)-.18 G 3.028
-(sa)453.964 120 S 3.028(no)466.232 120 S(ption)480.54 120 Q .265
-(to have the list displayed immediately)72 132 R 5.265(.R)-1.11 G .265
-(eadline pr)255.87 132 R .264(ovides hooks so that applications can pr)-.18 F
-(ovide)-.18 E 1.287(speci\214c types of completion befor)72 144 R 3.787(et)-.18
-G 1.287(he default \214lename completion is attempted.)237.284 144 R 1.287
-(This is quite)6.287 F 1.378(\215exible, though it is not completely user)72
-156 R(-pr)-.18 E 3.877(ogrammable. Bash,)-.18 F 1.377
-(for example, can complete \214le-)3.877 F 1.456
-(names, command names \(including aliases, builtins, shell r)72 168 R 1.457
-(eserved wor)-.18 F 1.457(ds, shell functions, and)-.18 F .598(executables fou\
-nd in the \214le system\), shell variables, usernames, and hostnames.)72 180 R
-.598(It uses a set of)5.598 F .346(heuristics that, while not perfect, is gene\
-rally quite good at determining what type of completion)72 192 R(to attempt.)72
-204 Q/F1 10/Palatino-Bold@0 SF 2.5(4.4. History)72 228 R F0 .487
-(Access to the list of commands pr)97 243.6 R .487(eviously enter)-.18 F .487
-(ed \(the)-.18 F/F2 10/Palatino-Italic@0 SF .487(command history)2.987 F F0
-2.987(\)i)C 2.987(sp)424.717 243.6 S -.18(ro)437.954 243.6 S .486
-(vided jointly).18 F .577(by Bash and the r)72 255.6 R .577(eadline library)
--.18 F 5.577(.B)-1.11 G .578(ash pr)229.432 255.6 R .578(ovides variables \()
--.18 F F1($HISTFILE)A F0(,)A F1($HISTSIZE)3.078 E F0 3.078(,a)C(nd)456.582
-255.6 Q F1($HIST)3.078 E(-)-.92 E(CONTROL)72 267.6 Q F0 3.306(\)a)C .806
-(nd the)135.846 267.6 R F1(history)3.306 E F0(and)3.306 E F1(fc)3.306 E F0 .805
-(builtins to manipulate the history list.)3.305 F .805(The value of)5.805 F F1
-($HIST)3.305 E(-)-.92 E(FILE)72 279.6 Q F0 1.393(specifes the \214le wher)3.893
-F 3.893(eB)-.18 G 1.393(ash writes the command history on exit and r)209.125
-279.6 R 1.394(eads it on startup.)-.18 F F1($HISTSIZE)72 291.6 Q F0 1.295
-(is used to limit the number of commands saved in the history)3.795 F(.)-1.11 E
-F1($HISTCONTROL)6.294 E F0(pr)72 303.6 Q .778(ovides a cr)-.18 F .779
-(ude form of contr)-.08 F .779(ol over which commands ar)-.18 F 3.279(es)-.18 G
-.779(aved on the history list: a value of)349.157 303.6 R F2(ignor)72 315.6 Q
-(espace)-.18 E F0 .548
-(means to not save commands which begin with a space; a value of)4.714 F F2
-(ignor)3.047 E(edups)-.18 E F0(means)4.713 E .296
-(to not save commands identical to the last command saved.)72 327.6 R F1
-($HISTCONTROL)5.296 E F0 .297(was named)2.796 F F1($his-)2.797 E(tory_control)
-72 339.6 Q F0 .611
-(in earlier versions of Bash; the old name is still accepted for backwar)3.112
-F .611(ds compatibil-)-.18 F(ity)72 351.6 Q 5.678(.T)-1.11 G(he)96.928 351.6 Q
-F1(history)3.178 E F0 .678(command can r)3.178 F .678
-(ead or write \214les containing the history list and display the cur)-.18 F(-)
--.18 E -.18(re)72 363.6 S .913(nt list contents.).18 F(The)5.913 E F1(fc)3.413
-E F0 .913(builtin, adopted fr)3.413 F .912
-(om POSIX.2 and the Korn Shell, allows display and)-.18 F -.18(re)72 375.6 S
-.12(-execution, with optional editing, of commands fr).18 F .12
-(om the history list.)-.18 F .12(The r)5.12 F .12(eadline library of)-.18 F
-(fers)-.18 E 2.518(as)72 387.6 S .018(et of commands to sear)83.758 387.6 R
-.018(ch the history list for a portion of the curr)-.18 F .017
-(ent input line or a string typed)-.18 F 1.024(by the user)72 399.6 R 6.025(.F)
--.74 G(inally)136.364 399.6 Q 3.525(,t)-1.11 G(he)169.649 399.6 Q F2(history)
-3.525 E F0(library)5.191 E 3.525(,g)-1.11 G 1.025(enerally incorporated dir)
-257.59 399.6 R 1.025(ectly into the r)-.18 F 1.025(eadline library)-.18 F(,)
--1.11 E .709(implements a facility for history r)72 411.6 R .709
-(ecall, expansion, and r)-.18 F .709(e-execution of pr)-.18 F .709
-(evious commands very)-.18 F .711(similar to csh \(`)72 423.6 R .711
-(`bang history')-.37 F .711(', so called because the exclamation point intr)
--.37 F .712(oduces a history sub-)-.18 F(stitution\):)72 435.6 Q/F3 10
-/Courier@0 SF 6($e)97 453.6 S(cho a b c d e)115 453.6 Q 6(abcde)97 465.6 S 6
-($!)97 477.6 S 6(!fghi)115 477.6 S(echo a b c d e f g h i)97 489.6 Q 6
-(abcdefghi)97 501.6 S 6($!)97 513.6 S(-2)115 513.6 Q(echo a b c d e)97 525.6 Q
-6(abcde)97 537.6 S 6($e)97 549.6 S(cho !-2:1-4)115 549.6 Q(echo a b c d)97
-561.6 Q 6(abcd)97 573.6 S F0 .555(The command history is only saved when the s\
-hell is interactive, so it is not available for use by)72 595.2 R
-(shell scripts.)72 607.2 Q F1 2.5(4.5. New)72 631.2 R(Shell V)2.5 E(ariables)
--1.11 E F0(Ther)97 646.8 Q 2.916(ea)-.18 G .776 -.18(re a n)130.216 646.8 T
-.416(umber of convenience variables that Bash interpr).18 F .417
-(ets to make life easier)-.18 F 5.417(.T)-.74 G(hese)484.36 646.8 Q(include)72
-658.8 Q F1(FIGNORE)3.043 E F0 3.043(,w)C .542(hich is a set of \214lename suf)
-169.706 658.8 R .542(\214xes identifying \214les to exclude when complet-)-.18
-F .167(ing \214lenames;)72 670.8 R F1(HOSTTYPE)2.667 E F0 2.667(,w)C .167
-(hich is automatically set to a string describing the type of har)205.061 670.8
-R(dwar)-.18 E(e)-.18 E .333(on which Bash is curr)72 682.8 R .333
-(ently executing;)-.18 F F1(command_oriented_history)2.833 E F0 2.832(,w)C .332
-(hich dir)380.94 682.8 R .332(ects Bash to save all)-.18 F 1.264
-(lines of a multiple-line command such as a)72 694.8 R F2(while)3.765 E F0(or)
-3.765 E F2(for)3.765 E F0 1.265(loop in a single history entry)3.765 F 3.765
-(,a)-1.11 G(llowing)470.09 694.8 Q .13(easy r)72 706.8 R .13(e-editing; and)
--.18 F F1(IGNOREEOF)2.63 E F0 2.63(,w)C .13
-(hose value indicates the number of consecutive EOF charac-)237.84 706.8 R .901
-(ters that an interactive shell will r)72 718.8 R .901(ead befor)-.18 F 3.401
-(ee)-.18 G .901(xiting \255 an easy way to keep yourself fr)280.258 718.8 R
-.902(om being)-.18 F 3.629(logged out accidentally)72 730.8 R 8.629(.T)-1.11 G
-(he)198.697 730.8 Q F1(auto_resume)6.129 E F0 3.628
-(variable alters the way the shell tr)6.128 F 3.628(eats simple)-.18 F EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-7-)279.67 48 S .888
-(command names: if job contr)72 84 R .889
-(ol is active, and this variable is set, single-wor)-.18 F 3.389(ds)-.18 G .889
-(imple commands)426.431 84 R .843(without r)72 96 R(edir)-.18 E .843
-(ections cause the shell to \214rst look for and r)-.18 F .842
-(estart a suspended job with that name)-.18 F(befor)72 108 Q 2.5(es)-.18 G
-(tarting a new pr)106.41 108 Q(ocess.)-.18 E/F1 10/Palatino-Bold@0 SF 2.5
-(4.6. Brace)72 132 R(Expansion)2.5 E F0 .608(Since sh of)97 147.6 R .609
-(fers no convenient way to generate arbitrary strings that shar)-.18 F 3.109
-(eac)-.18 G .609(ommon pr)440.711 147.6 R(e\214x)-.18 E .036(or suf)72 159.6 R
-.036(\214x \(\214lename expansion r)-.18 F(equir)-.18 E .035
-(es that the \214lenames exist\), Bash implements)-.18 F/F2 10
-/Palatino-Italic@0 SF .035(brace expansion)2.535 F F0 2.535(,a)C .716
-(capability picked up fr)72 171.6 R .716(om csh.)-.18 F .717
-(Brace expansion is similar to \214lename expansion, but the strings)5.716 F
-2.557(generated need not corr)72 183.6 R 2.557(espond to existing \214les.)-.18
-F 5.057(Ab)7.557 G 2.557(race expr)322.296 183.6 R 2.557
-(ession consists of an optional)-.18 F F2(pr)72 195.6 Q(eamble)-.18 E F0 4.412
-(,f)1.666 G 1.912(ollowed by a pair of braces enclosing a series of comma-sepa\
-rated strings, and an)120.028 195.6 R(optional)72 207.6 Q F2(postamble)2.842 E
-F0 5.342(.T)1.666 G .342(he pr)167.49 207.6 R .342(eamble is pr)-.18 F .342
-(epended to each string within the braces, and the postam-)-.18 F
-(ble is then appended to each r)72 219.6 Q(esulting string:)-.18 E/F3 10
-/Courier@0 SF 6($e)97 237.6 S(cho a{d,c,b}e)115 237.6 Q(ade ace abe)97 249.6 Q
-F0 .898(As this example demonstrates, the r)72 271.2 R .899
-(esults of brace expansion ar)-.18 F 3.399(en)-.18 G .899
-(ot sorted, as they ar)374.176 271.2 R 3.399(eb)-.18 G 3.399<798c>477.961 271.2
-S(le-)492.97 271.2 Q(name expansion.)72 283.2 Q F1 2.5(4.7. Process)72 307.2 R
-(Substitution)2.5 E F0 .692(On systems that can support it, Bash pr)97 322.8 R
-.692(ovides a facility known as)-.18 F F2(pr)3.192 E .692(ocess substitution)
--.18 F F0 5.692(.P)C -.18(ro)491.44 322.8 S(-).18 E .479(cess substitution is \
-similar to command substitution in that its speci\214cation includes a command)
-72 334.8 R .969(to execute, but the shell does not collect the command's outpu\
-t and insert it into the command)72 346.8 R 2.925(line. Rather)72 358.8 R 2.925
-(,B)-.74 G .425(ash opens a pipe to the command, which is r)136.65 358.8 R .426
-(un in the backgr)-.08 F 2.926(ound. The)-.18 F .426(shell uses)2.926 F .659
-(named pipes \(FIFOs\) or the)72 370.8 R F2(/dev/fd)3.158 E F0 .658
-(method of naming open \214les to expand the pr)4.824 F .658(ocess substitu-)
--.18 F .559(tion to a \214lename which connects to the pipe when opened.)72
-382.8 R .56(This \214lename becomes the r)5.56 F .56(esult of)-.18 F .302
-(the expansion.)72 394.8 R(Pr)5.302 E .302
-(ocess substitution can be used to compar)-.18 F 2.801(et)-.18 G .301
-(he outputs of two dif)344.255 394.8 R(fer)-.18 E .301(ent versions)-.18 F
-(of an application as part of a r)72 406.8 Q(egr)-.18 E(ession test:)-.18 E F3
-6($c)97 424.8 S(mp <\(old_prog\) <\(new_prog\))115 424.8 Q F1 2.5(4.8. Prompt)
-72 454.8 R(Customization)2.5 E F0 .745(One of the mor)97 470.4 R 3.245(ep)-.18
-G .745(opular interactive featur)179.97 470.4 R .745(es that Bash pr)-.18 F
-.745(ovides is the ability to customize)-.18 F 1.946(the pr)72 482.4 R 4.446
-(ompt. Both)-.18 F F1($PS1)4.446 E F0(and)4.446 E F1($PS2,)4.446 E F0 1.945
-(the primary and secondary pr)4.445 F 1.945(ompts, ar)-.18 F 4.445(ee)-.18 G
-1.945(xpanded befor)432.885 482.4 R(e)-.18 E 2.168(being displayed.)72 494.4 R
-2.168(Parameter and variable expansion is performed when the pr)7.168 F 2.169
-(ompt string is)-.18 F .77
-(expanded, so any shell variable can be put into the pr)72 506.4 R .77
-(ompt \(e.g.,)-.18 F F1($SHL)3.27 E(VL)-.92 E F0 3.27(,w)C .77
-(hich indicates how)419.37 506.4 R .609(deeply the curr)72 518.4 R .609
-(ent shell is nested\).)-.18 F .609(Bash specially interpr)5.609 F .609
-(ets characters in the pr)-.18 F .61(ompt string pr)-.18 F(e-)-.18 E 1.224
-(ceded by a backslash.)72 530.4 R 1.224(Some of these backslash escapes ar)
-6.224 F 3.724(er)-.18 G 1.224(eplaced with the curr)348.91 530.4 R 1.224
-(ent time, the)-.18 F .542(date, the curr)72 542.4 R .542(ent working dir)-.18
-F(ectory)-.18 E 3.042(,t)-1.11 G .542
-(he username, and the command number or history number)237.3 542.4 R .623
-(of the command being enter)72 554.4 R 3.123(ed. Ther)-.18 F 3.123(ei)-.18 G
-3.122(se)249.038 554.4 S .622
-(ven a backslash escape to cause the shell to change its)261.19 554.4 R(pr)72
-566.4 Q 1.098(ompt when r)-.18 F 1.098(unning as r)-.08 F 1.098(oot after an)
--.18 F F2(su)3.599 E F0 6.099(.B)C(efor)273.626 566.4 Q 3.599(ep)-.18 G 1.099
-(rinting each primary pr)305.375 566.4 R 1.099(ompt, Bash expands)-.18 F 1.458
-(the variable)72 578.4 R F1($PROMPT_COMMAND)3.958 E F0 1.457
-(and, if it has a value, executes the expanded value as a)3.957 F 1.038
-(command, allowing additional pr)72 590.4 R 1.038(ompt customization.)-.18 F
-1.038(For example, this assignment causes the)6.038 F(curr)72 602.4 Q .754
-(ent user)-.18 F 3.254(,t)-.74 G .754(he curr)134.598 602.4 R .753
-(ent host, the time, the last component of the curr)-.18 F .753
-(ent working dir)-.18 F(ectory)-.18 E 3.253(,t)-1.11 G(he)493.39 602.4 Q .813
-(level of shell nesting, and the history number of the curr)72 614.4 R .813
-(ent command to be embedded into the)-.18 F(primary pr)72 626.4 Q(ompt:)-.18 E
-F3 6($P)97 644.4 S(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 644.4 Q
-(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 656.4 Q
-(chet@odin [21:03:54] src\(2:637\)$)97 668.4 Q F0 1.289
-(The string being assigned is surr)72 690 R 1.289
-(ounded by single quotes so that if it is exported, the value of)-.18 F F1
-($SHL)72 702 Q(VL)-.92 E F0(will be updated by a child shell:)2.5 E F3
-(chet@odin [21:17:35] src\(2:638\)$ export PS1)97 720 Q EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-8-)279.67 48 S/F1 10/Courier@0 SF
-(chet@odin [21:17:40] src\(2:639\)$ bash)97 84 Q
-(chet@odin [21:17:46] src\(3:696\)$)97 96 Q F0 .981
-(The \\$ escape is displayed as `)72 117.6 R(`)-.37 E/F2 10/Palatino-Bold@0 SF
-($)A F0 1.721 -.37('' w)D .981(hen r).37 F .981(unning as a normal user)-.08 F
-3.481(,b)-.74 G .981(ut as `)382.843 117.6 R(`)-.37 E F2(#)A F0 1.721 -.37
-('' w)D .982(hen r).37 F .982(unning as)-.08 F -.18(ro)72 129.6 S(ot.).18 E F2
-2.5(4.9. File)72 153.6 R(System V)2.5 E(iews)-.55 E F0 .42(Since Berkeley intr)
-97 169.2 R .42(oduced symbolic links in 4.2 BSD, one of their most annoying pr)
--.18 F(operties)-.18 E .705(has been the `)72 181.2 R(`warping')-.37 E 3.205
-('t)-.37 G 3.205(oac)185.91 181.2 S .705(ompletely dif)207.22 181.2 R(fer)-.18
-E .705(ent ar)-.18 F .705(ea of the \214le system when using)-.18 F F2(cd)3.206
-E F0 3.206(,a)C .706(nd the)474.994 181.2 R -.18(re)72 193.2 S 2.292
-(sultant non-intuitive behavior of `).18 F(`)-.37 E F2 2.292(cd ..)B F0 -.37
-('')C 7.291(.T).37 G(he)282.761 193.2 Q/F3 9/Palatino-Roman@0 SF(UNIX)4.791 E
-F0 2.291(kernel tr)4.791 F 2.291(eats symbolic links)-.18 F/F4 10
-/Palatino-Italic@0 SF(physically)4.791 E F0(.)1.666 E .225(When the kernel is \
-translating a pathname in which one component is a symbolic link, it r)72 205.2
-R(eplaces)-.18 E .81(all or part of the pathname while pr)72 217.2 R .81
-(ocessing the link.)-.18 F .81(If the contents of the symbolic link begin)5.81
-F .033(with a slash, the kernel r)72 229.2 R .033(eplaces the pathname entir)
--.18 F .033(ely; if not, the link contents r)-.18 F .034(eplace the curr)-.18 F
-(ent)-.18 E 2.814(component. In)72 241.2 R .314
-(either case, the symbolic link is visible.)2.814 F .313
-(If the link value is an absolute pathname,)5.314 F
-(the user \214nds himself in a completely dif)72 253.2 Q(fer)-.18 E
-(ent part of the \214le system.)-.18 E 1.291(Bash pr)97 268.8 R 1.291(ovides a)
--.18 F F4(logical)3.791 E F0 1.291(view of the \214le system.)5.457 F 1.292
-(In this default mode, command and \214le-)6.292 F .727
-(name completion and builtin commands such as)72 280.8 R F2(cd)3.227 E F0(and)
-3.227 E F2(pushd)3.227 E F0 .727(which change the curr)3.227 F .727(ent work-)
--.18 F .245(ing dir)72 292.8 R .245(ectory transpar)-.18 F .245
-(ently follow symbolic links as if they wer)-.18 F 2.746(ed)-.18 G(ir)365.822
-292.8 Q 2.746(ectories. The)-.18 F F2($PWD)2.746 E F0(variable,)2.746 E .562
-(which holds the shell's idea of the curr)72 304.8 R .561(ent working dir)-.18
-F(ectory)-.18 E 3.061(,d)-1.11 G .561(epends on the path used to r)354.924
-304.8 R(each)-.18 E(the dir)72 316.8 Q
-(ectory rather than its physical location in the local \214le system hierar)
--.18 E(chy)-.18 E 5(.F)-1.11 G(or example:)427.35 316.8 Q F1 6($c)97 334.8 S 6
-(d/)115 334.8 S(usr/local/bin)133 334.8 Q 6($e)97 346.8 S(cho $PWD)115 346.8 Q
-(/usr/local/bin)97 358.8 Q 6($p)97 370.8 S(wd)115 370.8 Q(/usr/local/bin)97
-382.8 Q 6($/)97 394.8 S(bin/pwd)115 394.8 Q(/net/share/sun4/local/bin)97 406.8
-Q 6($c)97 418.8 S 6(d.)115 418.8 S(.)133 418.8 Q 6($p)97 430.8 S(wd)115 430.8 Q
-(/usr/local)97 442.8 Q 6($/)97 454.8 S(bin/pwd)115 454.8 Q
-(/net/share/sun4/local)97 466.8 Q 6($c)97 478.8 S 6(d.)115 478.8 S(.)133 478.8
-Q 6($p)97 490.8 S(wd)115 490.8 Q(/usr)97 502.8 Q 6($/)97 514.8 S(bin/pwd)115
-514.8 Q(/usr)97 526.8 Q F0 .094(One pr)72 548.4 R .094
-(oblem with this, of course, arises when pr)-.18 F .095
-(ograms that do not understand the shell's logical)-.18 F .805
-(notion of the \214le system interpr)72 560.4 R .805(et `)-.18 F(`..')-.37 E
-3.305('d)-.37 G(if)251.245 560.4 Q(fer)-.18 E(ently)-.18 E 5.805(.T)-1.11 G
-.804(his generally happens when Bash completes)304.86 560.4 R 1.864
-(\214lenames containing `)72 572.4 R(`..')-.37 E 4.364('a)-.37 G(ccor)194.902
-572.4 Q 1.864(ding to a logical hierar)-.18 F 1.865(chy which does not corr)
--.18 F 1.865(espond to their)-.18 F .584(physical location.)72 584.4 R .583
-(For users who \214nd this tr)5.584 F .583(oublesome, a corr)-.18 F(esponding)
--.18 E F4(physical)3.083 E F0 .583(view of the \214le)4.749 F
-(system is available:)72 596.4 Q F1 6($c)97 614.4 S 6(d/)115 614.4 S
-(usr/local/bin)133 614.4 Q 6($p)97 626.4 S(wd)115 626.4 Q(/usr/local/bin)97
-638.4 Q 6($s)97 650.4 S(et -o physical)115 650.4 Q 6($p)97 662.4 S(wd)115 662.4
-Q(/net/share/sun4/local/bin)97 674.4 Q EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5
-(4.10. Internationalization)72 84 R F0 .316(One of the most signi\214cant impr)
-97 99.6 R .316(ovements in version 1.13 of Bash was the change to `)-.18 F
-(`eight-)-.37 E .534(bit cleanliness')72 111.6 R 3.034('. Pr)-.37 F .533
-(evious versions used the eighth bit of characters to mark whether or not they)
--.18 F(wer)72 123.6 Q 3.109(eq)-.18 G .609(uoted when performing wor)102.399
-123.6 R 3.109(de)-.18 G 3.109(xpansions. While)244.335 123.6 R .609
-(this did not af)3.109 F .61(fect the majority of users,)-.18 F 1.249
-(most of whom used only seven-bit ASCII characters, some found it con\214ning.)
-72 135.6 R 1.248(Beginning with)6.248 F .251
-(version 1.13, Bash implemented a dif)72 147.6 R(fer)-.18 E .251
-(ent quoting mechanism that did not alter the eighth bit of)-.18 F 3.228
-(characters. This)72 159.6 R .727(allowed Bash to manipulate \214les with `)
-3.228 F(`odd')-.37 E 3.227('c)-.37 G .727(haracters in their names, but did)
-356.825 159.6 R 1.924
-(nothing to help users enter those names, so version 1.13 intr)72 171.6 R 1.925
-(oduced changes to r)-.18 F 1.925(eadline that)-.18 F .658
-(made it eight-bit clean as well.)72 183.6 R .658(Options exist that for)5.658
-F .658(ce r)-.18 F .658(eadline to attach no special signi\214cance)-.18 F .834
-(to characters with the eighth bit set \(the default behavior is to convert th\
-ese characters to meta-)72 195.6 R(pr)72 207.6 Q 2.375(e\214xed key sequences\
-\) and to output these characters without conversion to meta-pr)-.18 F
-(e\214xed)-.18 E 2.924(sequences. These)72 219.6 R .424
-(changes, along with the expansion of keymaps to a full eight bits, enable r)
-2.924 F(ead-)-.18 E 1.025(line to work with most of the ISO-8859 family of cha\
-racter sets, used by many Eur)72 231.6 R 1.025(opean coun-)-.18 F(tries.)72
-243.6 Q F1(4.1)72 267.6 Q 2.5(1. POSIX)-.37 F(Mode)2.5 E F0 .834
-(Although Bash is intended to be POSIX.2 conformant, ther)97 283.2 R 3.334(ea)
--.18 G 1.194 -.18(re a)374.606 283.2 T -.18(re).18 G .835
-(as in which the default).18 F .622
-(behavior is not compatible with the standar)72 295.2 R 3.121(d. For)-.18 F
-.621(users who wish to operate in a strict POSIX.2)3.121 F(envir)72 307.2 Q
-2.453(onment, Bash implements a)-.18 F/F2 10/Palatino-Italic@0 SF 2.453
-(POSIX mode)4.953 F F0 7.453(.W)C 2.453
-(hen this mode is active, Bash modi\214es its)305.808 307.2 R .969
-(default operation wher)72 319.2 R 3.469(ei)-.18 G 3.469(td)186.917 319.2 S(if)
-199.756 319.2 Q .969(fers fr)-.18 F .969(om POSIX.2 to match the standar)-.18 F
-3.468(d. POSIX)-.18 F .968(mode is enter)3.468 F(ed)-.18 E .474
-(when Bash is started with the)72 331.2 R F1(-posix)2.974 E F0 2.974
-(option. This)2.974 F(featur)2.974 E 2.974(ei)-.18 G 2.975(sa)334.31 331.2 S
-.475(lso available as an option to the)346.525 331.2 R F1(set)2.975 E F0
-(builtin,)72 343.2 Q F1 1.631(set -o posix)4.131 F F0 6.631(.F)C 1.631
-(or compatibility with other GNU softwar)177.054 343.2 R 4.131(et)-.18 G 1.63
-(hat attempts to be POSIX.2)379.02 343.2 R .627
-(compliant, Bash also enters POSIX mode if the variable)72 355.2 R F1($POSIXL)
-3.128 E(Y_CORRECT)-.92 E F0 .628(is set when Bash)3.128 F .891
-(is started or assigned a value during execution.)72 367.2 R F1
-($POSIX_PEDANTIC)5.891 E F0 .89(is accepted as well, to be)3.391 F .445
-(compatible with some older GNU utilities.)72 379.2 R .446
-(When Bash is started in POSIX mode, for example, it)5.445 F(sour)72 391.2 Q
-.342(ces the \214le named by the value of)-.18 F F1($ENV)2.842 E F0 .342
-(rather than the `)2.842 F(`normal')-.37 E 2.842('s)-.37 G .341
-(tartup \214les, and does not)392.566 391.2 R(allow r)72 403.2 Q(eserved wor)
--.18 E(ds to be aliased.)-.18 E F1 2.5(5. New)72 427.2 R
-(Features and Future Plans)2.5 E F0(Ther)97 442.8 Q 4.157(ea)-.18 G 2.017 -.18
-(re s)131.457 442.8 T 1.658(everal featur).18 F 1.658(es intr)-.18 F 1.658
-(oduced in the curr)-.18 F 1.658(ent version of Bash, version 1.14, and a)-.18
-F .714(number under consideration for futur)72 454.8 R 3.214(er)-.18 G 3.214
-(eleases. This)253.61 454.8 R .714
-(section will brie\215y detail the new featur)3.214 F(es)-.18 E
-(in version 1.14 and describe several featur)72 466.8 Q
-(es that may appear in later versions.)-.18 E F1 2.5(5.1. New)72 490.8 R
-(Features in Bash-1.14)2.5 E F0 1.303(The new featur)97 506.4 R 1.304
-(es available in Bash-1.14 answer several of the most common r)-.18 F 1.304
-(equests for)-.18 F 2.815(enhancements. Most)72 518.4 R(notably)2.815 E 2.815
-(,t)-1.11 G(her)209.475 518.4 Q 2.815(ei)-.18 G 2.815(sam)234.37 518.4 S .314
-(echanism for including non-visible character sequences)258.07 518.4 R 1.795
-(in pr)72 530.4 R 1.796
-(ompts, such as those which cause a terminal to print characters in dif)-.18 F
-(fer)-.18 E 1.796(ent colors or in)-.18 F .354(standout mode.)72 542.4 R(Ther)
-5.354 E 2.854(ew)-.18 G .354(as nothing pr)183.572 542.4 R .353
-(eventing the use of these sequences in earlier versions, but)-.18 F 2.113
-(the r)72 554.4 R 2.113(eadline r)-.18 F 2.114
-(edisplay algorithm assumed each character occupied physical scr)-.18 F 2.114
-(een space and)-.18 F(would wrap lines pr)72 566.4 Q(ematur)-.18 E(ely)-.18 E
-(.)-1.11 E 1.183(Readline has a few new variables, several new bindable comman\
-ds, and some additional)97 582 R 1.399(emacs mode default key bindings.)72 594
-R 3.899(An)6.399 G 1.399(ew history sear)252.724 594 R 1.4
-(ch mode has been implemented: in this)-.18 F .033(mode, r)72 606 R .033
-(eadline sear)-.18 F .032(ches the history for lines beginning with the charac\
-ters between the beginning)-.18 F .452(of the curr)72 618 R .452
-(ent line and the cursor)-.18 F 5.452(.T)-.74 G .452(he existing r)233.074 618
-R .452(eadline incr)-.18 F .452(emental sear)-.18 F .453(ch commands no longer)
--.18 F .947(match identical lines mor)72 630 R 3.447(et)-.18 G .947(han once.)
-198.068 630 R .946(Filename completion now expands variables in dir)5.947 F
-(ectory)-.18 E 2.516(names. The)72 642 R .016(history expansion facilities ar)
-2.516 F 2.516(en)-.18 G .017
-(ow nearly completely csh-compatible: missing modi-)270.006 642 R
-(\214ers have been added and history substitution has been extended.)72 654 Q
-.535(Several of the featur)97 669.6 R .535(es described earlier)-.18 F 3.035
-(,s)-.74 G .535(uch as)282.59 669.6 R F1 .534(set -o posix)3.035 F F0(and)3.034
-E F1($POSIX_PEDANTIC)3.034 E F0 3.034(,a)C -.18(re)495.44 669.6 S .749
-(new in version 1.14.)72 681.6 R(Ther)5.749 E 3.249(ei)-.18 G 3.249(san)199.455
-681.6 S .749(ew shell variable,)221.013 681.6 R F1(OSTYPE)3.249 E F0 3.25(,t)C
-3.25(ow)351.81 681.6 S .75(hich Bash assigns a value that)368.86 681.6 R .417
-(identi\214es the version of)72 693.6 R/F3 9/Palatino-Roman@0 SF(UNIX)2.917 E
-F0 .416(it's r)2.917 F .416(unning on \(gr)-.08 F .416(eat for putting ar)-.18
-F(chitectur)-.18 E .416(e-speci\214c binary dir)-.18 F(ec-)-.18 E 2.257
-(tories into the)72 705.6 R F1($P)4.757 E -.92(AT)-.74 G(H).92 E F0 4.757
-(\). T)B 2.257(wo variables have been r)-.9 F(enamed:)-.18 E F1($HISTCONTROL)
-4.758 E F0 -.18(re)4.758 G(places).18 E F1($his-)4.758 E(tory_control)72 717.6
-Q F0 5.733(,a)C(nd)140.793 717.6 Q F1($HOSTFILE)5.733 E F0 -.18(re)5.732 G
-(places).18 E F1($hostname_completion_\214le)5.732 E F0 8.232(.I)C 5.732(nb)
-401.622 717.6 S 3.232(oth cases, the old)418.704 717.6 R 2.337(names ar)72
-729.6 R 4.837(ea)-.18 G 2.338(ccepted for backwar)128.914 729.6 R 2.338
-(ds compatibility)-.18 F 7.338(.T)-1.11 G 2.338(he ksh)311.846 729.6 R F2
-(select)4.838 E F0(constr)6.504 E 2.338(uct, which allows the)-.08 F EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S .565
-(generation of simple menus, has been implemented.)72 84 R .564
-(New capabilities have been added to exist-)5.565 F 1.446(ing variables:)72 96
-R/F1 10/Palatino-Bold@0 SF($auto_resume)3.946 E F0 1.446
-(can now take values of)3.946 F/F2 10/Palatino-Italic@0 SF(exact)3.947 E F0(or)
-5.613 E F2(substring)3.947 E F0 3.947(,a)1.666 G(nd)405.913 96 Q F1
-($HISTCONTROL)3.947 E F0 1.8(understands the value)72 108 R F2(ignor)4.3 E
-(eboth)-.18 E F0 4.3(,w)1.666 G 1.799(hich combines the two pr)238.106 108 R
-1.799(eviously acceptable values.)-.18 F(The)6.799 E F1(dirs)72 120 Q F0 2.612
-(builtin has acquir)5.112 F 2.613
-(ed options to print out speci\214c members of the dir)-.18 F 2.613
-(ectory stack.)-.18 F(The)7.613 E F1($nolinks)72 132 Q F0 .177
-(variable, which for)2.677 F .176
-(ces a physical view of the \214le system, has been superseded by the)-.18 F F1
-<ad50>2.676 E F0 1.486(option to the)72 144 R F1(set)3.986 E F0 1.486
-(builtin \(equivalent to)3.986 F F1 1.486(set -o physical)3.986 F F0 1.486
-(\); the variable is r)B 1.486(etained for backwar)-.18 F(ds)-.18 E
-(compatibility)72 156 Q 5.564(.T)-1.11 G .564(he version string contained in)
-144.074 156 R F1($BASH_VERSION)3.064 E F0 .563(now includes an indication of)
-3.064 F .501(the patch level as well as the `)72 168 R .501(`build version')
--.37 F 3.001('. Some)-.37 F .502(little-used featur)3.001 F .502
-(es have been r)-.18 F 3.002(emoved: the)-.18 F F1(bye)72 180 Q F0 .943
-(synonym for)3.443 F F1(exit)3.443 E F0 .943(and the)3.443 F F1($NO_PROMPT_V)
-3.443 E(ARS)-1.29 E F0 .943(variable ar)3.443 F 3.443(eg)-.18 G 3.443
-(one. Ther)379.707 180 R 3.443(ei)-.18 G 3.443(sn)435.873 180 S .942(ow an or)
-449.376 180 R(ga-)-.18 E(nized test suite that can be r)72 192 Q(un as a r)-.08
-E(egr)-.18 E(ession test when building a new version of Bash.)-.18 E 1.42
-(The documentation has been thor)97 207.6 R 1.421(oughly over)-.18 F 1.421
-(hauled: ther)-.18 F 3.921(ei)-.18 G 3.921(san)372.184 207.6 S 1.421
-(ew manual page on the)395.086 207.6 R -.18(re)72 219.6 S 1.142
-(adline library and the).18 F F2(info)3.642 E F0 1.142
-(\214le has been updated to r)3.642 F 1.142(e\215ect the curr)-.18 F 1.142
-(ent version.)-.18 F 1.141(As always, as)6.142 F
-(many bugs as possible have been \214xed, although some sur)72 231.6 Q(ely r)
--.18 E(emain.)-.18 E F1 2.5(5.2. Other)72 255.6 R(Features)2.5 E F0(Ther)97
-271.2 Q 3.692(ea)-.18 G 1.552 -.18(re a f)130.992 271.2 T 1.192(ew featur).18 F
-1.192(es that I hope to include in later Bash r)-.18 F 3.693(eleases. Some)-.18
-F(ar)3.693 E 3.693(eb)-.18 G 1.193(ased on)468.887 271.2 R(work alr)72 283.2 Q
-(eady done in other shells.)-.18 E 2.717
-(In addition to simple variables, a futur)97 298.8 R 5.217(er)-.18 G 2.716
-(elease of Bash will include one-dimensional)297.159 298.8 R .575
-(arrays, using the ksh implementation of arrays as a model.)72 310.8 R .575
-(Additions to the ksh syntax, such as)5.575 F F2(varname)72 322.8 Q F0 1.116
-(=\( ... \) to assign a list of wor)B 1.115(ds dir)-.18 F 1.115
-(ectly to an array and a mechanism to allow the)-.18 F F1(read)3.615 E F0 .492
-(builtin to r)72 334.8 R .492(ead a list of values dir)-.18 F .493
-(ectly into an array)-.18 F 2.993(,w)-1.11 G .493(ould be desirable.)313.615
-334.8 R .493(Given those extensions,)5.493 F .621(the ksh)72 346.8 R F1 .621
-(set \255A)3.121 F F0 .621(syntax may not be worth supporting \(the)3.121 F F1
-<ad41>3.12 E F0 .62(option assigns a list of values to an)3.12 F(array)72 358.8
-Q 2.5(,b)-1.11 G(ut is a rather peculiar special case\).)104.88 358.8 Q .522
-(Some shells include a means of)97 374.4 R F2(pr)3.022 E(ogrammable)-.18 E F0
-(wor)3.022 E 3.022(dc)-.18 G .522(ompletion, wher)331.796 374.4 R 3.023(et)-.18
-G .523(he user speci\214es on)416.561 374.4 R 3.291(ap)72 386.4 S(er)86.301
-386.4 Q .791(-command basis how the ar)-.18 F .791(guments of the command ar)
--.18 F 3.291(et)-.18 G 3.29(ob)358.98 386.4 S 3.29(et)373.26 386.4 S -.18(re)
-384.6 386.4 S .79(ated when completion is).18 F .588
-(attempted: as \214lenames, hostnames, executable \214les, and so on.)72 398.4
-R .589(The other aspects of the curr)5.589 F(ent)-.18 E .649
-(Bash implementation could r)72 410.4 R .648
-(emain as-is; the existing heuristics would still be valid.)-.18 F .648
-(Only when)5.648 F 2.136(completing the ar)72 422.4 R 2.137
-(guments to a simple command would the pr)-.18 F 2.137
-(ogrammable completion be in)-.18 F(ef)72 434.4 Q(fect.)-.18 E .223
-(It would also be nice to give the user \214ner)97 450 R .223(-grained contr)
--.18 F .222(ol over which commands ar)-.18 F 2.722(es)-.18 G(aved)482.45 450 Q
-1.603(onto the history list.)72 462 R 1.604(One pr)6.604 F 1.604
-(oposal is for a variable, tentatively named)-.18 F F1(HISTIGNORE)4.104 E F0
-4.104(,w)C(hich)485.01 462 Q .471
-(would contain a colon-separated list of commands.)72 474 R .471
-(Lines beginning with these commands, after)5.471 F .056(the r)72 486 R .056
-(estrictions of)-.18 F F1($HISTCONTROL)2.556 E F0 .057
-(have been applied, would not be placed onto the history list.)2.556 F 1.246(T\
-he shell pattern-matching capabilities could also be available when specifying\
- the contents of)72 498 R F1($HISTIGNORE)72 510 Q F0(.)A .612
-(One thing that newer shells such as)97 525.6 R F1(wksh)3.112 E F0 .612
-(\(also known as)3.112 F F1(dtksh)3.112 E F0 3.112(\)p)C -.18(ro)397.502 525.6
-S .612(vide is a command to).18 F 1.826
-(dynamically load code implementing additional builtin commands into a r)72
-537.6 R 1.826(unning shell.)-.08 F(This)6.826 E 1.2
-(new builtin would take an object \214le or shar)72 549.6 R 1.2
-(ed library implementing the `)-.18 F(`body')-.37 E 3.7('o)-.37 G 3.7(ft)450.03
-549.6 S 1.2(he builtin)460.32 549.6 R(\()72 561.6 Q F2(xxx_builtin\(\))A F0
-1.094(for those familiar with Bash internals\) and a str)3.595 F(uctur)-.08 E
-3.594(ec)-.18 G 1.094(ontaining the name of the)386.094 561.6 R .731
-(new command, the function to call when the new builtin is invoked \(pr)72
-573.6 R .731(esumably de\214ned in the)-.18 F(shar)72 585.6 Q .881
-(ed object speci\214ed as an ar)-.18 F .881
-(gument\), and the documentation to be printed by the)-.18 F F1(help)3.38 E F0
-(com-)3.38 E .974(mand \(possibly pr)72 597.6 R .974(esent in the shar)-.18 F
-.975(ed object as well\).)-.18 F .975(It would manage the details of extending)
-5.975 F(the internal table of builtins.)72 609.6 Q 2.641(Af)97 625.2 S .141
-(ew other builtins would also be desirable: two ar)110.751 625.2 R 2.641(et)
--.18 G .14(he POSIX.2)337.93 625.2 R F1(getconf)2.64 E F0 .14(command, which)
-2.64 F 1.518(prints the values of system con\214guration variables de\214ned b\
-y POSIX.2, and a)72 637.2 R F1(disown)4.019 E F0(builtin,)4.019 E .93
-(which causes a shell r)72 649.2 R .929(unning with job contr)-.08 F .929
-(ol active to `)-.18 F(`for)-.37 E .929(get about')-.18 F 3.429('o)-.37 G .929
-(ne or mor)397.563 649.2 R 3.429(eb)-.18 G(ackgr)456.25 649.2 Q(ound)-.18 E
-.095(jobs in its internal jobs table.)72 661.2 R(Using)5.095 E F1(getconf)2.595
-E F0 2.595(,f)C .095(or example, a user could r)274.02 661.2 R .096
-(etrieve a value for)-.18 F F1($P)2.596 E -.92(AT)-.74 G(H).92 E F0 .73
-(guaranteed to \214nd all of the POSIX standar)72 673.2 R 3.23(du)-.18 G .73
-(tilities, or \214nd out how long \214lenames may be in)282.86 673.2 R
-(the \214le system containing a speci\214ed dir)72 685.2 Q(ectory)-.18 E(.)
--1.11 E(Ther)97 700.8 Q 4.171(ea)-.18 G 2.031 -.18(re n)131.471 700.8 T 4.171
-(oi).18 G 1.671(mplementation timetables for any of these featur)162.563 700.8
-R 1.672(es, nor ar)-.18 F 4.172(et)-.18 G(her)443.888 700.8 Q 4.172(ec)-.18 G
-(oncr)471.67 700.8 Q(ete)-.18 E .034(plans to include them.)72 712.8 R .034
-(If anyone has comments on these pr)5.034 F .034(oposals, feel fr)-.18 F .033
-(ee to send me electr)-.18 F(onic)-.18 E(mail.)72 724.8 Q EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-1)277.445 48 S 2.5(1-)287.725 48 S/F1 10
-/Palatino-Bold@0 SF 2.5(6. Re\215ections)72 84 R(and Lessons Learned)2.5 E F0
-1.503(The lesson that has been r)97 99.6 R 1.504
-(epeated most often during Bash development is that ther)-.18 F 4.004(ea)-.18 G
--.18(re)495.44 99.6 S 1.052
-(dark corners in the Bourne Shell, and people use all of them.)72 111.6 R 1.051
-(In the original description of the)6.052 F 1.37
-(Bourne shell, quoting and the shell grammar ar)72 123.6 R 3.87(eb)-.18 G 1.37
-(oth poorly speci\214ed and incomplete; subse-)304.61 123.6 R .387
-(quent descriptions have not helped much.)72 135.6 R .387(The grammar pr)5.387
-F .386(esented in Bourne's paper describing)-.18 F .059
-(the shell distributed with the Seventh Edition of)72 147.6 R/F2 9
-/Palatino-Roman@0 SF(UNIX)2.559 E F0 2.559<8769>C 2.559(ss)321.048 147.6 S
-2.559(of)332.087 147.6 S .059(ar of)343.436 147.6 R 2.559(ft)-.18 G .059
-(hat it does not allow the com-)372.704 147.6 R(mand)72 159.6 Q/F3 10/Courier@0
-SF(who|wc)2.5 E F0 5(.I)C 2.5(nf)147.13 159.6 S(act, as T)158.78 159.6 Q
-(om Duf)-.92 E 2.5(fs)-.18 G(tates:)237.21 159.6 Q .985(Nobody r)97 175.2 R
-.984(eally knows what the Bourne shell's grammar is.)-.18 F .984
-(Even examination of the)5.984 F(sour)97 187.2 Q(ce code is little help.\210)
--.18 E .782(The POSIX.2 standar)72 202.8 R 3.282(di)-.18 G .782(ncludes a)
-177.496 202.8 R/F4 10/Palatino-Italic@0 SF(yacc)3.282 E F0 .782
-(grammar that comes close to capturing the Bourne shell's)3.282 F(behavior)72
-214.8 Q 3.67(,b)-.74 G 1.17(ut it disallows some constr)122.07 214.8 R 1.169
-(ucts which sh accepts without complaint \255 and ther)-.08 F 3.669(ea)-.18 G
--.18(re)495.44 214.8 S .223(scripts out ther)72 226.8 R 2.723(et)-.18 G .223
-(hat use them.)149.659 226.8 R .224(It took a few versions and several bug r)
-5.223 F .224(eports befor)-.18 F 2.724(eB)-.18 G .224(ash imple-)457.436 226.8
-R .427(mented sh-compatible quoting, and ther)72 238.8 R 2.927(ea)-.18 G .787
--.18(re s)264.265 238.8 T .426(till some `).18 F(`legal')-.37 E 2.926('s)-.37 G
-2.926(hc)359.87 238.8 S(onstr)373.056 238.8 Q .426(ucts which Bash \215ags as)
--.08 F(syntax err)72 250.8 Q 2.5(ors. Complete)-.18 F
-(sh compatibility is a tough nut.)2.5 E .314
-(The shell is bigger and slower than I would like, though the curr)97 266.4 R
-.314(ent version is substantially)-.18 F 1.507(faster than pr)72 278.4 R
-(eviously)-.18 E 6.507(.T)-1.11 G 1.507(he r)185.841 278.4 R 1.507
-(eadline library could stand a substantial r)-.18 F 4.006(ewrite. A)-.18 F
-(hand-written)4.006 E .574(parser to r)72 290.4 R .574(eplace the curr)-.18 F
-(ent)-.18 E F4(yacc)3.074 E F0 .574(-generated one would pr)B .574(obably r)
--.18 F .575(esult in a speedup, and would)-.18 F 1.865(solve one glaring pr)72
-302.4 R 4.365(oblem: the)-.18 F 1.864(shell could parse commands in `)4.364 F
-(`$\(...\)')-.37 E 4.364('c)-.37 G(onstr)408.058 302.4 Q 1.864(ucts as they ar)
--.08 F(e)-.18 E(enter)72 314.4 Q(ed, rather than r)-.18 E(eporting err)-.18 E
-(ors when the constr)-.18 E(uct is expanded.)-.08 E .198(As always, ther)97 330
-R 2.698(ei)-.18 G 2.698(ss)176.004 330 S .198(ome chaf)187.182 330 R 2.699(ft)
--.18 G 2.699(og)236.659 330 S 2.699(ow)250.378 330 S .199(ith the wheat.)
-266.877 330 R(Ar)5.199 E .199(eas of duplicated functionality need)-.18 F 1.009
-(to be cleaned up.)72 342 R(Ther)6.009 E 3.509(ea)-.18 G 1.369 -.18(re s)
-189.785 342 T 1.009(everal cases wher).18 F 3.509(eB)-.18 G 1.009(ash tr)
-300.041 342 R 1.008(eats a variable specially to enable func-)-.18 F 1.316
-(tionality available another way \()72 354 R F1($notify)A F0(vs.)3.816 E F1
-1.316(set -o notify)6.316 F F0(and)3.816 E F1($nolinks)3.816 E F0(vs.)3.816 E
-F1 1.316(set -o physical)3.816 F F0 3.816(,f)C(or)494.59 354 Q .925
-(instance\); the special tr)72 366 R .925
-(eatment of the variable name should pr)-.18 F .925(obably be r)-.18 F 3.425
-(emoved. A)-.18 F .925(few mor)3.425 F(e)-.18 E 2.296(things could stand r)72
-378 R 2.296(emoval; the)-.18 F F1($allow_null_glob_expansion)4.796 E F0(and)
-4.796 E F1($glob_dot_\214lenames)4.797 E F0(vari-)4.797 E .728(ables ar)72 390
-R 3.228(eo)-.18 G 3.228(fp)119.946 390 S .728(articularly questionable value.)
-132.514 390 R(The)5.728 E F1($[...])3.227 E F0 .727
-(arithmetic evaluation syntax is r)3.227 F(edundant)-.18 E .804
-(now that the POSIX-mandated)72 402 R F1($\(\(...\)\))3.304 E F0(constr)3.304 E
-.805(uct has been implemented, and could be deleted.)-.08 F(It)5.805 E 1.056
-(would be nice if the text output by the)72 414 R F1(help)3.556 E F0 1.055
-(builtin wer)3.556 F 3.555(ee)-.18 G 1.055
-(xternal to the shell rather than com-)339.79 414 R 1.365(piled into it.)72 426
-R 1.365(The behavior enabled by)6.365 F F1($command_oriented_history)3.865 E F0
-3.865(,w)C 1.365(hich causes the shell to)397.55 426 R 1.047
-(attempt to save all lines of a multi-line command in a single history entry)72
-438 R 3.547(,s)-1.11 G 1.047(hould be made the)418.109 438 R
-(default and the variable r)72 450 Q(emoved.)-.18 E F1 2.5(7. A)72 474 R
-(vailability)-.7 E F0 6.17(As with all other GNU softwar)97 489.6 R 6.17
-(e, Bash is available for anonymous FTP fr)-.18 F(om)-.18 E F4(pr)72 501.6 Q
-(ep.ai.mit.edu:/pub/gnu)-.18 E F0 2.136(and fr)6.302 F 2.136
-(om other GNU softwar)-.18 F 4.635(em)-.18 G(irr)334.21 501.6 Q 2.135
-(or sites.)-.18 F 2.135(The curr)7.135 F 2.135(ent version is in)-.18 F F4
-(bash-1.14.1.tar)72 513.6 Q(.gz)-.74 E F0 .241(in that dir)4.407 F(ectory)-.18
-E 5.241(.U)-1.11 G(se)234.27 513.6 Q F4(ar)2.741 E(chie)-.18 E F0 .241
-(to \214nd the near)4.407 F .241(est ar)-.18 F .241(chive site.)-.18 F .242
-(The latest version is)5.241 F .295(always available for FTP fr)72 525.6 R(om)
--.18 E F4(bash.CWRU.Edu:/pub/dist.)2.795 E F0 .295
-(Bash documentation is available for FTP)4.461 F(fr)72 537.6 Q(om)-.18 E F4
-(bash.CWRU.Edu:/pub/bash.)2.5 E F0 1.207(The Fr)97 553.2 R 1.207(ee Softwar)
--.18 F 3.707(eF)-.18 G 1.207
-(oundation sells tapes and CD-ROMs containing Bash; send electr)188.531 553.2 R
-(onic)-.18 E(mail to)72 565.2 Q F3(gnu@prep.ai.mit.edu)2.5 E F0(or call)2.5 E
-F3(+1-617-876-3296)2.5 E F0(for mor)2.5 E 2.5(ei)-.18 G(nformation.)387.54
-565.2 Q .283(Bash is also distributed with several versions of)97 580.8 R F2
-(UNIX)2.782 E F0 .282(-compatible systems.)B .282(It is included as)5.282 F
-.624(/bin/sh and /bin/bash on several Linux distributions \(mor)72 592.8 R
-3.124(ea)-.18 G .624(bout the dif)353.78 592.8 R(fer)-.18 E .624
-(ence in a moment\),)-.18 F(and as contributed softwar)72 604.8 Q 2.5(ei)-.18 G
-2.5(nB)200.83 604.8 S(SDI's BSD/386* and Fr)215.26 604.8 Q(eeBSD.)-.18 E .529
-(The Linux distribution deserves special mention.)97 620.4 R(Ther)5.529 E 3.029
-(ea)-.18 G .889 -.18(re t)354.414 620.4 T .529(wo con\214gurations included in)
-.18 F .037(the standar)72 632.4 R 2.537(dB)-.18 G .038(ash distribution: a `)
-136.364 632.4 R(`normal')-.37 E 2.538('c)-.37 G .038
-(on\214guration, in which all of the standar)268.256 632.4 R 2.538(df)-.18 G
-(eatur)456.022 632.4 Q .038(es ar)-.18 F(e)-.18 E .451(included, and a `)72
-644.4 R(`minimal')-.37 E 2.951('c)-.37 G .451
-(on\214guration, which omits job contr)199.384 644.4 R .451
-(ol, aliases, history and command)-.18 F .356(line editing, the dir)72 656.4 R
-.356(ectory stack and)-.18 F F1(pushd/popd/dirs,)2.856 E F0(pr)2.856 E .357
-(ocess substitution, pr)-.18 F .357(ompt string special)-.18 F .32 LW 76 666.4
-72 666.4 DL 80 666.4 76 666.4 DL 84 666.4 80 666.4 DL 88 666.4 84 666.4 DL 92
-666.4 88 666.4 DL 96 666.4 92 666.4 DL 100 666.4 96 666.4 DL 104 666.4 100
-666.4 DL 108 666.4 104 666.4 DL 112 666.4 108 666.4 DL 116 666.4 112 666.4 DL
-120 666.4 116 666.4 DL 124 666.4 120 666.4 DL 128 666.4 124 666.4 DL 132 666.4
-128 666.4 DL 136 666.4 132 666.4 DL 140 666.4 136 666.4 DL 144 666.4 140 666.4
-DL/F5 8/Palatino-Roman@0 SF .42(\207S. R. Bourne, `)72 676.4 R .42(`UNIX T)
--.296 F .42(ime-Sharing System:)-.44 F .42(The UNIX Shell')4.42 F(',)-.296 E/F6
-8/Palatino-Italic@0 SF .42(Bell System T)2.42 F .42(echnical Journal)-.888 F F5
-2.42(,5)C .42(7\(6\), July-August,)405.004 676.4 R(1978, pp. 1971-1990.)72
-686.4 Q<8854>72 696.4 Q .209(om Duf)-.736 F .209(f, `)-.144 F .209
-(`Rc \255 A Shell for Plan 9 and)-.296 F/F7 7/Palatino-Roman@0 SF(UNIX)2.209 E
-F5(systems')2.209 E(',)-.296 E F6(Pr)2.209 E .208
-(oc. of the Summer 1990 EUUG Confer)-.144 F(ence)-.144 E F5 2.208(,L)C .208
-(ondon, Ju-)430.704 696.4 R(ly)72 706.4 Q 2(,1)-.888 G(990, pp. 21-33.)85.888
-706.4 Q(*BSD/386 is a trademark of Berkeley Softwar)72 716.4 Q 2(eD)-.144 G
-(esign, Inc.)243.472 716.4 Q EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S 1.319
-(character decoding, and the)72 84 R/F1 10/Palatino-Italic@0 SF(select)3.818 E
-F0(constr)5.484 E 3.818(uct. This)-.08 F 1.318
-(minimal version is designed to be a dr)3.818 F(op-in)-.18 E -.18(re)72 96 S
-1.292(placement for the traditional).18 F/F2 9/Palatino-Roman@0 SF(UNIX)3.792 E
-F0 1.293(/bin/sh, and is included as the Linux /bin/sh in several)3.792 F
-(packagings.)72 108 Q/F3 10/Palatino-Bold@0 SF 2.5(8. Conclusion)72 132 R F0
-.19(Bash is a worthy successor to sh.)97 147.6 R .19(It is suf)5.19 F .19
-(\214ciently portable to r)-.18 F .19(un on nearly every version of)-.08 F F2
-(UNIX)72 159.6 Q F0(fr)2.929 E .429(om 4.3 BSD to SVR4.2, and several)-.18 F F2
-(UNIX)2.93 E F0 2.93(workalikes. It)2.93 F .43(is r)2.93 F .43
-(obust enough to r)-.18 F .43(eplace sh on)-.18 F 1.22
-(most of those systems, and pr)72 171.6 R 1.219(ovides mor)-.18 F 3.719(ef)-.18
-G(unctionality)271.896 171.6 Q 6.219(.I)-1.11 G 3.719(th)336.255 171.6 S 1.219
-(as several thousand r)349.054 171.6 R 1.219(egular users,)-.18 F .052(and the\
-ir feedback has helped to make it as good as it is today \255 a testament to t\
-he bene\214ts of fr)72 183.6 R(ee)-.18 E(softwar)72 195.6 Q(e.)-.18 E EP
-%%Trailer
-end
-%%EOF
diff --git a/doc/texinfo.tex.20090118 b/doc/texinfo.tex.20090118
deleted file mode 100644 (file)
index 03c2998..0000000
+++ /dev/null
@@ -1,9250 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2009-01-18.17}
-%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009 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
-% published by the Free Software Foundation, either version 3 of the
-% License, or (at your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program.  If not, see <http://www.gnu.org/licenses/>.
-%
-% As a special exception, when this file is read by TeX when processing
-% a Texinfo source document, you may use the result without
-% restriction.  (This has been our intent since Texinfo was invented.)
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-%   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org).
-% The texinfo.tex in any given distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.  Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem.  Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution.  For a simple
-% manual foo.texi, however, you can get away with this:
-%   tex foo.texi
-%   texindex foo.??
-%   tex foo.texi
-%   tex foo.texi
-%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent.  You can get the existing language-specific files from the
-% full Texinfo distribution.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
-  \catcode`+=\active \catcode`\_=\active}
-
-
-\chardef\other=12
-
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some plain tex macros whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexfootnote=\footnote
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexindent=\indent
-\let\ptexinsert=\insert
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexnewwrite\newwrite
-\let\ptexnoindent=\noindent
-\let\ptexplus=+
-\let\ptexrbrace=\}
-\let\ptexslash=\/
-\let\ptexstar=\*
-\let\ptext=\t
-\let\ptextop=\top
-{\catcode`\'=\active
-\global\let\ptexquoteright'}% Math-mode def from plain.tex.
-\let\ptexraggedright=\raggedright
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
-  \let\linenumber = \empty % Pre-3.0.
-\else
-  \def\linenumber{l.\the\inputlineno:\space}
-\fi
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
-
-% sometimes characters are active, so we need control sequences.
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dashChar  = `\-
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar  = `\;
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% The following is used inside several \edef's.
-\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
-
-% Hyphenation fixes.
-\hyphenation{
-  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
-  ap-pen-dix bit-map bit-maps
-  data-base data-bases eshell fall-ing half-way long-est man-u-script
-  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
-  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
-  spell-ing spell-ings
-  stand-alone strong-est time-stamp time-stamps which-ever white-space
-  wide-spread wrap-around
-}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal.  We don't just call \tracingall here,
-% since that produces some useless output on the terminal.  We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
-  \tracingstats2
-  \tracingpages1
-  \tracinglostchars2  % 2 gives us more in etex
-  \tracingparagraphs1
-  \tracingoutput1
-  \tracingmacros2
-  \tracingrestores1
-  \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\undefined\else % etex gives us more logging
-    \tracingscantokens1
-    \tracingifs1
-    \tracinggroups1
-    \tracingnesting2
-    \tracingassigns1
-  \fi
-  \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines16
-}%
-
-% add check for \lastpenalty to plain's definitions.  If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
-  \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
-  \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
-  \removelastskip\penalty-200\bigskip\fi\fi}
-
-% For @cropmarks command.
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong  \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Output a mark which sets \thischapter, \thissection and \thiscolor.
-% We dump everything together because we only have one kind of mark.
-% This works because we only use \botmark / \topmark, not \firstmark.
-%
-% A mark contains a subexpression of the \ifcase ... \fi construct.
-% \get*marks macros below extract the needed part using \ifcase.
-%
-% Another complication is to let the user choose whether \thischapter
-% (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page.  The solution is
-% described on page 260 of The TeXbook.  It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after.  I won't pretend I can describe this better than DEK...
-\def\domark{%
-  \toks0=\expandafter{\lastchapterdefs}%
-  \toks2=\expandafter{\lastsectiondefs}%
-  \toks4=\expandafter{\prevchapterdefs}%
-  \toks6=\expandafter{\prevsectiondefs}%
-  \toks8=\expandafter{\lastcolordefs}%
-  \mark{%
-                   \the\toks0 \the\toks2
-      \noexpand\or \the\toks4 \the\toks6
-    \noexpand\else \the\toks8
-  }%
-}
-% \topmark doesn't work for the very first chapter (after the title
-% page or the contents), so we use \firstmark there -- this gets us
-% the mark with the chapter defs, unless the user sneaks in, e.g.,
-% @setcolor (or @url, or @link, etc.) between @contents and the very
-% first @chapter.
-\def\gettopheadingmarks{%
-  \ifcase0\topmark\fi
-  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
-}
-\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
-
-% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\prevchapterdefs{}
-\def\prevsectiondefs{}
-\def\lastcolordefs{}
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
-  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
-  %
-  \ifodd\pageno  \advance\hoffset by \bindingoffset
-  \else \advance\hoffset by -\bindingoffset\fi
-  %
-  % Do this outside of the \shipout so @code etc. will be expanded in
-  % the headline as they should be, not taken literally (outputting ''code).
-  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
-  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
-  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
-  %
-  {%
-    % Have to do this stuff outside the \shipout because we want it to
-    % take effect in \write's, yet the group defined by the \vbox ends
-    % before the \shipout runs.
-    %
-    \indexdummies         % don't expand commands in the output.
-    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
-               % the page break happens to be in the middle of an example.
-               % We don't want .vr (or whatever) entries like this:
-               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
-               % "\acronym" won't work when it's read back in;
-               % it needs to be 
-               % {\code {{\tt \backslashcurfont }acronym}
-    \shipout\vbox{%
-      % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
-      %
-      \ifcropmarks \vbox to \outervsize\bgroup
-        \hsize = \outerhsize
-        \vskip-\topandbottommargin
-        \vtop to0pt{%
-          \line{\ewtop\hfil\ewtop}%
-          \nointerlineskip
-          \line{%
-            \vbox{\moveleft\cornerthick\nstop}%
-            \hfill
-            \vbox{\moveright\cornerthick\nstop}%
-          }%
-          \vss}%
-        \vskip\topandbottommargin
-        \line\bgroup
-          \hfil % center the page within the outer (page) hsize.
-          \ifodd\pageno\hskip\bindingoffset\fi
-          \vbox\bgroup
-      \fi
-      %
-      \unvbox\headlinebox
-      \pagebody{#1}%
-      \ifdim\ht\footlinebox > 0pt
-        % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingyyy.)
-        % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 24pt
-        \unvbox\footlinebox
-      \fi
-      %
-      \ifcropmarks
-          \egroup % end of \vbox\bgroup
-        \hfil\egroup % end of (centering) \line\bgroup
-        \vskip\topandbottommargin plus1fill minus1fill
-        \boxmaxdepth = \cornerthick
-        \vbox to0pt{\vss
-          \line{%
-            \vbox{\moveleft\cornerthick\nsbot}%
-            \hfill
-            \vbox{\moveright\cornerthick\nsbot}%
-          }%
-          \nointerlineskip
-          \line{\ewbot\hfil\ewbot}%
-        }%
-      \egroup % \vbox from first cropmarks clause
-      \fi
-    }% end of \shipout\vbox
-  }% end of group with \indexdummies
-  \advancepageno
-  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
-  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1\relax \unvbox#1\relax
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks.  Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
-  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
-  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1.  The argument is the rest of
-% the input line (except we remove a trailing comment).  #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg{\parseargusing{}}
-\def\parseargusing#1#2{%
-  \def\argtorun{#2}%
-  \begingroup
-    \obeylines
-    \spaceisspace
-    #1%
-    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
-}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    \argremovecomment #1\comment\ArgTerm%
-  }%
-}
-
-% First remove any @comment, then any @c comment.
-\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-
-% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
-%
-% \argremovec might leave us with trailing space, e.g.,
-%    @end itemize  @c foo
-% This space token undergoes the same procedure and is eventually removed
-% by \finishparsearg.
-%
-\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
-\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
-\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
-  \def\temp{#3}%
-  \ifx\temp\empty
-    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
-    \let\temp\finishparsearg
-  \else
-    \let\temp\argcheckspaces
-  \fi
-  % Put the space token in:
-  \temp#1 #3\ArgTerm
-}
-
-% If a _delimited_ argument is enclosed in braces, they get stripped; so
-% to get _exactly_ the rest of the line, we had to prevent such situation.
-% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \argtorun.
-% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
-% either the null string, or it ends with \^^M---thus there is no danger
-% that a pair of braces would be stripped.
-%
-% But first, we have to remove the trailing space token.
-%
-\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
-
-% \parseargdef\foo{...}
-%      is roughly equivalent to
-% \def\foo{\parsearg\Xfoo}
-% \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick.  --kasal, 16nov03
-
-\def\parseargdef#1{%
-  \expandafter \doparseargdef \csname\string#1\endcsname #1%
-}
-\def\doparseargdef#1#2{%
-  \def#2{\parsearg#1}%
-  \def#1##1%
-}
-
-% Several utility definitions with active space:
-{
-  \obeyspaces
-  \gdef\obeyedspace{ }
-
-  % Make each space character in the input produce a normal interword
-  % space in the output.  Don't allow a line break at this space, as this
-  % is used only in environments like @example, where each line of input
-  % should produce a line of output anyway.
-  %
-  \gdef\sepspaces{\obeyspaces\let =\tie}
-
-  % 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 \ ).
-  \gdef\unsepspaces{\let =\space}
-}
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-% Define the framework for environments in texinfo.tex.  It's used like this:
-%
-%   \envdef\foo{...}
-%   \def\Efoo{...}
-%
-% It's the responsibility of \envdef to insert \begingroup before the
-% actual body; @end closes the group after calling \Efoo.  \envdef also
-% defines \thisenv, so the current environment is known; @end checks
-% whether the environment name matches.  The \checkenv macro can also be
-% used to check whether the current environment is the one expected.
-%
-% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as environments; they don't open a group.  (The
-% implementation of @end takes care not to call \endgroup in this
-% special case.)
-
-
-% At run-time, environments start with this:
-\def\startenvironment#1{\begingroup\def\thisenv{#1}}
-% initialize
-\let\thisenv\empty
-
-% ... but they get defined via ``\envdef\foo{...}'':
-\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
-\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
-
-% Check whether we're in the right environment:
-\def\checkenv#1{%
-  \def\temp{#1}%
-  \ifx\thisenv\temp
-  \else
-    \badenverr
-  \fi
-}
-
-% Environment mismatch, #1 expected:
-\def\badenverr{%
-  \errhelp = \EMsimple
-  \errmessage{This command can appear only \inenvironment\temp,
-    not \inenvironment\thisenv}%
-}
-\def\inenvironment#1{%
-  \ifx#1\empty
-    out of any environment%
-  \else
-    in environment \expandafter\string#1%
-  \fi
-}
-
-% @end foo executes the definition of \Efoo.
-% But first, it executes a specialized version of \checkenv
-%
-\parseargdef\end{%
-  \if 1\csname iscond.#1\endcsname
-  \else
-    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
-    \expandafter\checkenv\csname#1\endcsname
-    \csname E#1\endcsname
-    \endgroup
-  \fi
-}
-
-\newhelp\EMsimple{Press RETURN to continue.}
-
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @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 @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
-  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence.  (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
-  \kern-.15em
-  \TeX
-}
-
-% 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
-% at the beginning of a line will start with \penalty -- and
-% 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
- % 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\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @/ allows a line break.
-\let\/=\allowbreak
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=\endofsentencespacefactor\space}
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=\endofsentencespacefactor\space}
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=\endofsentencespacefactor\space}
-
-% @frenchspacing on|off  says whether to put extra space after punctuation.
-% 
-\def\onword{on}
-\def\offword{off}
-%
-\parseargdef\frenchspacing{%
-  \def\temp{#1}%
-  \ifx\temp\onword \plainfrenchspacing
-  \else\ifx\temp\offword \plainnonfrenchspacing
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
-  \fi\fi
-}
-
-% @w prevents a word break.  Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line.  According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0).  If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large.  This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material.  In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom.  The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\envdef\group{%
-  \ifnum\catcode`\^^M=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  \startsavinginserts
-  %
-  \setbox\groupbox = \vtop\bgroup
-    % Do @comment since we are called inside an environment such as
-    % @example, where each end-of-line in the input causes an
-    % end-of-line in the output.  We don't want the end-of-line after
-    % the `@group' to put extra space in the output.  Since @group
-    % should appear on a line by itself (according to the Texinfo
-    % manual), we don't worry about eating any user text.
-    \comment
-}
-%
-% The \vtop produces a box with normal height and large depth; thus, TeX puts
-% \baselineskip glue before it, and (when the next line of text is done)
-% \lineskip glue after it.  Thus, space below is not quite equal to space
-% above.  But it's pretty close.
-\def\Egroup{%
-    % To get correct interline space between the last line of the group
-    % and the first line afterwards, we have to propagate \prevdepth.
-    \endgraf % Not \par, as it may have been set to \lisppar.
-    \global\dimen1 = \prevdepth
-  \egroup           % End the \vtop.
-  % \dimen0 is the vertical size of the group's box.
-  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
-  % \dimen2 is how much space is left on the page (more or less).
-  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
-  % if the group doesn't fit on the current page, and it's a big big
-  % group, force a page break.
-  \ifdim \dimen0 > \dimen2
-    \ifdim \pagetotal < \vfilllimit\pageheight
-      \page
-    \fi
-  \fi
-  \box\groupbox
-  \prevdepth = \dimen1
-  \checkinserts
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil  \mil=0.001in
-
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\parseargdef\need{%
-  % Ensure vertical mode, so we don't make a big box in the middle of a
-  % paragraph.
-  \par
-  %
-  % If the @need value is less than one line space, it's useless.
-  \dimen0 = #1\mil
-  \dimen2 = \ht\strutbox
-  \advance\dimen2 by \dp\strutbox
-  \ifdim\dimen0 > \dimen2
-    %
-    % Do a \strut just to make the height of this box be normal, so the
-    % normal leading is inserted relative to the preceding line.
-    % And a page break here is fine.
-    \vtop to #1\mil{\strut\vfil}%
-    %
-    % TeX does not even consider page breaks if a penalty added to the
-    % main vertical list is 10000 or more.  But in order to see if the
-    % empty box we just added fits on the page, we must make it consider
-    % page breaks.  On the other hand, we don't want to actually break the
-    % page after the empty box.  So we use a penalty of 9999.
-    %
-    % There is an extremely small chance that TeX will actually break the
-    % page at this \penalty, if there are no other feasible breakpoints in
-    % sight.  (If the user is using lots of big @group commands, which
-    % almost-but-not-quite fill up a page, TeX will have a hard time doing
-    % good page breaking, for example.)  However, I could not construct an
-    % example where a page broke at this \penalty; if it happens in a real
-    % document, then we can reconsider our strategy.
-    \penalty9999
-    %
-    % Back up by the size of the box, whether we did a page break or not.
-    \kern -#1\mil
-    %
-    % Do not allow a page break right after this kern.
-    \nobreak
-  \fi
-}
-
-% @br   forces paragraph break (and is undocumented).
-
-\let\br = \par
-
-% @page forces the start of a new page.
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
-
-% This defn is used inside nofill environments such as @example.
-\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
-  \leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
-  \nobreak
-  \kern-\strutdepth
-  \vtop to \strutdepth{%
-    \baselineskip=\strutdepth
-    \vss
-    % if you have multiple lines of stuff to put here, you'll need to
-    % make the vbox yourself of the appropriate size.
-    \ifx#1l%
-      \llap{\ignorespaces #2\hskip\inmarginspacing}%
-    \else
-      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
-    \fi
-    \null
-  }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
-  \setbox0 = \hbox{\ignorespaces #2}%
-  \ifdim\wd0 > 0pt
-    \def\lefttext{#1}%  have both texts
-    \def\righttext{#2}%
-  \else
-    \def\lefttext{#1}%  have only one text
-    \def\righttext{#1}%
-  \fi
-  %
-  \ifodd\pageno
-    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
-  \else
-    \def\temp{\inleftmargin\lefttext}%
-  \fi
-  \temp
-}
-
-% @include FILE -- \input text of FILE.
-%
-\def\include{\parseargusing\filenamecatcodes\includezzz}
-\def\includezzz#1{%
-  \pushthisfilestack
-  \def\thisfile{#1}%
-  {%
-    \makevalueexpandable  % we want to expand any @value in FILE.
-    \turnoffactive        % and allow special characters in the expansion
-    \indexnofonts         % Allow `@@' and other weird things in file names.
-    \edef\temp{\noexpand\input #1 }%
-    %
-    % This trickery is to read FILE outside of a group, in case it makes
-    % definitions, etc.
-    \expandafter
-  }\temp
-  \popthisfilestack
-}
-\def\filenamecatcodes{%
-  \catcode`\\=\other
-  \catcode`~=\other
-  \catcode`^=\other
-  \catcode`_=\other
-  \catcode`|=\other
-  \catcode`<=\other
-  \catcode`>=\other
-  \catcode`+=\other
-  \catcode`-=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
-}
-
-\def\pushthisfilestack{%
-  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-}
-\def\pushthisfilestackX{%
-  \expandafter\pushthisfilestackY\thisfile\StackTerm
-}
-\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
-  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
-}
-
-\def\popthisfilestack{\errthisfilestackempty}
-\def\errthisfilestackempty{\errmessage{Internal error:
-  the stack of filenames is empty.}}
-
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\parseargdef\center{%
-  \ifhmode
-    \let\next\centerH
-  \else
-    \let\next\centerV
-  \fi
-  \next{\hfil \ignorespaces#1\unskip \hfil}%
-}
-\def\centerH#1{%
-  {%
-    \hfil\break
-    \advance\hsize by -\leftskip
-    \advance\hsize by -\rightskip
-    \line{#1}%
-    \break
-  }%
-}
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
-
-% @sp n   outputs n lines of vertical space
-
-\parseargdef\sp{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore  is another way to write a comment
-
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% NCHARS can also be the word `asis' or `none'.
-% We cannot feasibly implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\parseargdef\paragraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \defaultparindent = 0pt
-    \else
-      \defaultparindent = #1em
-    \fi
-  \fi
-  \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\parseargdef\exampleindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \lispnarrowing = 0pt
-    \else
-      \lispnarrowing = #1em
-    \fi
-  \fi
-}
-
-% @firstparagraphindent WORD
-% If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading.  If WORD is `insert', then do indent at such
-% paragraphs.
-%
-% The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.
-% We switch the definition of this back and forth according to WORD.
-% By default, we suppress indentation.
-%
-\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\def\insertword{insert}
-%
-\parseargdef\firstparagraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\noneword
-    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
-  \else\ifx\temp\insertword
-    \let\suppressfirstparagraphindent = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @firstparagraphindent option `\temp'}%
-  \fi\fi
-}
-
-% Here is how we actually suppress indentation.  Redefine \everypar to
-% \kern backwards by \parindent, and then reset itself to empty.
-%
-% We also make \indent itself not actually do anything until the next
-% paragraph.
-%
-\gdef\dosuppressfirstparagraphindent{%
-  \gdef\indent{%
-    \restorefirstparagraphindent
-    \indent
-  }%
-  \gdef\noindent{%
-    \restorefirstparagraphindent
-    \noindent
-  }%
-  \global\everypar = {%
-    \kern -\parindent
-    \restorefirstparagraphindent
-  }%
-}
-
-\gdef\restorefirstparagraphindent{%
-  \global \let \indent = \ptexindent
-  \global \let \noindent = \ptexnoindent
-  \global \everypar = {}%
-}
-
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \catcode`' = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-    \let' = \ptexquoteright
-  }
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em.  So do
-% whichever is larger.
-%
-\def\dots{%
-  \leavevmode
-  \setbox0=\hbox{...}% get width of three periods
-  \ifdim\wd0 > 1.5em
-    \dimen0 = \wd0
-  \else
-    \dimen0 = 1.5em
-  \fi
-  \hbox to \dimen0{%
-    \hskip 0pt plus.25fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \iflinks
-     \tryauxfile
-     % Open the new aux file.  TeX will close it automatically at exit.
-     \immediate\openout\auxfile=\jobname.aux
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   \openin 1 texinfo.cnf
-   \ifeof 1 \else \input texinfo.cnf \fi
-   \closein 1
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
-\else
-  \ifx\pdfoutput\relax
-  \else
-    \ifcase\pdfoutput
-    \else
-      \pdftrue
-    \fi
-  \fi
-\fi
-
-% PDF uses PostScript string constants for the names of xref targets,
-% for display in the outlines, and in other places.  Thus, we have to
-% double any backslashes.  Otherwise, a name like "\node" will be
-% interpreted as a newline (\n), followed by o, d, e.  Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
-% 
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslashdouble{%
-   @catcode`@\=@active
-   @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters.  hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, with minor
-% changes for Texinfo.  It is included here under the GPL by permission
-% from the author, Heiko Oberdiek.
-% 
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-% 
-\def\HyPsdSubst#1#2#3{%
-  \def\HyPsdReplace##1#1##2\END{%
-    ##1%
-    \ifx\\##2\\%
-    \else
-      #2%
-      \HyReturnAfterFi{%
-        \HyPsdReplace##2\END
-      }%
-    \fi
-  }%
-  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
-  \xdef#1{#1}% redefine it as its expansion; the definition is simply
-             % \lastnode when called from \setref -> \pdfmkdest.
-  \HyPsdSubst{(}{\realbackslash(}{#1}%
-  \HyPsdSubst{)}{\realbackslash)}{#1}%
-}
-
-\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
-with PDF output, and none of those formats could be found.  (.eps cannot
-be supported due to the design of the PDF format; use regular TeX (DVI
-output) for that.)}
-
-\ifpdf
-  %
-  % Color manipulation macros based on pdfcolor.tex.
-  \def\cmykDarkRed{0.28 1 1 0.35}
-  \def\cmykBlack{0 0 0 1}
-  %
-  % k sets the color for filling (usual text, etc.);
-  % K sets the color for stroking (thin rules, e.g., normal _'s).
-  \def\pdfsetcolor#1{\pdfliteral{#1 k  #1 K}}
-  %
-  % Set color, and create a mark which defines \thiscolor accordingly,
-  % so that \makeheadline knows which color to restore.
-  \def\setcolor#1{%
-    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
-    \domark
-    \pdfsetcolor{#1}%
-  }
-  %
-  \def\maincolor{\cmykBlack}
-  \pdfsetcolor{\maincolor}
-  \edef\thiscolor{\maincolor}
-  \def\lastcolordefs{}
-  %
-  \def\makefootline{%
-    \baselineskip24pt
-    \line{\pdfsetcolor{\maincolor}\the\footline}%
-  }
-  %
-  \def\makeheadline{%
-    \vbox to 0pt{%
-      \vskip-22.5pt
-      \line{%
-        \vbox to8.5pt{}%
-        % Extract \thiscolor definition from the marks.
-        \getcolormarks
-        % Typeset the headline with \maincolor, then restore the color.
-        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
-      }%
-      \vss
-    }%
-    \nointerlineskip
-  }
-  %
-  %
-  \pdfcatalog{/PageMode /UseOutlines}
-  %
-  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
-  \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
-    %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
-    \let\pdfimgext=\empty
-    \begingroup
-      \openin 1 #1.png \ifeof 1
-        \openin 1 #1.jpg \ifeof 1
-          \openin 1 #1.jpeg \ifeof 1
-            \openin 1 #1.JPG \ifeof 1
-              \openin 1 #1.pdf \ifeof 1
-                \openin 1 #1.PDF \ifeof 1
-                  \errhelp = \nopdfimagehelp
-                  \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
-                \fi
-              \else \gdef\pdfimgext{pdf}%
-              \fi
-            \else \gdef\pdfimgext{JPG}%
-            \fi
-          \else \gdef\pdfimgext{jpeg}%
-          \fi
-        \else \gdef\pdfimgext{jpg}%
-        \fi
-      \else \gdef\pdfimgext{png}%
-      \fi
-      \closein 1
-    \endgroup
-    %
-    % without \immediate, ancient pdftex seg faults when the same image is
-    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
-    \ifnum\pdftexversion < 14
-      \immediate\pdfimage
-    \else
-      \immediate\pdfximage
-    \fi
-      \ifdim \wd0 >0pt width \imagewidth \fi
-      \ifdim \wd2 >0pt height \imageheight \fi
-      \ifnum\pdftexversion<13
-         #1.\pdfimgext
-       \else
-         {#1.\pdfimgext}%
-       \fi
-    \ifnum\pdftexversion < 14 \else
-      \pdfrefximage \pdflastximage
-    \fi}
-  %
-  \def\pdfmkdest#1{{%
-    % We have to set dummies so commands such as @code, and characters
-    % such as \, aren't expanded when present in a section title.
-    \indexnofonts
-    \turnoffactive
-    \activebackslashdouble
-    \makevalueexpandable
-    \def\pdfdestname{#1}%
-    \backslashparens\pdfdestname
-    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
-  }}
-  %
-  % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}
-  %
-  % by default, use a color that is dark enough to print on paper as
-  % nearly black, but still distinguishable for online viewing.
-  \def\urlcolor{\cmykDarkRed}
-  \def\linkcolor{\cmykDarkRed}
-  \def\endlink{\setcolor{\maincolor}\pdfendlink}
-  %
-  % Adding outlines to PDF; macros for calculating structure of outlines
-  % come from Petr Olsak
-  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
-    \else \csname#1\endcsname \fi}
-  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
-    \advance\tempnum by 1
-    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  %
-  % #1 is the section text, which is what will be displayed in the
-  % outline by the pdf viewer.  #2 is the pdf expression for the number
-  % of subentries (or empty, for subsubsections).  #3 is the node text,
-  % which might be empty if this toc entry had no corresponding node.
-  % #4 is the page number
-  %
-  \def\dopdfoutline#1#2#3#4{%
-    % Generate a link to the node text if that exists; else, use the
-    % page number.  We could generate a destination for the section
-    % text in the case where a section has no node, but it doesn't
-    % seem worth the trouble, since most documents are normally structured.
-    \def\pdfoutlinedest{#3}%
-    \ifx\pdfoutlinedest\empty
-      \def\pdfoutlinedest{#4}%
-    \else
-      % Doubled backslashes in the name.
-      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
-       \backslashparens\pdfoutlinedest}%
-    \fi
-    %
-    % Also double the backslashes in the display string.
-    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
-     \backslashparens\pdfoutlinetext}%
-    %
-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
-  }
-  %
-  \def\pdfmakeoutlines{%
-    \begingroup
-      % Thanh's hack / proper braces in bookmarks
-      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-      %
-      % Read toc silently, to get counts of subentries for \pdfoutline.
-      \def\numchapentry##1##2##3##4{%
-       \def\thischapnum{##2}%
-       \def\thissecnum{0}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsecentry##1##2##3##4{%
-       \advancenumber{chap\thischapnum}%
-       \def\thissecnum{##2}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsubsecentry##1##2##3##4{%
-       \advancenumber{sec\thissecnum}%
-       \def\thissubsecnum{##2}%
-      }%
-      \def\numsubsubsecentry##1##2##3##4{%
-       \advancenumber{subsec\thissubsecnum}%
-      }%
-      \def\thischapnum{0}%
-      \def\thissecnum{0}%
-      \def\thissubsecnum{0}%
-      %
-      % use \def rather than \let here because we redefine \chapentry et
-      % al. a second time, below.
-      \def\appentry{\numchapentry}%
-      \def\appsecentry{\numsecentry}%
-      \def\appsubsecentry{\numsubsecentry}%
-      \def\appsubsubsecentry{\numsubsubsecentry}%
-      \def\unnchapentry{\numchapentry}%
-      \def\unnsecentry{\numsecentry}%
-      \def\unnsubsecentry{\numsubsecentry}%
-      \def\unnsubsubsecentry{\numsubsubsecentry}%
-      \readdatafile{toc}%
-      %
-      % Read toc second time, this time actually producing the outlines.
-      % The `-' means take the \expnumber as the absolute number of
-      % subentries, which we calculated on our first read of the .toc above.
-      %
-      % We use the node names as the destinations.
-      \def\numchapentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
-      \def\numsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
-      \def\numsubsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
-      \def\numsubsubsecentry##1##2##3##4{% count is always zero
-        \dopdfoutline{##1}{}{##3}{##4}}%
-      %
-      % PDF outlines are displayed using system fonts, instead of
-      % document fonts.  Therefore we cannot use special characters,
-      % since the encoding is unknown.  For example, the eogonek from
-      % Latin 2 (0xea) gets translated to a | character.  Info from
-      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
-      %
-      % xx to do this right, we have to translate 8-bit characters to
-      % their "best" equivalent, based on the @documentencoding.  Right
-      % now, I guess we'll just let the pdf reader have its way.
-      \indexnofonts
-      \setupdatafile
-      \catcode`\\=\active \otherbackslash
-      \input \tocreadfilename
-    \endgroup
-  }
-  %
-  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
-    \ifx\PP\D\let\nextsp\relax
-    \else\let\nextsp\skipspaces
-      \ifx\p\space\else\addtokens{\filename}{\PP}%
-        \advance\filenamelength by 1
-      \fi
-    \fi
-    \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
-  \ifnum\pdftexversion < 14
-    \let \startlink \pdfannotlink
-  \else
-    \let \startlink \pdfstartlink
-  \fi
-  % make a live url in pdf output.
-  \def\pdfurl#1{%
-    \begingroup
-      % it seems we really need yet another set of dummies; have not
-      % tried to figure out what each command should do in the context
-      % of @url.  for now, just make @/ a no-op, that's the only one
-      % people have actually reported a problem with.
-      % 
-      \normalturnoffactive
-      \def\@{@}%
-      \let\/=\empty
-      \makevalueexpandable
-      % do we want to go so far as to use \indexnofonts instead of just
-      % special-casing \var here?
-      \def\var##1{##1}%
-      %
-      \leavevmode\setcolor{\urlcolor}%
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-    \endgroup}
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
-  \def\pdflink#1{%
-    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
-    \setcolor{\linkcolor}#1\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\else
-  % non-pdf mode
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\setcolor = \gobble
-  \let\pdfsetcolor = \gobble
-  \let\pdfmakeoutlines = \relax
-\fi  % \ifx\pdfoutput
-
-
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
-  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
-  \csname ten#1\endcsname  % change the current font
-}
-
-% Select #1 fonts with the current style.
-%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold.  Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
-
-% Default leading.
-\newdimen\textleading  \textleading = 13.2pt
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly.  There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-% can get a sort of poor man's double spacing by redefining this.
-\def\baselinefactor{1}
-%
-\def\setleading#1{%
-  \dimen0 = #1\relax
-  \normalbaselineskip = \baselinefactor\dimen0
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% PDF CMaps.  See also LaTeX's t1.cmap.
-%
-% do nothing with this by default.
-\expandafter\let\csname cmapOT1\endcsname\gobble
-\expandafter\let\csname cmapOT1IT\endcsname\gobble
-\expandafter\let\csname cmapOT1TT\endcsname\gobble
-
-% if we are producing pdf, and we have \pdffontattr, then define cmaps.
-% (\pdffontattr was introduced many years ago, but people still run
-% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1-0)
-%%Title: (TeX-OT1-0 TeX OT1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1)
-/Supplement 0
->> def
-/CMapName /TeX-OT1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<23> <26> <0023>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-40 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1IT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1IT-0)
-%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1IT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1IT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<25> <26> <0025>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-42 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<23> <0023>
-<24> <00A3>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1TT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1TT-0)
-%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1TT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1TT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-5 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-endbfrange
-32 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <2191>
-<0C> <2193>
-<0D> <0027>
-<0E> <00A1>
-<0F> <00BF>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-\fi\fi
-
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
-% empty to omit).
-\def\setfont#1#2#3#4#5{%
-  \font#1=\fontprefix#2#3 scaled #4
-  \csname cmap#5\endcsname#1%
-}
-% This is what gets called when #5 of \setfont is empty.
-\let\cmap\gobble
-% emacs-page end of cmaps
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\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}
-
-% Definitions for a main text size of 11pt.  This is the default in
-% Texinfo.
-% 
-\def\definetextfontsizexi{%
-% Text fonts (11.2pt, magstep1).
-\def\textnominalsize{11pt}
-\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1095}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}{OT1}
-\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
-\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
-\setfont\chapsf\sfbshape{17}{1000}{OT1}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-\def\chapecsize{1728}
-
-% Section fonts (14.4pt).
-\def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
-\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep2}{OT1}
-\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}{OT1}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-\def\sececsize{1440}
-
-% Subsection fonts (13.15pt).
-\def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
-\setfont\ssecit\itbshape{10}{1315}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1315}{OT1}
-\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}{OT1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-\def\ssececsize{1200}
-
-% Reduced fonts for @acro in text (10pt).
-\def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}{OT1}
-\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{1000}{OT1}
-\setfont\reducedit\itshape{10}{1000}{OT1IT}
-\setfont\reducedsl\slshape{10}{1000}{OT1}
-\setfont\reducedsf\sfshape{10}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{1000}{OT1}
-\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
-\font\reducedi=cmmi10
-\font\reducedsy=cmsy10
-\def\reducedecsize{1000}
-
-% reset the current fonts
-\textfonts
-\rm
-} % end of 11pt text font size definitions
-
-
-% Definitions to make the main text be 10pt Computer Modern, with
-% section, chapter, etc., sizes following suit.  This is for the GNU
-% Press printing of the Emacs 22 manual.  Maybe other manuals in the
-% future.  Used with @smallbook, which sets the leading to 12pt.
-% 
-\def\definetextfontsizex{%
-% Text fonts (10pt).
-\def\textnominalsize{10pt}
-\edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1000}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
-\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter fonts (14.4pt).
-\def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
-\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
-\let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
-\font\chapi=cmmi12 scaled \magstep1
-\font\chapsy=cmsy10 scaled \magstep2
-\def\chapecsize{1440}
-
-% Section fonts (12pt).
-\def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}{OT1}
-\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep1}{OT1}
-\setfont\sectt\ttbshape{12}{1000}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
-\setfont\secsf\sfbshape{12}{1000}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}{OT1}
-\font\seci=cmmi12 
-\font\secsy=cmsy10 scaled \magstep1
-\def\sececsize{1200}
-
-% Subsection fonts (10pt).
-\def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}{OT1}
-\setfont\ssecit\itbshape{10}{1000}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1000}{OT1}
-\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
-\setfont\ssecsf\sfbshape{10}{1000}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}{OT1}
-\font\sseci=cmmi10
-\font\ssecsy=cmsy10
-\def\ssececsize{1000}
-
-% Reduced fonts for @acro in text (9pt).
-\def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}{OT1}
-\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{900}{OT1}
-\setfont\reducedit\itshape{9}{1000}{OT1IT}
-\setfont\reducedsl\slshape{9}{1000}{OT1}
-\setfont\reducedsf\sfshape{9}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{900}{OT1}
-\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
-\font\reducedi=cmmi9
-\font\reducedsy=cmsy9
-\def\reducedecsize{0900}
-
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
-\rm
-} % end of 10pt text font size definitions
-
-
-% We provide the user-level command
-%   @fonttextsize 10
-% (or 11) to redefine the text font size.  pt is assumed.
-% 
-\def\xword{10}
-\def\xiword{11}
-%
-\parseargdef\fonttextsize{%
-  \def\textsizearg{#1}%
-  \wlog{doing @fonttextsize \textsizearg}%
-  %
-  % Set \globaldefs so that documents can use this inside @tex, since
-  % makeinfo 4.8 does not support it, but we need it nonetheless.
-  % 
- \begingroup \globaldefs=1
-  \ifx\textsizearg\xword \definetextfontsizex
-  \else \ifx\textsizearg\xiword \definetextfontsizexi
-  \else
-    \errhelp=\EMsimple
-    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
-  \fi\fi
- \endgroup
-}
-
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families.  Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
-  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
-  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
-  \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE.  We do this because \STYLE needs to also set the
-% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
-%
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower).  These relative commands are used in
-% the LaTeX logo and acronyms.
-%
-% This all needs generalizing, badly.
-%
-\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\tenttsl=\textttsl
-  \def\curfontsize{text}%
-  \def\lsize{reduced}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
-  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
-  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
-  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
-  \let\tenttsl=\titlettsl
-  \def\curfontsize{title}%
-  \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rmisbold #1}}
-\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
-  \let\tenttsl=\chapttsl
-  \def\curfontsize{chap}%
-  \def\lsize{sec}\def\lllsize{text}%
-  \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
-  \let\tenttsl=\secttsl
-  \def\curfontsize{sec}%
-  \def\lsize{subsec}\def\lllsize{reduced}%
-  \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
-  \let\tenttsl=\ssecttsl
-  \def\curfontsize{ssec}%
-  \def\lsize{text}\def\lllsize{small}%
-  \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts
-\def\reducedfonts{%
-  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
-  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
-  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
-  \let\tenttsl=\reducedttsl
-  \def\curfontsize{reduced}%
-  \def\lsize{small}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallfonts{%
-  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
-  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
-  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
-  \let\tenttsl=\smallttsl
-  \def\curfontsize{small}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
-  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
-  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
-  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
-  \let\tenttsl=\smallerttsl
-  \def\curfontsize{smaller}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{9.5pt}}
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
-
-% Define these just so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-%   8.5x11=86   smallbook=72  a4=90  a5=69
-% If we use \scriptfonts (8pt), then we can fit this many characters:
-%   8.5x11=90+  smallbook=80  a4=90+  a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt.  So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-%   8.5x11=71  smallbook=60  a4=75  a5=58
-% --karl, 24jan03.
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\definetextfontsizexi
-
-
-\message{markup,}
-
-% 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 }
-
-% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
-% define and register \INITMACRO to be called on markup style changes.
-% \INITMACRO can check \currentmarkupstyle for the innermost
-% style and the set of \ifmarkupSTYLE switches for all styles
-% currently in effect.
-\newif\ifmarkupvar
-\newif\ifmarkupsamp
-\newif\ifmarkupkey
-%\newif\ifmarkupfile % @file == @samp.
-%\newif\ifmarkupoption % @option == @samp.
-\newif\ifmarkupcode
-\newif\ifmarkupkbd
-%\newif\ifmarkupenv % @env == @code.
-%\newif\ifmarkupcommand % @command == @code.
-\newif\ifmarkuptex % @tex (and part of @math, for now).
-\newif\ifmarkupexample
-\newif\ifmarkupverb
-\newif\ifmarkupverbatim
-
-\let\currentmarkupstyle\empty
-
-\def\setupmarkupstyle#1{%
-  \csname markup#1true\endcsname
-  \def\currentmarkupstyle{#1}%
-  \markupstylesetup
-}
-
-\let\markupstylesetup\empty
-
-\def\defmarkupstylesetup#1{%
-  \expandafter\def\expandafter\markupstylesetup
-    \expandafter{\markupstylesetup #1}%
-  \def#1%
-}
-
-% Markup style setup for left and right quotes.
-\defmarkupstylesetup\markupsetuplq{%
-  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
-}
-
-\defmarkupstylesetup\markupsetuprq{%
-  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
-}
-
-{
-\catcode`\'=\active
-\catcode`\`=\active
-
-\gdef\markupsetuplqdefault{\let`\lq}
-\gdef\markupsetuprqdefault{\let'\rq}
-
-\gdef\markupsetcodequoteleft{\let`\codequoteleft}
-\gdef\markupsetcodequoteright{\let'\codequoteright}
-
-\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
-}
-
-\let\markupsetuplqcode \markupsetcodequoteleft
-\let\markupsetuprqcode \markupsetcodequoteright
-\let\markupsetuplqexample \markupsetcodequoteleft
-\let\markupsetuprqexample \markupsetcodequoteright
-\let\markupsetuplqverb \markupsetcodequoteleft
-\let\markupsetuprqverb \markupsetcodequoteright
-\let\markupsetuplqverbatim \markupsetcodequoteleft
-\let\markupsetuprqverbatim \markupsetcodequoteright
-
-\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
-\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report.  xpdf does work with the
-% regular 0x27.  
-% 
-\def\codequoteright{%
-  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
-    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
-      '%
-    \else \char'15 \fi
-  \else \char'15 \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-% 
-\def\codequoteleft{%
-  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
-    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
-      % [Knuth] pp. 380,381,391
-      % \relax disables Spanish ligatures ?` and !` of \tt font.
-      \relax`%
-    \else \char'22 \fi
-  \else \char'22 \fi
-}
-
-% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
-\def\noligaturesquoteleft{\relax\lq}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
-                    \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally uses \ttsl.
-% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
-
-% @cite is like \smartslanted except unconditionally use \sl.  We never want
-% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\slanted=\smartslanted
-\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}}              % roman font
-\def\sc#1{{\smallcaps#1}}       % smallcaps font
-\def\ii#1{{\it #1}}             % italic font
-
-% @b, explicit bold.  Also @strong.
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% @sansserif, explicit sans.
-\def\sansserif#1{{\sf #1}}
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph.  Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
-  \def\plainfrenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
-    \def\endofsentencespacefactor{1000}% for @. and friends
-  }
-  \def\plainnonfrenchspacing{%
-    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
-    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
-    \def\endofsentencespacefactor{3000}% for @. and friends
-  }
-\catcode`@=\other
-\def\endofsentencespacefactor{3000}% default
-
-% @t, explicit typewriter.
-\def\t#1{%
-  {\tt \rawbackslash \plainfrenchspacing #1}%
-  \null
-}
-
-% @samp.
-\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-
-% definition of @key that produces a lozenge.  Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-%    \vbox{\hrule\kern-0.4pt
-%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-%    \kern-0.4pt\hrule}%
-%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge.  If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle.  But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
-  \nohyphenation
-  \ifmonospace\else\tt\fi
-  #1}\null}
-
-% ctrl is no longer a Texinfo command.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
-  {%
-    % Change normal interword space to be same as for the current font.
-    \spaceskip = \fontdimen2\font
-    %
-    % Switch to typewriter.
-    \tt
-    %
-    % But `\ ' produces the large typewriter interword space.
-    \def\ {{\spaceskip = 0pt{} }}%
-    %
-    % Turn off hyphenation.
-    \nohyphenation
-    %
-    \rawbackslash
-    \plainfrenchspacing
-    #1%
-  }%
-  \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in @code.
-% 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 at a dash.
-%  -- rms.
-{
-  \catcode`\-=\active \catcode`\_=\active
-  \catcode`\'=\active \catcode`\`=\active
-  \global\let'=\rq \global\let`=\lq  % default definitions
-  %
-  \global\def\code{\begingroup
-    \setupmarkupstyle{code}%
-    % The following should really be moved into \setupmarkupstyle handlers.
-    \catcode\dashChar=\active  \catcode\underChar=\active
-    \ifallowcodebreaks
-     \let-\codedash
-     \let_\codeunder
-    \else
-     \let-\realdash
-     \let_\realunder
-    \fi
-    \codex
-  }
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{%
-  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
-  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
-  % will therefore expand the active definition of _, which is us
-  % (inside @code that is), therefore an endless loop.
-  \ifusingtt{\ifmmode
-               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
-             \else\normalunderscore \fi
-             \discretionary{}{}{}}%
-            {\_}%
-}
-\def\codex #1{\tclose{#1}\endgroup}
-
-% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general.  @allowcodebreaks provides a way to control this.
-% 
-\newif\ifallowcodebreaks  \allowcodebreakstrue
-
-\def\keywordtrue{true}
-\def\keywordfalse{false}
-
-\parseargdef\allowcodebreaks{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\keywordtrue
-    \allowcodebreakstrue
-  \else\ifx\txiarg\keywordfalse
-    \allowcodebreaksfalse
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
-  \fi\fi
-}
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-%   `example' (@kbd uses ttsl only inside of @example and friends),
-%   or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\txiarg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\txiarg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-\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{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
-\let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow   (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
-  \unsepspaces
-  \pdfurl{#1}%
-  \setbox0 = \hbox{\ignorespaces #3}%
-  \ifdim\wd0 > 0pt
-    \unhbox0 % third arg given, show only that
-  \else
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0 > 0pt
-      \ifpdf
-        \unhbox0             % PDF: 2nd arg given, show only it
-      \else
-        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
-      \fi
-    \else
-      \code{#1}% only url given, so show it
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% @url synonym for @uref, since that's how everyone uses it.
-%
-\let\url=\uref
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
-  \def\email#1{\doemail#1,,\finish}
-  \def\doemail#1,#2,#3\finish{\begingroup
-    \unsepspaces
-    \pdfurl{mailto:#1}%
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
-    \endlink
-  \endgroup}
-\else
-  \let\email=\uref
-\fi
-
-% 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 @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-% @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}
-
-% @acronym for "FBI", "NATO", and the like.
-% We print this one point size smaller, since it's intended for
-% all-uppercase.
-% 
-\def\acronym#1{\doacronym #1,,\finish}
-\def\doacronym#1,#2,#3\finish{%
-  {\selectfonts\lsize #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-}
-
-% @abbr for "Comput. J." and the like.
-% No font change, but don't do end-of-sentence spacing.
-% 
-\def\abbr#1{\doabbr #1,,\finish}
-\def\doabbr#1,#2,#3\finish{%
-  {\plainfrenchspacing #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-}
-
-
-\message{glyphs,}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, they should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
-\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
-   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
-   \advance\hsize by -2\dimen2 % Rules.
-   \vbox{%
-      \hrule height\dimen2
-      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
-         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
-         \kern3pt\vrule width\dimen2}% Space to right.
-      \hrule height\dimen2}
-    \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
-%
-\def\pounds{{\it\$}}
-
-% @euro{} comes from a separate font, depending on the current style.
-% We use the free feym* fonts from the eurosym package by Henrik
-% Theiling, which support regular, slanted, bold and bold slanted (and
-% "outlined" (blackboard board, sort of) versions, which we don't need).
-% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-% 
-% Although only regular is the truly official Euro symbol, we ignore
-% that.  The Euro is designed to be slightly taller than the regular
-% font height.
-% 
-% feymr - regular
-% feymo - slanted
-% feybr - bold
-% feybo - bold slanted
-% 
-% There is no good (free) typewriter version, to my knowledge.
-% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
-% Hmm.
-% 
-% Also doesn't work in math.  Do we need to do math with euro symbols?
-% Hope not.
-% 
-% 
-\def\euro{{\eurofont e}}
-\def\eurofont{%
-  % We set the font at each command, rather than predefining it in
-  % \textfonts and the other font-switching commands, so that
-  % installations which never need the symbol don't have to have the
-  % font installed.
-  % 
-  % There is only one designed size (nominal 10pt), so we always scale
-  % that to the current nominal size.
-  % 
-  % By the way, simply using "at 1em" works for cmr10 and the like, but
-  % does not work for cmbx10 and other extended/shrunken fonts.
-  % 
-  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
-  %
-  \ifx\curfontstyle\bfstylename 
-    % bold:
-    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
-  \else 
-    % regular:
-    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
-  \fi
-  \thiseurofont
-}
-
-% Hacks for glyphs from the EC fonts similar to \euro.  We don't
-% use \let for the aliases, because sometimes we redefine the original
-% macro, and the alias should reflect the redefinition.
-\def\guillemetleft{{\ecfont \char"13}}
-\def\guillemotleft{\guillemetleft}
-\def\guillemetright{{\ecfont \char"14}}
-\def\guillemotright{\guillemetright}
-\def\guilsinglleft{{\ecfont \char"0E}}
-\def\guilsinglright{{\ecfont \char"0F}}
-\def\quotedblbase{{\ecfont \char"12}}
-\def\quotesinglbase{{\ecfont \char"0D}}
-%
-% This positioning is not perfect (see the ogonek LaTeX package), but
-% we have the precomposed glyphs for the most common cases.  We put the
-% tests to use those glyphs in the single \ogonek macro so we have fewer
-% dummy definitions to worry about for index entries, etc.
-% 
-% ogonek is also used with other letters in Lithuanian (IOU), but using
-% the precomposed glyphs for those is not so easy since they aren't in
-% the same EC font.
-\def\ogonek#1{{%
-  \def\temp{#1}%
-  \ifx\temp\macrocharA\Aogonek
-  \else\ifx\temp\macrochara\aogonek
-  \else\ifx\temp\macrocharE\Eogonek
-  \else\ifx\temp\macrochare\eogonek
-  \else
-    \ecfont \setbox0=\hbox{#1}%
-    \ifdim\ht0=1ex\accent"0C #1%
-    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
-    \fi
-  \fi\fi\fi\fi
-  }%
-}
-\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
-\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
-\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
-\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
-%
-\def\ecfont{%
-  % We can't distinguish serif/sans and italic/slanted, but this
-  % is used for crude hacks anyway (like adding French and German
-  % quotes to documents typeset with CM, where we lose kerning), so
-  % hopefully nobody will notice/care.
-  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
-  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifx\curfontstyle\bfstylename
-    % bold:
-    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
-  \else
-    % regular:
-    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
-  \fi
-  \thisecfont
-}
-
-% @registeredsymbol - R in a circle.  The font for the R should really
-% be smaller yet, but lllsize is the best we can do for now.
-% Adapted from the plain.tex definition of \copyright.
-%
-\def\registeredsymbol{%
-  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
-               \hfil\crcr\Orb}}%
-    }$%
-}
-
-% @textdegree - the normal degrees sign.
-%
-\def\textdegree{$^\circ$}
-
-% Laurent Siebenmann reports \Orb undefined with:
-%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
-% so we'll define it if necessary.
-% 
-\ifx\Orb\undefined
-\def\Orb{\mathhexbox20D}
-\fi
-
-% Quotes.
-\chardef\quotedblleft="5C
-\chardef\quotedblright=`\"
-\chardef\quoteleft=`\`
-\chardef\quoteright=`\'
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page.  Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-        \endgroup\page\hbox{}\page}
-
-\envdef\titlepage{%
-  % Open one extra group, as we want to close it in the middle of \Etitlepage.
-  \begingroup
-    \parindent=0pt \textfonts
-    % Leave some space at the very top of the page.
-    \vglue\titlepagetopglue
-    % No rule at page bottom unless we print one at the top with @title.
-    \finishedtitlepagetrue
-    %
-    % Most title ``pages'' are actually two pages long, with space
-    % at the top of the second.  We don't want the ragged left on the second.
-    \let\oldpage = \page
-    \def\page{%
-      \iffinishedtitlepage\else
-        \finishtitlepage
-      \fi
-      \let\page = \oldpage
-      \page
-      \null
-    }%
-}
-
-\def\Etitlepage{%
-    \iffinishedtitlepage\else
-       \finishtitlepage
-    \fi
-    % It is important to do the page break before ending the group,
-    % because the headline and footline are only empty inside the group.
-    % If we use the new definition of \page, we always get a blank page
-    % after the title page, which we certainly don't want.
-    \oldpage
-  \endgroup
-  %
-  % Need this before the \...aftertitlepage checks so that if they are
-  % in effect the toc pages will come out with page numbers.
-  \HEADINGSon
-  %
-  % If they want short, they certainly want long too.
-  \ifsetshortcontentsaftertitlepage
-    \shortcontents
-    \contents
-    \global\let\shortcontents = \relax
-    \global\let\contents = \relax
-  \fi
-  %
-  \ifsetcontentsaftertitlepage
-    \contents
-    \global\let\contents = \relax
-    \global\let\shortcontents = \relax
-  \fi
-}
-
-\def\finishtitlepage{%
-  \vskip4pt \hrule height 2pt width \hsize
-  \vskip\titlepagebottomglue
-  \finishedtitlepagetrue
-}
-
-%%% Macros to be used within @titlepage:
-
-\let\subtitlerm=\tenrm
-\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-
-\parseargdef\title{%
-  \checkenv\titlepage
-  \leftline{\titlefonts\rmisbold #1}
-  % print a rule at the page bottom also.
-  \finishedtitlepagefalse
-  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
-}
-
-\parseargdef\subtitle{%
-  \checkenv\titlepage
-  {\subtitlefont \rightline{#1}}%
-}
-
-% @author should come last, but may come many times.
-% It can also be used inside @quotation.
-%
-\parseargdef\author{%
-  \def\temp{\quotation}%
-  \ifx\thisenv\temp
-    \def\quotationauthor{#1}% printed in \Equotation.
-  \else
-    \checkenv\titlepage
-    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
-    {\secfonts\rmisbold \leftline{#1}}%
-  \fi
-}
-
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline    % headline on even pages
-\newtoks\oddheadline     % headline on odd pages
-\newtoks\evenfootline    % footline on even pages
-\newtoks\oddfootline     % footline on odd pages
-
-% Now make TeX use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
-                            \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
-                            \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what  @headings on  does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
-\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
-\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
-\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
-\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
-  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
-  %
-  % Leave some space for the footline.  Hopefully ok to assume
-  % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -12pt
-  \global\advance\vsize by -12pt
-}
-
-\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-
-% @evenheadingmarks top     \thischapter <- chapter at the top of a page
-% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
-%
-% The same set of arguments for:
-%
-% @oddheadingmarks
-% @evenfootingmarks
-% @oddfootingmarks
-% @everyheadingmarks
-% @everyfootingmarks
-
-\def\evenheadingmarks{\headingmarks{even}{heading}}
-\def\oddheadingmarks{\headingmarks{odd}{heading}}
-\def\evenfootingmarks{\headingmarks{even}{footing}}
-\def\oddfootingmarks{\headingmarks{odd}{footing}}
-\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
-                          \headingmarks{odd}{heading}{#1} }
-\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
-                          \headingmarks{odd}{footing}{#1} }
-% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
-\def\headingmarks#1#2#3 {%
-  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
-  \global\expandafter\let\csname get#1#2marks\endcsname \temp
-}
-
-\everyheadingmarks bottom
-\everyfootingmarks bottom
-
-% @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 at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\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{%
-\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}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
-\def\today{%
-  \number\day\space
-  \ifcase\month
-  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
-  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
-  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
-  \fi
-  \space\number\year}
-\fi
-
-% @settitle line...  specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg{\gdef\thistitle}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent  \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin  \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemindicate{#1}}%
-  \itemindex{#1}%
-  \nobreak % This prevents a break before @itemx.
-  %
-  % If the item text does not fit in the space we have, put it on a line
-  % by itself, and do not allow a page break either before or after that
-  % line.  We do not start a paragraph here because then if the next
-  % command is, e.g., @kindex, the whatsit would get put into the
-  % horizontal list on a line by itself, resulting in extra blank space.
-  \ifdim \wd0>\itemmax
-    %
-    % Make this a paragraph so we get the \parskip glue and wrapping,
-    % but leave it ragged-right.
-    \begingroup
-      \advance\leftskip by-\tableindent
-      \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil
-      \leavevmode\unhbox0\par
-    \endgroup
-    %
-    % We're going to be starting a paragraph, but we don't want the
-    % \parskip glue -- logically it's part of the @item we just started.
-    \nobreak \vskip-\parskip
-    %
-    % Stop a page break at the \parskip glue coming up.  However, if
-    % what follows is an environment such as @example, there will be no
-    % \parskip glue; then the negative vskip we just inserted would
-    % cause the example and the item to crash together.  So we use this
-    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
-    % \parskip glue after all.  Section titles are handled this way also.
-    % 
-    \penalty 10001
-    \endgroup
-    \itemxneedsnegativevskipfalse
-  \else
-    % The item text fits into the space.  Start a paragraph, so that the
-    % following text (if any) will end up on the same line.
-    \noindent
-    % Do this with kerns and \unhbox so that if there is a footnote in
-    % the item text, it can migrate to the main vertical list and
-    % eventually be printed.
-    \nobreak\kern-\tableindent
-    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
-    \unhbox0
-    \nobreak\kern\dimen0
-    \endgroup
-    \itemxneedsnegativevskiptrue
-  \fi
-}
-
-\def\item{\errmessage{@item while not in a list environment}}
-\def\itemx{\errmessage{@itemx while not in a list environment}}
-
-% @table, @ftable, @vtable.
-\envdef\table{%
-  \let\itemindex\gobble
-  \tablecheck{table}%
-}
-\envdef\ftable{%
-  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-  \tablecheck{ftable}%
-}
-\envdef\vtable{%
-  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-  \tablecheck{vtable}%
-}
-\def\tablecheck#1{%
-  \ifnum \the\catcode`\^^M=\active
-    \endgroup
-    \errmessage{This command won't work in this context; perhaps the problem is
-      that we are \inenvironment\thisenv}%
-    \def\next{\doignore{#1}}%
-  \else
-    \let\next\tablex
-  \fi
-  \next
-}
-\def\tablex#1{%
-  \def\itemindicate{#1}%
-  \parsearg\tabley
-}
-\def\tabley#1{%
-  {%
-    \makevalueexpandable
-    \edef\temp{\noexpand\tablez #1\space\space\space}%
-    \expandafter
-  }\temp \endtablez
-}
-\def\tablez #1 #2 #3 #4\endtablez{%
-  \aboveenvbreak
-  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
-  \ifnum 0#2>0 \tableindent=#2\mil \fi
-  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
-  \itemmax=\tableindent
-  \advance \itemmax by -\itemmargin
-  \advance \leftskip by \tableindent
-  \exdentamount=\tableindent
-  \parindent = 0pt
-  \parskip = \smallskipamount
-  \ifdim \parskip=0pt \parskip=2pt \fi
-  \let\item = \internalBitem
-  \let\itemx = \internalBitemx
-}
-\def\Etable{\endgraf\afterenvbreak}
-\let\Eftable\Etable
-\let\Evtable\Etable
-\let\Eitemize\Etable
-\let\Eenumerate\Etable
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\envdef\itemize{\parsearg\doitemize}
-
-\def\doitemize#1{%
-  \aboveenvbreak
-  \itemmax=\itemindent
-  \advance\itemmax by -\itemmargin
-  \advance\leftskip by \itemindent
-  \exdentamount=\itemindent
-  \parindent=0pt
-  \parskip=\smallskipamount
-  \ifdim\parskip=0pt \parskip=2pt \fi
-  %
-  % Try typesetting the item mark that if the document erroneously says
-  % something like @itemize @samp (intending @table), there's an error
-  % right away at the @itemize.  It's not the best error message in the
-  % world, but it's better than leaving it to the @item.  This means if
-  % the user wants an empty mark, they have to say @w{} not just @w.
-  \def\itemcontents{#1}%
-  \setbox0 = \hbox{\itemcontents}%
-  %
-  % @itemize with no arg is equivalent to @itemize @bullet.
-  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
-  %
-  \let\item=\itemizeitem
-}
-
-% Definition of @item while inside @itemize and @enumerate.
-%
-\def\itemizeitem{%
-  \advance\itemno by 1  % for enumerations
-  {\let\par=\endgraf \smallbreak}% reasonable place to break
-  {%
-   % If the document has an @itemize directly after a section title, a
-   % \nobreak will be last on the list, and \sectionheading will have
-   % done a \vskip-\parskip.  In that case, we don't want to zero
-   % parskip, or the item text will crash with the heading.  On the
-   % other hand, when there is normal text preceding the item (as there
-   % usually is), we do want to zero parskip, or there would be too much
-   % space.  In that case, we won't have a \nobreak before.  At least
-   % that's the theory.
-   \ifnum\lastpenalty<10000 \parskip=0in \fi
-   \noindent
-   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
-   %
-   \vadjust{\penalty 1200}}% not good to break after first line of item.
-  \flushcr
-}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list.  No
-% argument is the same as `1'.
-%
-\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  % If we were given no argument, pretend we were given `1'.
-  \def\thearg{#1}%
-  \ifx\thearg\empty \def\thearg{1}\fi
-  %
-  % Detect if the argument is a single token.  If so, it might be a
-  % letter.  Otherwise, the only valid thing it can be is a number.
-  % (We will always have one token, because of the test we just made.
-  % This is a good thing, since \splitoff doesn't work given nothing at
-  % all -- the first parameter is undelimited.)
-  \expandafter\splitoff\thearg\endmark
-  \ifx\rest\empty
-    % Only one token in the argument.  It could still be anything.
-    % A ``lowercase letter'' is one whose \lccode is nonzero.
-    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
-    %   not equal to itself.
-    % Otherwise, we assume it's a number.
-    %
-    % We need the \relax at the end of the \ifnum lines to stop TeX from
-    % continuing to look for a <number>.
-    %
-    \ifnum\lccode\expandafter`\thearg=0\relax
-      \numericenumerate % a number (we hope)
-    \else
-      % It's a letter.
-      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
-        \lowercaseenumerate % lowercase letter
-      \else
-        \uppercaseenumerate % uppercase letter
-      \fi
-    \fi
-  \else
-    % Multiple tokens in the argument.  We hope it's a number.
-    \numericenumerate
-  \fi
-}
-
-% An @enumerate whose labels are integers.  The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
-  \itemno = \thearg
-  \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more lowercase letters in @enumerate; get a bigger
-                  alphabet}%
-    \fi
-    \char\lccode\itemno
-  }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more uppercase letters in @enumerate; get a bigger
-                  alphabet}
-    \fi
-    \char\uccode\itemno
-  }%
-}
-
-% Call \doitemize, adding a period to the first argument and supplying the
-% common last two arguments.  Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
-  \advance\itemno by -1
-  \doitemize{#1.}\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @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.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-%   @multitable @columnfractions .25 .3 .45
-%   @item ...
-%
-%   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.
-
-% 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 do not need to be on their own lines, but it will not hurt
-% if they are.
-
-% Sample multitable:
-
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item first col stuff @tab second col stuff @tab third col
-%   @item
-%   first col stuff
-%   @tab
-%   second col stuff
-%   @tab
-%   third col
-%   @item first col stuff @tab second col stuff
-%   @tab Many paragraphs of text may be used in any column.
-%
-%         They will wrap at the width determined by the template.
-%   @item@tab@tab This will be in third column.
-%   @end multitable
-
-% Default dimensions may be reset by user.
-% @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.
-%
-\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\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the @columnfraction, usually a decimal number like .5, but might
-% be just 1.  We just use it, whatever it is.
-%
-\def\pickupwholefraction#1 {%
-  \global\advance\colcount by 1
-  \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\xcolumnfractions
-      \global\setpercenttrue
-    \else
-      \ifsetpercent
-         \let\go\pickupwholefraction
-      \else
-         \global\advance\colcount by 1
-         \setbox0=\hbox{#1\unskip\space}% 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
-    \ifx\go\pickupwholefraction
-      % Put the argument back for the \pickupwholefraction call, so
-      % we'll always have a period there to be parsed.
-      \def\go{\pickupwholefraction#1}%
-    \else
-      \let\go = \setuptable
-    \fi%
-  \fi
-  \go
-}
-
-% multitable-only commands.
-%
-% @headitem starts a heading row, which we typeset in bold.
-% Assignments have to be global since we are inside the implicit group
-% of an alignment entry.  \everycr resets \everytab so we don't have to
-% undo it ourselves.
-\def\headitemfont{\b}% for people to use in the template row; not changeable
-\def\headitem{%
-  \checkenv\multitable
-  \crcr
-  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
-  \the\everytab % for the first item
-}%
-%
-% A \tab used to include \hskip1sp.  But then the space in a template
-% line is not enough.  That is bad.  So let's go back to just `&' until
-% we again encounter the problem the 1sp was intended to solve.
-%                                      --karl, nathan@acm.org, 20apr99.
-\def\tab{\checkenv\multitable &\the\everytab}%
-
-% @multitable ... @end multitable definitions:
-%
-\newtoks\everytab  % insert after every tab.
-%
-\envdef\multitable{%
-  \vskip\parskip
-  \startsavinginserts
-  %
-  % @item within a multitable starts a normal row.
-  % We use \def instead of \let so that if one of the multitable entries
-  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
-  % \endtemplate) expanding \doitemize.
-  \def\item{\crcr}%
-  %
-  \tolerance=9500
-  \hbadness=9500
-  \setmultitablespacing
-  \parskip=\multitableparskip
-  \parindent=\multitableparindent
-  \overfullrule=0pt
-  \global\colcount=0
-  %
-  \everycr = {%
-    \noalign{%
-      \global\everytab={}%
-      \global\colcount=0 % Reset the column counter.
-      % Check for saved footnotes, etc.
-      \checkinserts
-      % Keeps underfull box messages off when table breaks over pages.
-      %\filbreak
-       % Maybe so, but it also creates really weird page breaks when the
-       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
-       % problem manifests itself, so it can be fixed for real --karl.
-    }%
-  }%
-  %
-  \parsearg\domultitable
-}
-\def\domultitable#1{%
-  % To parse everything between @multitable and @item:
-  \setuptable#1 \endsetuptable
-  %
-  % This preamble sets up a generic column definition, which will
-  % be used as many times as user calls for columns.
-  % \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
-    \multistrut
-    \vtop{%
-      % Use the current \colcount to find the correct column width:
-      \hsize=\expandafter\csname col\the\colcount\endcsname
-      %
-      % In order to keep entries from bumping into each other
-      % we will add a \leftskip of \multitablecolspace to all columns after
-      % the first one.
-      %
-      % If a template has been used, we will add \multitablecolspace
-      % to the width of each template entry.
-      %
-      % If the user has set preamble in terms of percent of \hsize we will
-      % use that dimension as the width of the column, and the \leftskip
-      % will keep entries from bumping into each other.  Table will start at
-      % left margin and final column will justify at right margin.
-      %
-      % Make sure we don't inherit \rightskip from the outer environment.
-      \rightskip=0pt
-      \ifnum\colcount=1
-       % The first column will be indented with the surrounding text.
-       \advance\hsize by\leftskip
-      \else
-       \ifsetpercent \else
-         % If user has not set preamble in terms of percent of \hsize
-         % we will advance \hsize by \multitablecolspace.
-         \advance\hsize by \multitablecolspace
-       \fi
-       % In either case we will make \leftskip=\multitablecolspace:
-      \leftskip=\multitablecolspace
-      \fi
-      % Ignoring space at the beginning and end avoids an occasional spurious
-      % blank line, when TeX decides to break the line at the space before the
-      % box from the multistrut, so the strut ends up on a line by itself.
-      % For example:
-      % @multitable @columnfractions .11 .89
-      % @item @code{#}
-      % @tab Legal holiday which is valid in major parts of the whole country.
-      % Is automatically provided with highlighting sequences respectively
-      % marking characters.
-      \noindent\ignorespaces##\unskip\multistrut
-    }\cr
-}
-\def\Emultitable{%
-  \crcr
-  \egroup % end the \halign
-  \global\setpercentfalse
-}
-
-\def\setmultitablespacing{%
-  \def\multistrut{\strut}% just use the standard line spacing
-  %
-  % Compute \multitablelinespace (if not defined by user) for use in
-  % \multitableparskip calculation.  We used define \multistrut based on
-  % this, but (ironically) that caused the spacing to be off.
-  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-\fi
-%% 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.
-\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{conditionals,}
-
-% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
-% @ifnotxml always succeed.  They currently do nothing; we don't
-% attempt to check whether the conditionals are properly nested.  But we
-% have to remember that they are conditionals, so that @end doesn't
-% attempt to close an environment group.
-%
-\def\makecond#1{%
-  \expandafter\let\csname #1\endcsname = \relax
-  \expandafter\let\csname iscond.#1\endcsname = 1
-}
-\makecond{iftex}
-\makecond{ifnotdocbook}
-\makecond{ifnothtml}
-\makecond{ifnotinfo}
-\makecond{ifnotplaintext}
-\makecond{ifnotxml}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescription{\doignore{documentdescription}}
-\def\docbook{\doignore{docbook}}
-\def\html{\doignore{html}}
-\def\ifdocbook{\doignore{ifdocbook}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% Ignore text until a line `@end #1', keeping track of nested conditionals.
-%
-% A count to remember the depth of nesting.
-\newcount\doignorecount
-
-\def\doignore#1{\begingroup
-  % Scan in ``verbatim'' mode:
-  \obeylines
-  \catcode`\@ = \other
-  \catcode`\{ = \other
-  \catcode`\} = \other
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \spaceisspace
-  %
-  % Count number of #1's that we've seen.
-  \doignorecount = 0
-  %
-  % Swallow text until we reach the matching `@end #1'.
-  \dodoignore{#1}%
-}
-
-{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
-  \obeylines %
-  %
-  \gdef\dodoignore#1{%
-    % #1 contains the command name as a string, e.g., `ifinfo'.
-    %
-    % Define a command to find the next `@end #1'.
-    \long\def\doignoretext##1^^M@end #1{%
-      \doignoretextyyy##1^^M@#1\_STOP_}%
-    %
-    % And this command to find another #1 command, at the beginning of a
-    % line.  (Otherwise, we would consider a line `@c @ifset', for
-    % example, to count as an @ifset for nesting.)
-    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
-    %
-    % And now expand that command.
-    \doignoretext ^^M%
-  }%
-}
-
-\def\doignoreyyy#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty                      % Nothing found.
-    \let\next\doignoretextzzz
-  \else                                        % Found a nested condition, ...
-    \advance\doignorecount by 1
-    \let\next\doignoretextyyy          % ..., look for another.
-    % If we're here, #1 ends with ^^M\ifinfo (for example).
-  \fi
-  \next #1% the token \_STOP_ is present just after this macro.
-}
-
-% We have to swallow the remaining "\_STOP_".
-%
-\def\doignoretextzzz#1{%
-  \ifnum\doignorecount = 0     % We have just found the outermost @end.
-    \let\next\enddoignore
-  \else                                % Still inside a nested condition.
-    \advance\doignorecount by -1
-    \let\next\doignoretext      % Look for the next @end.
-  \fi
-  \next
-}
-
-% Finish off ignored text.
-{ \obeylines%
-  % Ignore anything after the last `@end #1'; this matters in verbatim
-  % environments, where otherwise the newline after an ignored conditional
-  % would result in a blank line in the output.
-  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
-}
-
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% 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.
-% We rely on the fact that \parsearg sets \catcode`\ =10.
-%
-\parseargdef\set{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  {%
-    \makevalueexpandable
-    \def\temp{#2}%
-    \edef\next{\gdef\makecsname{SET#1}}%
-    \ifx\temp\empty
-      \next{}%
-    \else
-      \setzzz#2\endsetzzz
-    \fi
-  }%
-}
-% Remove the trailing space \setxxx inserted.
-\def\setzzz#1 \endsetzzz{\next{#1}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\parseargdef\clear{%
-  {%
-    \makevalueexpandable
-    \global\expandafter\let\csname SET#1\endcsname=\relax
-  }%
-}
-
-% @value{foo} gets the text saved in variable foo.
-\def\value{\begingroup\makevalueexpandable\valuexxx}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-{
-  \catcode`\- = \active \catcode`\_ = \active
-  %
-  \gdef\makevalueexpandable{%
-    \let\value = \expandablevalue
-    % We don't want these characters active, ...
-    \catcode`\-=\other \catcode`\_=\other
-    % ..., but we might end up with active ones in the argument if
-    % we're called from @code, as @code{@value{foo-bar_}}, though.
-    % So \let them to their normal equivalents.
-    \let-\realdash \let_\normalunderscore
-  }
-}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file.  This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-%
-\def\expandablevalue#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    {[No value for ``#1'']}%
-    \message{Variable `#1', used in @value, is not set.}%
-  \else
-    \csname SET#1\endcsname
-  \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-% To get special treatment of `@end ifset,' call \makeond and the redefine.
-%
-\makecond{ifset}
-\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
-\def\doifset#1#2{%
-  {%
-    \makevalueexpandable
-    \let\next=\empty
-    \expandafter\ifx\csname SET#2\endcsname\relax
-      #1% If not set, redefine \next.
-    \fi
-    \expandafter
-  }\next
-}
-\def\ifsetfail{\doignore{ifset}}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-% The `\else' inside the `\doifset' parameter is a trick to reuse the
-% above code: if the variable is not set, do nothing, if it is set,
-% then redefine \next to \ifclearfail.
-%
-\makecond{ifclear}
-\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
-\def\ifclearfail{\doignore{ifclear}}
-
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory=\comment
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within macros and \if's.
-\edef\newwrite{\makecsname{ptexnewwrite}}
-
-% \newindex {foo} defines an index named foo.
-% 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 name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
-    \noexpand\doindex{#1}}
-}
-
-% @defindex foo  ==  \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%
-    \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar    makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar   similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
-  % Only do \closeout if we haven't already done it, else we'll end up
-  % closing the target index.
-  \expandafter \ifx\csname donesynindex#2\endcsname \relax
-    % The \closeout helps reduce unnecessary open files; the limit on the
-    % Acorn RISC OS is a mere 16 files.
-    \expandafter\closeout\csname#2indfile\endcsname
-    \expandafter\let\csname donesynindex#2\endcsname = 1
-  \fi
-  % redefine \fooindfile:
-  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
-  \expandafter\let\csname#2indfile\endcsname=\temp
-  % redefine \fooindex:
-  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
-  \escapechar = `\\     % use backslash in output files.
-  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
-  \def\ {\realbackslash\space }%
-  %
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
-  %
-  % I don't entirely understand this, but when an index entry is
-  % generated from a macro call, the \endinput which \scanmacro inserts
-  % causes processing to be prematurely terminated.  This is,
-  % apparently, because \indexsorttmp is fully expanded, and \endinput
-  % is an expandable command.  The redefinition below makes \endinput
-  % disappear altogether for that purpose -- although logging shows that
-  % processing continues to some further point.  On the other hand, it
-  % seems \endinput does not hurt in the printed index arg, since that
-  % is still getting written without apparent harm.
-  % 
-  % Sample source (mac-idx3.tex, reported by Graham Percival to
-  % help-texinfo, 22may06):
-  % @macro funindex {WORD}
-  % @findex xyz
-  % @end macro
-  % ...
-  % @funindex commtest
-  % 
-  % The above is not enough to reproduce the bug, but it gives the flavor.
-  % 
-  % Sample whatsit resulting:
-  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
-  % 
-  % So:
-  \let\endinput = \empty
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% For the aux and toc files, @ is the escape character.  So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files).  When everything uses @,
-% this will be simpler.
-%
-\def\atdummies{%
-  \def\@{@@}%
-  \def\ {@ }%
-  \let\{ = \lbraceatcmd
-  \let\} = \rbraceatcmd
-  %
-  % Do the redefinitions.
-  \commondummies
-  \otherbackslash
-}
-
-% Called from \indexdummies and \atdummies.
-%
-\def\commondummies{%
-  %
-  % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control% words,
-  % not control letters, because the \space would be incorrect for
-  % control characters, but is needed to separate the control word
-  % from whatever follows.
-  %
-  % For control letters, we have \definedummyletter, which omits the
-  % space.
-  %
-  % These can be used both for control words that take an argument and
-  % those that do not.  If it is followed by {arg} in the input, then
-  % that will dutifully get written to the index (or wherever).
-  %
-  \def\definedummyword  ##1{\def##1{\string##1\space}}%
-  \def\definedummyletter##1{\def##1{\string##1}}%
-  \let\definedummyaccent\definedummyletter
-  %
-  \commondummiesnofonts
-  %
-  \definedummyletter\_%
-  %
-  % Non-English letters.
-  \definedummyword\AA
-  \definedummyword\AE
-  \definedummyword\L
-  \definedummyword\OE
-  \definedummyword\O
-  \definedummyword\aa
-  \definedummyword\ae
-  \definedummyword\l
-  \definedummyword\oe
-  \definedummyword\o
-  \definedummyword\ss
-  \definedummyword\exclamdown
-  \definedummyword\questiondown
-  \definedummyword\ordf
-  \definedummyword\ordm
-  %
-  % Although these internal commands shouldn't show up, sometimes they do.
-  \definedummyword\bf
-  \definedummyword\gtr
-  \definedummyword\hat
-  \definedummyword\less
-  \definedummyword\sf
-  \definedummyword\sl
-  \definedummyword\tclose
-  \definedummyword\tt
-  %
-  \definedummyword\LaTeX
-  \definedummyword\TeX
-  %
-  % Assorted special characters.
-  \definedummyword\bullet
-  \definedummyword\comma
-  \definedummyword\copyright
-  \definedummyword\registeredsymbol
-  \definedummyword\dots
-  \definedummyword\enddots
-  \definedummyword\equiv
-  \definedummyword\error
-  \definedummyword\euro
-  \definedummyword\guillemetleft
-  \definedummyword\guillemetright
-  \definedummyword\guilsinglleft
-  \definedummyword\guilsinglright
-  \definedummyword\expansion
-  \definedummyword\minus
-  \definedummyword\ogonek
-  \definedummyword\pounds
-  \definedummyword\point
-  \definedummyword\print
-  \definedummyword\quotedblbase
-  \definedummyword\quotedblleft
-  \definedummyword\quotedblright
-  \definedummyword\quoteleft
-  \definedummyword\quoteright
-  \definedummyword\quotesinglbase
-  \definedummyword\result
-  \definedummyword\textdegree
-  %
-  % We want to disable all macros so that they are not expanded by \write.
-  \macrolist
-  %
-  \normalturnoffactive
-  %
-  % Handle some cases of @value -- where it does not contain any
-  % (non-fully-expandable) commands.
-  \makevalueexpandable
-}
-
-% \commondummiesnofonts: common to \commondummies and \indexnofonts.
-%
-\def\commondummiesnofonts{%
-  % Control letters and accents.
-  \definedummyletter\!%
-  \definedummyaccent\"%
-  \definedummyaccent\'%
-  \definedummyletter\*%
-  \definedummyaccent\,%
-  \definedummyletter\.%
-  \definedummyletter\/%
-  \definedummyletter\:%
-  \definedummyaccent\=%
-  \definedummyletter\?%
-  \definedummyaccent\^%
-  \definedummyaccent\`%
-  \definedummyaccent\~%
-  \definedummyword\u
-  \definedummyword\v
-  \definedummyword\H
-  \definedummyword\dotaccent
-  \definedummyword\ogonek
-  \definedummyword\ringaccent
-  \definedummyword\tieaccent
-  \definedummyword\ubaraccent
-  \definedummyword\udotaccent
-  \definedummyword\dotless
-  %
-  % Texinfo font commands.
-  \definedummyword\b
-  \definedummyword\i
-  \definedummyword\r
-  \definedummyword\sc
-  \definedummyword\t
-  %
-  % Commands that take arguments.
-  \definedummyword\acronym
-  \definedummyword\cite
-  \definedummyword\code
-  \definedummyword\command
-  \definedummyword\dfn
-  \definedummyword\emph
-  \definedummyword\env
-  \definedummyword\file
-  \definedummyword\kbd
-  \definedummyword\key
-  \definedummyword\math
-  \definedummyword\option
-  \definedummyword\pxref
-  \definedummyword\ref
-  \definedummyword\samp
-  \definedummyword\strong
-  \definedummyword\tie
-  \definedummyword\uref
-  \definedummyword\url
-  \definedummyword\var
-  \definedummyword\verb
-  \definedummyword\w
-  \definedummyword\xref
-}
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names.  It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexnofonts{%
-  % Accent commands should become @asis.
-  \def\definedummyaccent##1{\let##1\asis}%
-  % We can just ignore other control letters.
-  \def\definedummyletter##1{\let##1\empty}%
-  % Hopefully, all control words can become @asis.
-  \let\definedummyword\definedummyaccent
-  %
-  \commondummiesnofonts
-  %
-  % Don't no-op \tt, since it isn't a user-level command
-  % and is used in the definitions of the active chars like <, >, |, etc.
-  % Likewise with the other plain tex font commands.
-  %\let\tt=\asis
-  %
-  \def\ { }%
-  \def\@{@}%
-  % how to handle braces?
-  \def\_{\normalunderscore}%
-  %
-  % Non-English letters.
-  \def\AA{AA}%
-  \def\AE{AE}%
-  \def\L{L}%
-  \def\OE{OE}%
-  \def\O{O}%
-  \def\aa{aa}%
-  \def\ae{ae}%
-  \def\l{l}%
-  \def\oe{oe}%
-  \def\o{o}%
-  \def\ss{ss}%
-  \def\exclamdown{!}%
-  \def\questiondown{?}%
-  \def\ordf{a}%
-  \def\ordm{o}%
-  %
-  \def\LaTeX{LaTeX}%
-  \def\TeX{TeX}%
-  %
-  % Assorted special characters.
-  % (The following {} will end up in the sort string, but that's ok.)
-  \def\bullet{bullet}%
-  \def\comma{,}%
-  \def\copyright{copyright}%
-  \def\registeredsymbol{R}%
-  \def\dots{...}%
-  \def\enddots{...}%
-  \def\equiv{==}%
-  \def\error{error}%
-  \def\euro{euro}%
-  \def\guillemetleft{<<}%
-  \def\guillemetright{>>}%
-  \def\guilsinglleft{<}%
-  \def\guilsinglright{>}%
-  \def\expansion{==>}%
-  \def\minus{-}%
-  \def\pounds{pounds}%
-  \def\point{.}%
-  \def\print{-|}%
-  \def\quotedblbase{"}%
-  \def\quotedblleft{"}%
-  \def\quotedblright{"}%
-  \def\quoteleft{`}%
-  \def\quoteright{'}%
-  \def\quotesinglbase{,}%
-  \def\result{=>}%
-  \def\textdegree{degrees}%
-  %
-  % We need to get rid of all macros, leaving only the arguments (if present).
-  % Of course this is not nearly correct, but it is the best we can do for now.
-  % makeinfo does not expand macros in the argument to @deffn, which ends up
-  % writing an index entry, and texindex isn't prepared for an index sort entry
-  % that starts with \.
-  % 
-  % Since macro invocations are followed by braces, we can just redefine them
-  % to take a single TeX argument.  The case of a macro invocation that
-  % goes to end-of-line is not handled.
-  % 
-  \macrolist
-}
-
-\let\indexbackslash=0  %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% Most index entries go through here, but \dosubind is the general case.
-% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
-  \iflinks
-  {%
-    % Store the main index entry text (including the third arg).
-    \toks0 = {#2}%
-    % If third arg is present, precede it with a space.
-    \def\thirdarg{#3}%
-    \ifx\thirdarg\empty \else
-      \toks0 = \expandafter{\the\toks0 \space #3}%
-    \fi
-    %
-    \edef\writeto{\csname#1indfile\endcsname}%
-    %
-    \safewhatsit\dosubindwrite
-  }%
-  \fi
-}
-
-% Write the entry in \toks0 to the index file:
-%
-\def\dosubindwrite{%
-  % Put the index entry in the margin if desired.
-  \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
-  \fi
-  %
-  % Remember, we are within a group.
-  \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
-  {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
-  }%
-  %
-  % Set up the complete index entry, with both the sort key and
-  % the original text, including any font commands.  We write
-  % three arguments to \entry to the .?? file (four in the
-  % subentry case), texindex reduces to two when writing the .??s
-  % sorted result.
-  \edef\temp{%
-    \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
-  }%
-  \temp
-}
-
-% Take care of unwanted page breaks/skips around a whatsit:
-%
-% If a skip is the last thing on the list now, preserve it
-% by backing up by \lastskip, doing the \write, then inserting
-% the skip again.  Otherwise, the whatsit generated by the
-% \write or \pdfdest will make \lastskip zero.  The result is that
-% sequences like this:
-% @end defun
-% @tindex whatever
-% @defun ...
-% will have extra space inserted, because the \medbreak in the
-% start of the @defun won't see the skip inserted by the @end of
-% the previous defun.
-%
-% But don't do any of this if we're not in vertical mode.  We
-% don't want to do a \vskip and prematurely end a paragraph.
-%
-% Avoid page breaks due to these extra skips, too.
-%
-% But wait, there is a catch there:
-% We'll have to check whether \lastskip is zero skip.  \ifdim is not
-% sufficient for this purpose, as it ignores stretch and shrink parts
-% of the skip.  The only way seems to be to check the textual
-% representation of the skip.
-%
-% The following is almost like \def\zeroskipmacro{0.0pt} except that
-% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
-%
-\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
-%
-\newskip\whatsitskip
-\newcount\whatsitpenalty
-%
-% ..., ready, GO:
-%
-\def\safewhatsit#1{%
-\ifhmode
-  #1%
-\else
-  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \whatsitskip = \lastskip
-  \edef\lastskipmacro{\the\lastskip}%
-  \whatsitpenalty = \lastpenalty
-  %
-  % If \lastskip is nonzero, that means the last item was a
-  % skip.  And since a skip is discardable, that means this
-  % -\whatsitskip glue we're inserting is preceded by a
-  % non-discardable item, therefore it is not a potential
-  % breakpoint, therefore no \nobreak needed.
-  \ifx\lastskipmacro\zeroskipmacro
-  \else
-    \vskip-\whatsitskip
-  \fi
-  %
-  #1%
-  %
-  \ifx\lastskipmacro\zeroskipmacro
-    % If \lastskip was zero, perhaps the last item was a penalty, and
-    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
-    % to re-insert the same penalty (values >10000 are used for various
-    % signals); since we just inserted a non-discardable item, any
-    % following glue (such as a \parskip) would be a breakpoint.  For example:
-    % 
-    %   @deffn deffn-whatever
-    %   @vindex index-whatever
-    %   Description.
-    % would allow a break between the index-whatever whatsit
-    % and the "Description." paragraph.
-    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
-  \else
-    % On the other hand, if we had a nonzero \lastskip,
-    % this make-up glue would be preceded by a non-discardable item
-    % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\whatsitskip
-  \fi
-\fi
-}
-
-% The index entry written in the file actually looks like
-%  \entry {sortstring}{page}{topic}
-% or
-%  \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-%  \initial {c}
-%     before the first topic whose initial is c
-%  \entry {topic}{pagelist}
-%     for a topic that is used without subtopics
-%  \primary {topic}
-%     for the beginning of a topic that is used with subtopics
-%  \secondary {subtopic}{pagelist}
-%     for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\parseargdef\printindex{\begingroup
-  \dobreak \chapheadingskip{10000}%
-  %
-  \smallfonts \rm
-  \tolerance = 9500
-  \plainfrenchspacing
-  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
-  %
-  % See if the index file exists and is nonempty.
-  % Change catcode of @ here so that if the index file contains
-  % \initial {@}
-  % as its first line, TeX doesn't complain about mismatched braces
-  % (because it thinks @} is a control sequence).
-  \catcode`\@ = 11
-  \openin 1 \jobname.#1s
-  \ifeof 1
-    % \enddoublecolumns gets confused if there is no text in the index,
-    % and it loses the chapter title and the aux file entries for the
-    % index.  The easiest way to prevent this problem is to make sure
-    % there is some text.
-    \putwordIndexNonexistent
-  \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
-    % it can discover if there is anything in it.
-    \read 1 to \temp
-    \ifeof 1
-      \putwordIndexIsEmpty
-    \else
-      % 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.
-      \def\indexbackslash{\backslashcurfont}%
-      \catcode`\\ = 0
-      \escapechar = `\\
-      \begindoublecolumns
-      \input \jobname.#1s
-      \enddoublecolumns
-    \fi
-  \fi
-  \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
-  % Some minor font changes for the special characters.
-  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-  %
-  % Remove any glue we may have, we'll be inserting our own.
-  \removelastskip
-  %
-  % We like breaks before the index initials, so insert a bonus.
-  \nobreak
-  \vskip 0pt plus 3\baselineskip
-  \penalty 0
-  \vskip 0pt plus -3\baselineskip
-  %
-  % Typeset the initial.  Making this add up to a whole number of
-  % baselineskips increases the chance of the dots lining up from column
-  % to column.  It still won't often be perfect, because of the stretch
-  % we need before each entry, but it's better.
-  %
-  % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
-  % Do our best not to break after the initial.
-  \nobreak
-  \vskip .33\baselineskip plus .1\baselineskip
-}}
-
-% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
-% then page number (#2) flushed to the right margin.  It is used for index
-% and table of contents entries.  The paragraph is indented by \leftskip.
-%
-% A straightforward implementation would start like this:
-%      \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-%
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
-\def\entry{%
-  \begingroup
-    %
-    % Start a new paragraph if necessary, so our assignments below can't
-    % affect previous text.
-    \par
-    %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
-    % No extra space above this paragraph.
-    \parskip = 0in
-    %
-    % Do not prefer a separate line ending with a hyphen to fewer lines.
-    \finalhyphendemerits = 0
-    %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
-    %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
-    %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
-    %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
-    % Swallow the left brace of the text (first parameter):
-    \afterassignment\doentry
-    \let\temp =
-}
-\def\doentry{%
-    \bgroup % Instead of the swallowed brace.
-      \noindent
-      \aftergroup\finishentry
-      % And now comes the text of the entry.
-}
-\def\finishentry#1{%
-    % #1 is the page number.
-    %
-    % 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.
-    \setbox\boxA = \hbox{#1}%
-    \ifdim\wd\boxA = 0pt
-      \ %
-    \else
-      %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
-      \null\nobreak\indexdotfill % Have leaders before the page number.
-      %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
-      \ifpdf
-       \pdfgettoks#1.%
-       \ \the\toksA
-      \else
-       \ #1%
-      \fi
-    \fi
-    \par
-  \endgroup
-}
-
-% Like plain.tex's \dotfill, except uses up at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
-  \parfillskip=0in
-  \parskip=0in
-  \hangindent=1in
-  \hangafter=1
-  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
-  \ifpdf
-    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
-  \else
-    #2
-  \fi
-  \par
-}}
-
-% 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 % ended by \enddoublecolumns
-  % Grab any single-column material above us.
-  \output = {%
-    %
-    % Here is a possibility not foreseen in manmac: if we accumulate a
-    % whole lot of material, we might end up calling this \output
-    % routine twice in a row (see the doublecol-lose test, which is
-    % essentially a couple of indexes with @setchapternewpage off).  In
-    % that case we just ship out what is in \partialpage with the normal
-    % output routine.  Generally, \partialpage will be empty when this
-    % runs and this will be a no-op.  See the indexspread.tex test case.
-    \ifvoid\partialpage \else
-      \onepageout{\pagecontents\partialpage}%
-    \fi
-    %
-    \global\setbox\partialpage = \vbox{%
-      % Unvbox the main output page.
-      \unvbox\PAGE
-      \kern-\topskip \kern\baselineskip
-    }%
-  }%
-  \eject % run that output routine to set \partialpage
-  %
-  % Use the double-column output routine for subsequent pages.
-  \output = {\doublecolumnout}%
-  %
-  % Change the page size parameters.  We could do this once outside this
-  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
-  % format, but then we repeat the same computation.  Repeating a couple
-  % of assignments once per index is clearly meaningless for the
-  % execution time, so we may as well do it in one place.
-  %
-  % First we halve the line length, less a little for the gutter between
-  % the columns.  We compute the gutter based on the line length, so it
-  % changes automatically with the paper format.  The magic constant
-  % below is chosen so that the gutter has the same value (well, +-<1pt)
-  % as it did when we hard-coded it.
-  %
-  % We put the result in a separate register, \doublecolumhsize, so we
-  % can restore it in \pagesofar, after \hsize itself has (potentially)
-  % been clobbered.
-  %
-  \doublecolumnhsize = \hsize
-    \advance\doublecolumnhsize by -.04154\hsize
-    \divide\doublecolumnhsize by 2
-  \hsize = \doublecolumnhsize
-  %
-  % Double the \vsize as well.  (We don't need a separate register here,
-  % since nobody clobbers \vsize.)
-  \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\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@ = \vsize
-  \divide\dimen@ by 2
-  \advance\dimen@ by -\ht\partialpage
-  %
-  % box0 will be the left-hand column, box2 the right.
-  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
-  \onepageout\pagesofar
-  \unvbox255
-  \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
-  \unvbox\partialpage
-  %
-  \hsize = \doublecolumnhsize
-  \wd0=\hsize \wd2=\hsize
-  \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
-  % The following penalty ensures that the page builder is exercised
-  % _before_ we change the output routine.  This is necessary in the
-  % following situation:
-  %
-  % The last section of the index consists only of a single entry.
-  % Before this section, \pagetotal is less than \pagegoal, so no
-  % break occurs before the last section starts.  However, the last
-  % section, consisting of \initial and the single \entry, does not
-  % fit on the page and has to be broken off.  Without the following
-  % penalty the page builder will not be exercised until \eject
-  % below, and by that time we'll already have changed the output
-  % routine to the \balancecolumns version, so the next-to-last
-  % double-column page will be processed with \balancecolumns, which
-  % is wrong:  The two columns will go to the main vertical list, with
-  % the broken-off section in the recent contributions.  As soon as
-  % the output routine finishes, TeX starts reconsidering the page
-  % break.  The two columns and the broken-off section both fit on the
-  % page, because the two columns now take up only half of the page
-  % goal.  When TeX sees \eject from below which follows the final
-  % section, it invokes the new output routine that we've set after
-  % \balancecolumns below; \onepageout will try to fit the two columns
-  % and the final section into the vbox of \pageheight (see
-  % \pagebody), causing an overfull box.
-  %
-  % Note that glue won't work here, because glue does not exercise the
-  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
-  \penalty0
-  %
-  \output = {%
-    % Split the last of the double-column material.  Leave it on the
-    % current page, no automatic page break.
-    \balancecolumns
-    %
-    % If we end up splitting too much material for the current page,
-    % though, there will be another page break right after this \output
-    % invocation ends.  Having called \balancecolumns once, we do not
-    % want to call it again.  Therefore, reset \output to its normal
-    % definition right away.  (We hope \balancecolumns will never be
-    % called on to balance too much material, but if it is, this makes
-    % the output somewhat more palatable.)
-    \global\output = {\onepageout{\pagecontents\PAGE}}%
-  }%
-  \eject
-  \endgroup % started in \begindoublecolumns
-  %
-  % \pagegoal was set to the doubled \vsize above, since we restarted
-  % the current page.  We're now back to normal single-column
-  % typesetting, so reset \pagegoal to the normal \vsize (after the
-  % \endgroup where \vsize got restored).
-  \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
-  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
-  \dimen@ = \ht0
-  \advance\dimen@ by \topskip
-  \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \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@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
-  %
-  \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
-% sections so that we can refer to them unambiguously in the pdf
-% outlines by their "section number".  We avoid collisions with chapter
-% numbers by starting them at 10000.  (If a document ever has 10000
-% chapters, we're in trouble anyway, I'm sure.)
-\newcount\unnumberedno \unnumberedno = 10000
-\newcount\chapno
-\newcount\secno        \secno=0
-\newcount\subsecno     \subsecno=0
-\newcount\subsubsecno  \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno  \appendixno = `\@
-%
-% \def\appendixletter{\char\the\appendixno}
-% We do the following ugly conditional instead of the above simple
-% construct for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-%
-\def\appendixletter{%
-  \ifnum\appendixno=`A A%
-  \else\ifnum\appendixno=`B B%
-  \else\ifnum\appendixno=`C C%
-  \else\ifnum\appendixno=`D D%
-  \else\ifnum\appendixno=`E E%
-  \else\ifnum\appendixno=`F F%
-  \else\ifnum\appendixno=`G G%
-  \else\ifnum\appendixno=`H H%
-  \else\ifnum\appendixno=`I I%
-  \else\ifnum\appendixno=`J J%
-  \else\ifnum\appendixno=`K K%
-  \else\ifnum\appendixno=`L L%
-  \else\ifnum\appendixno=`M M%
-  \else\ifnum\appendixno=`N N%
-  \else\ifnum\appendixno=`O O%
-  \else\ifnum\appendixno=`P P%
-  \else\ifnum\appendixno=`Q Q%
-  \else\ifnum\appendixno=`R R%
-  \else\ifnum\appendixno=`S S%
-  \else\ifnum\appendixno=`T T%
-  \else\ifnum\appendixno=`U U%
-  \else\ifnum\appendixno=`V V%
-  \else\ifnum\appendixno=`W W%
-  \else\ifnum\appendixno=`X X%
-  \else\ifnum\appendixno=`Y Y%
-  \else\ifnum\appendixno=`Z Z%
-  % The \the is necessary, despite appearances, because \appendixletter is
-  % expanded while writing the .toc file.  \char\appendixno is not
-  % expandable, thus it is written literally, thus all appendixes come out
-  % with the same letter (or @) in the toc without it.
-  \else\char\the\appendixno
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines these (using marks) as the number+name, number
-% and name of the chapter.  Page headings and footings can use
-% these.  @section does likewise.
-\def\thischapter{}
-\def\thischapternum{}
-\def\thischaptername{}
-\def\thissection{}
-\def\thissectionnum{}
-\def\thissectionname{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% we only have subsub.
-\chardef\maxseclevel = 3
-%
-% A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
-%
-% Trace whether the current chapter is an appendix or not:
-% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
-\def\chapheadtype{N}
-
-% Choose a heading macro
-% #1 is heading type
-% #2 is heading level
-% #3 is text for heading
-\def\genhead#1#2#3{%
-  % Compute the abs. sec. level:
-  \absseclevel=#2
-  \advance\absseclevel by \secbase
-  % Make sure \absseclevel doesn't fall outside the range:
-  \ifnum \absseclevel < 0
-    \absseclevel = 0
-  \else
-    \ifnum \absseclevel > 3
-      \absseclevel = 3
-    \fi
-  \fi
-  % The heading type:
-  \def\headtype{#1}%
-  \if \headtype U%
-    \ifnum \absseclevel < \unmlevel
-      \chardef\unmlevel = \absseclevel
-    \fi
-  \else
-    % Check for appendix sections:
-    \ifnum \absseclevel = 0
-      \edef\chapheadtype{\headtype}%
-    \else
-      \if \headtype A\if \chapheadtype N%
-       \errmessage{@appendix... within a non-appendix chapter}%
-      \fi\fi
-    \fi
-    % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unmlevel
-      \def\headtype{U}%
-    \else
-      \chardef\unmlevel = 3
-    \fi
-  \fi
-  % Now print the heading:
-  \if \headtype U%
-    \ifcase\absseclevel
-       \unnumberedzzz{#3}%
-    \or \unnumberedseczzz{#3}%
-    \or \unnumberedsubseczzz{#3}%
-    \or \unnumberedsubsubseczzz{#3}%
-    \fi
-  \else
-    \if \headtype A%
-      \ifcase\absseclevel
-         \appendixzzz{#3}%
-      \or \appendixsectionzzz{#3}%
-      \or \appendixsubseczzz{#3}%
-      \or \appendixsubsubseczzz{#3}%
-      \fi
-    \else
-      \ifcase\absseclevel
-         \chapterzzz{#3}%
-      \or \seczzz{#3}%
-      \or \numberedsubseczzz{#3}%
-      \or \numberedsubsubseczzz{#3}%
-      \fi
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% an interface:
-\def\numhead{\genhead N}
-\def\apphead{\genhead A}
-\def\unnmhead{\genhead U}
-
-% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
-% all lower-level sectioning counters to zero.
-%
-% Also set \chaplevelprefix, which we prepend to @float sequence numbers
-% (e.g., figures), q.v.  By default (before any chapter), that is empty.
-\let\chaplevelprefix = \empty
-%
-\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz#1{%
-  % section resetting is \global in case the chapter is in a group, such
-  % as an @include file.
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\chapno by 1
-  %
-  % Used for \float.
-  \gdef\chaplevelprefix{\the\chapno.}%
-  \resetallfloatnos
-  %
-  \message{\putwordChapter\space \the\chapno}%
-  %
-  % Write the actual heading.
-  \chapmacro{#1}{Ynumbered}{\the\chapno}%
-  %
-  % So @section and the like are numbered underneath this chapter.
-  \global\let\section = \numberedsec
-  \global\let\subsection = \numberedsubsec
-  \global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\appendixno by 1
-  \gdef\chaplevelprefix{\appendixletter.}%
-  \resetallfloatnos
-  %
-  \def\appendixnum{\putwordAppendix\space \appendixletter}%
-  \message{\appendixnum}%
-  %
-  \chapmacro{#1}{Yappendix}{\appendixletter}%
-  %
-  \global\let\section = \appendixsec
-  \global\let\subsection = \appendixsubsec
-  \global\let\subsubsection = \appendixsubsubsec
-}
-
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\unnumberedno by 1
-  %
-  % Since an unnumbered has no number, no prefix for figures.
-  \global\let\chaplevelprefix = \empty
-  \resetallfloatnos
-  %
-  % This used to be simply \message{#1}, but TeX fully expands the
-  % argument to \message.  Therefore, if #1 contained @-commands, TeX
-  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
-  % expanded @cite (which turns out to cause errors because \cite is meant
-  % to be executed, not expanded).
-  %
-  % Anyway, we don't want the fully-expanded definition of @cite to appear
-  % as a result of the \message, we just want `@cite' itself.  We use
-  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
-  % simply yielding the contents of <toks register>.  (We also do this for
-  % the toc entries.)
-  \toks0 = {#1}%
-  \message{(\the\toks0)}%
-  %
-  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
-  %
-  \global\let\section = \unnumberedsec
-  \global\let\subsection = \unnumberedsubsec
-  \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\parseargdef\centerchap{%
-  % Well, we could do the following in a group, but that would break
-  % an assumption that \chapmacro is called at the outermost level.
-  % Thus we are safer this way:                --kasal, 24feb04
-  \let\centerparametersmaybe = \centerparameters
-  \unnmhead0{#1}%
-  \let\centerparametersmaybe = \relax
-}
-
-% @top is like @unnumbered.
-\let\top\unnumbered
-
-% Sections.
-\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
-\def\seczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
-}
-
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
-}
-\let\appendixsec\appendixsection
-
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
-}
-
-% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
-}
-
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno}%
-}
-
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno}%
-}
-
-% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynumbered}%
-                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\let\section = \numberedsec
-\let\subsection = \numberedsubsec
-\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% 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.
-%       3) Likewise, headings look best if no \parindent is used, and
-%          if justification is not attempted.  Hence \raggedright.
-
-\def\majorheading{%
-  {\advance\chapheadingskip by 10pt \chapbreak }%
-  \parsearg\chapheadingzzz
-}
-
-\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-\def\chapheadingzzz#1{%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\ptexraggedright
-                    \rmisbold #1\hfill}}%
-  \bigskip \par\penalty 200\relax
-  \suppressfirstparagraphindent
-}
-
-% @heading, @subheading, @subsubheading.
-\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-% Because \domark is called before \chapoddpage, the filler page will
-% get the headings for the next chapter, which is wrong.  But we don't
-% care -- we just disable all headings on the filler page.
-\def\chapoddpage{%
-  \chappager
-  \ifodd\pageno \else
-    \begingroup
-      \evenheadline={\hfil}\evenfootline={\hfil}%
-      \oddheadline={\hfil}\oddfootline={\hfil}%
-      \hbox to 0pt{}%
-      \chappager
-    \endgroup
-  \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}}
-
-\CHAPPAGon
-
-% Chapter opening.
-%
-% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
-% Yappendix, Yomitfromtoc), #3 the chapter number.
-%
-% To test against our argument.
-\def\Ynothingkeyword{Ynothing}
-\def\Yomitfromtockeyword{Yomitfromtoc}
-\def\Yappendixkeyword{Yappendix}
-%
-\def\chapmacro#1#2#3{%
-  % Insert the first mark before the heading break (see notes for \domark).
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
-                        \gdef\thissection{}}%
-  %
-  \def\temptype{#2}%
-  \ifx\temptype\Ynothingkeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{\thischaptername}}%
-  \else\ifx\temptype\Yomitfromtockeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{}}%
-  \else\ifx\temptype\Yappendixkeyword
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\appendixletter}%
-      \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \else
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\the\chapno}%
-      \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \fi\fi\fi
-  %
-  % Output the mark.  Pass it through \safewhatsit, to take care of
-  % the preceding space.
-  \safewhatsit\domark
-  %
-  % Insert the chapter heading break.
-  \pchapsepmacro
-  %
-  % Now the second mark, after the heading break.  No break points
-  % between here and the heading.
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \domark
-  %
-  {%
-    \chapfonts \rmisbold
-    %
-    % Have to define \lastsection before calling \donoderef, because the
-    % xref code eventually uses it.  On the other hand, it has to be called
-    % after \pchapsepmacro, or the headline will change too soon.
-    \gdef\lastsection{#1}%
-    %
-    % Only insert the separating space if we have a chapter/appendix
-    % number, and don't print the unnumbered ``number''.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unnchap}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
-      \def\toctype{omit}%
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
-      \def\toctype{app}%
-    \else
-      \setbox0 = \hbox{#3\enspace}%
-      \def\toctype{numchap}%
-    \fi\fi\fi
-    %
-    % Write the toc entry for this chapter.  Must come before the
-    % \donoderef, because we include the current node name in the toc
-    % entry, and \donoderef resets it to empty.
-    \writetocentry{\toctype}{#1}{#3}%
-    %
-    % For pdftex, we have to write out the node definition (aka, make
-    % the pdfdest) after any page break, but before the actual text has
-    % been typeset.  If the destination for the pdf outline is after the
-    % text, then jumping from the outline may wind up with the text not
-    % being visible, for instance under high magnification.
-    \donoderef{#2}%
-    %
-    % Typeset the actual heading.
-    \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0 \centerparametersmaybe
-          \unhbox0 #1\par}%
-  }%
-  \nobreak\bigskip % no page break after a chapter title
-  \nobreak
-}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerparameters{%
-  \advance\rightskip by 3\rightskip
-  \leftskip = \rightskip
-  \parfillskip = 0pt
-}
-
-
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
-%
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-%
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\ptexraggedright
-                       \rmisbold #1\hfill}}\bigskip \par\nobreak
-}
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
-}
-\def\CHAPFopen{%
-  \global\let\chapmacro=\chfopen
-  \global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.  These macros combine the section number parts and
-% call the generic \sectionheading to do the printing.
-%
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
-% Subsection titles.
-\newskip\subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
-% Subsubsection titles.
-\def\subsubsecheadingskip{\subsecheadingskip}
-\def\subsubsecheadingbreak{\subsecheadingbreak}
-
-
-% Print any size, any type, section title.
-%
-% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
-% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
-% section number.
-%
-\def\seckeyword{sec}
-%
-\def\sectionheading#1#2#3#4{%
-  {%
-    % Switch to the right set of fonts.
-    \csname #2fonts\endcsname \rmisbold
-    %
-    \def\sectionlevel{#2}%
-    \def\temptype{#3}%
-    %
-    % Insert first mark before the heading break (see notes for \domark).
-    \let\prevsectiondefs=\lastsectiondefs
-    \ifx\temptype\Ynothingkeyword
-      \ifx\sectionlevel\seckeyword
-        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
-                              \gdef\thissection{\thissectionname}}%
-      \fi
-    \else\ifx\temptype\Yomitfromtockeyword
-      % Don't redefine \thissection.
-    \else\ifx\temptype\Yappendixkeyword
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \else
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \fi\fi\fi
-    %
-    % Go into vertical mode.  Usually we'll already be there, but we
-    % don't want the following whatsit to end up in a preceding paragraph
-    % if the document didn't happen to have a blank line.
-    \par
-    %
-    % Output the mark.  Pass it through \safewhatsit, to take care of
-    % the preceding space.
-    \safewhatsit\domark
-    %
-    % Insert space above the heading.
-    \csname #2headingbreak\endcsname
-    %
-    % Now the second mark, after the heading break.  No break points
-    % between here and the heading.
-    \let\prevsectiondefs=\lastsectiondefs
-    \domark
-    %
-    % Only insert the space after the number if we have a section number.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unn}%
-      \gdef\lastsection{#1}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      % for @headings -- no section number, don't include in toc,
-      % and don't redefine \lastsection.
-      \setbox0 = \hbox{}%
-      \def\toctype{omit}%
-      \let\sectionlevel=\empty
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{app}%
-      \gdef\lastsection{#1}%
-    \else
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{num}%
-      \gdef\lastsection{#1}%
-    \fi\fi\fi
-    %
-    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
-    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
-    %
-    % Write the node reference (= pdf destination for pdftex).
-    % Again, see comments in \chapmacro.
-    \donoderef{#3}%
-    %
-    % Interline glue will be inserted when the vbox is completed.
-    % That glue will be a valid breakpoint for the page, since it'll be
-    % preceded by a whatsit (usually from the \donoderef, or from the
-    % \writetocentry if there was no node).  We don't want to allow that
-    % break, since then the whatsits could end up on page n while the
-    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
-    \nobreak
-    %
-    % Output the actual section heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0  % zero if no section number
-          \unhbox0 #1}%
-  }%
-  % Add extra space after the heading -- half of whatever came above it.
-  % Don't allow stretch, though.
-  \kern .5 \csname #2headingskip\endcsname
-  %
-  % Do not let the kern be a potential breakpoint, as it would be if it
-  % was followed by glue.
-  \nobreak
-  %
-  % We'll almost certainly start a paragraph next, so don't let that
-  % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)
-  \vskip-\parskip
-  % 
-  % This is purely so the last item on the list is a known \penalty >
-  % 10000.  This is so \startdefun can avoid allowing breakpoints after
-  % section headings.  Otherwise, it would insert a valid breakpoint between:
-  % 
-  %   @section sec-whatever
-  %   @deffn def-whatever
-  \penalty 10001
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.
-%
-% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
-% We append the current node name (if any) and page number as additional
-% arguments for the \{chap,sec,...}entry macros which will eventually
-% read this.  The node name is used in the pdf outlines as the
-% destination to jump to.
-%
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-% But if #1 is `omit', then we don't do anything.  This is used for the
-% table of contents chapter openings themselves.
-%
-\newif\iftocfileopened
-\def\omitkeyword{omit}%
-%
-\def\writetocentry#1#2#3{%
-  \edef\writetoctype{#1}%
-  \ifx\writetoctype\omitkeyword \else
-    \iftocfileopened\else
-      \immediate\openout\tocfile = \jobname.toc
-      \global\tocfileopenedtrue
-    \fi
-    %
-    \iflinks
-      {\atdummies
-       \edef\temp{%
-         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
-       \temp
-      }%
-    \fi
-  \fi
-  %
-  % Tell \shipout to create a pdf destination on each page, if we're
-  % writing pdf.  These are used in the table of contents.  We can't
-  % just write one on every page because the title pages are numbered
-  % 1 and 2 (the page numbers aren't printed), and so are the first
-  % two pages of the document.  Thus, we'd have two destinations named
-  % `1', and two named `2'.
-  \ifpdf \global\pdfmakepagedesttrue \fi
-}
-
-
-% These characters do not print properly in the Computer Modern roman
-% fonts, so we must take special care.  This is more or less redundant
-% with the Texinfo input format setup at the end of this file.
-% 
-\def\activecatcodes{%
-  \catcode`\"=\active
-  \catcode`\$=\active
-  \catcode`\<=\active
-  \catcode`\>=\active
-  \catcode`\\=\active
-  \catcode`\^=\active
-  \catcode`\_=\active
-  \catcode`\|=\active
-  \catcode`\~=\active
-}
-
-
-% Read the toc file, which is essentially Texinfo input.
-\def\readtocfile{%
-  \setupdatafile
-  \activecatcodes
-  \input \tocreadfilename
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Prepare to read what we've written to \tocfile.
-%
-\def\startcontents#1{%
-  % 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\tocfile
-  %
-  % Don't need to put `Contents' or `Short Contents' in the headline.
-  % It is abundantly clear what they are.
-  \chapmacro{#1}{Yomitfromtoc}{}%
-  %
-  \savepageno = \pageno
-  \begingroup                  % Set up to handle contents files properly.
-    \raggedbottom              % Worry more about breakpoints than the bottom.
-    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-    %
-    % Roman numerals for page numbers.
-    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-% redefined for the two-volume lispref.  We always output on
-% \jobname.toc even if this is redefined.
-% 
-\def\tocreadfilename{\jobname.toc}
-
-% Normal (long) toc.
-%
-\def\contents{%
-  \startcontents{\putwordTOC}%
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-    \ifeof 1 \else
-      \pdfmakeoutlines
-    \fi
-    \closein 1
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
-  \startcontents{\putwordShortTOC}%
-    %
-    \let\numchapentry = \shortchapentry
-    \let\appentry = \shortchapentry
-    \let\unnchapentry = \shortunnchapentry
-    % We want a true roman here for the page numbers.
-    \secfonts
-    \let\rm=\shortcontrm \let\bf=\shortcontbf
-    \let\sl=\shortcontsl \let\tt=\shortconttt
-    \rm
-    \hyphenpenalty = 10000
-    \advance\baselineskip by 1pt % Open it up a little.
-    \def\numsecentry##1##2##3##4{}
-    \let\appsecentry = \numsecentry
-    \let\unnsecentry = \numsecentry
-    \let\numsubsecentry = \numsecentry
-    \let\appsubsecentry = \numsecentry
-    \let\unnsubsecentry = \numsecentry
-    \let\numsubsubsecentry = \numsecentry
-    \let\appsubsubsecentry = \numsecentry
-    \let\unnsubsubsecentry = \numsecentry
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \closein 1
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
-%
-\def\shortchaplabel#1{%
-  % This space should be enough, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % But use \hss just in case.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in by \shortchapentry above.)
-  %
-  % We'd like to right-justify chapter numbers, but that looks strange
-  % with appendix letters.  And right-justifying numbers and
-  % left-justifying letters looks strange when there is less than 10
-  % chapters.  Have to read the whole toc once to know how many chapters
-  % there are before deciding ...
-  \hbox to 1em{#1\hss}%
-}
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapters, in the main contents.
-\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3#4{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
-}
-
-% Appendices, in the main contents.
-% Need the word Appendix, and a fixed-size box.
-%
-\def\appendixbox#1{%
-  % We use M since it's probably the widest letter.
-  \setbox0 = \hbox{\putwordAppendix{} M}%
-  \hbox to \wd0{\putwordAppendix{} #1\hss}}
-%
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
-% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
-
-% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
-\let\appsecentry=\numsecentry
-\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsecentry=\numsubsecentry
-\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
-
-% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
-
-% This parameter controls the indentation of the various levels.
-% Same as \defaultparindent.
-\newdimen\tocindent \tocindent = 15pt
-
-% 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 want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
-   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
-   \begingroup
-     \chapentryfonts
-     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-   \endgroup
-   \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
-  \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
-  \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
-  \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% We use the same \entry macro as for the index entries.
-\let\tocentry = \entry
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\def\subsecentryfonts{\textfonts}
-\def\subsubsecentryfonts{\textfonts}
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @tex ... @end tex    escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\envdef\tex{%
-  \setupmarkupstyle{tex}%
-  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
-  \catcode `\%=14
-  \catcode `\+=\other
-  \catcode `\"=\other
-  \catcode `\|=\other
-  \catcode `\<=\other
-  \catcode `\>=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
-  \escapechar=`\\
-  %
-  \let\b=\ptexb
-  \let\bullet=\ptexbullet
-  \let\c=\ptexc
-  \let\,=\ptexcomma
-  \let\.=\ptexdot
-  \let\dots=\ptexdots
-  \let\equiv=\ptexequiv
-  \let\!=\ptexexclam
-  \let\i=\ptexi
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \let\{=\ptexlbrace
-  \let\+=\tabalign
-  \let\}=\ptexrbrace
-  \let\/=\ptexslash
-  \let\*=\ptexstar
-  \let\t=\ptext
-  \expandafter \let\csname top\endcsname=\ptextop  % outer
-  \let\frenchspacing=\plainfrenchspacing
-  %
-  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-  \def\@{@}%
-}
-% There is no need to define \Etex.
-
-% Define @lisp ... @end lisp.
-% @lisp environment forms a group so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments.  \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical.  We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz and
-  % \sectionheading, q.v.
-  \ifnum \lastpenalty=10000 \else
-    \advance\envskipamount by \parskip
-    \endgraf
-    \ifdim\lastskip<\envskipamount
-      \removelastskip
-      % it's not a good place to break if the last penalty was \nobreak
-      % or better ...
-      \ifnum\lastpenalty<10000 \penalty-50 \fi
-      \vskip\envskipamount
-    \fi
-  \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
-% also clear it, so that its embedded environments do the narrowing again.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\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}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
-        \cbl\leaders\hrule height\circthick\hfil\cbr
-        \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\envdef\cartouche{%
-  \ifhmode\par\fi  % can't be in the midst of a paragraph.
-  \startsavinginserts
-  \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 18.4pt % allow for 3pt kerns on either
-                               % side, and for 6pt waste from
-                               % each corner char, and rule thickness
-  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-  % Flag to tell @lisp, etc., not to narrow margin.
-  \let\nonarrowing = t%
-  \vbox\bgroup
-      \baselineskip=0pt\parskip=0pt\lineskip=0pt
-      \carttop
-      \hbox\bgroup
-         \hskip\lskip
-         \vrule\kern3pt
-         \vbox\bgroup
-             \kern3pt
-             \hsize=\cartinner
-             \baselineskip=\normbskip
-             \lineskip=\normlskip
-             \parskip=\normpskip
-             \vskip -\parskip
-             \comment % For explanation, see the end of \def\group.
-}
-\def\Ecartouche{%
-              \ifhmode\par\fi
-             \kern3pt
-         \egroup
-         \kern3pt\vrule
-         \hskip\rskip
-      \egroup
-      \cartbot
-  \egroup
-  \checkinserts
-}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\newdimen\nonfillparindent
-\def\nonfillstart{%
-  \aboveenvbreak
-  \hfuzz = 12pt % Don't be fussy
-  \sepspaces % Make spaces be word-separators rather than space tokens.
-  \let\par = \lisppar % don't ignore blank lines
-  \obeylines % each line of input is a line of output
-  \parskip = 0pt
-  % Turn off paragraph indentation but redefine \indent to emulate
-  % the normal \indent.
-  \nonfillparindent=\parindent
-  \parindent = 0pt
-  \let\indent\nonfillindent
-  %
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-  \let\exdent=\nofillexdent
-}
-
-\begingroup
-\obeyspaces
-% We want to swallow spaces (but not other tokens) after the fake
-% @indent in our nonfill-environments, where spaces are normally
-% active and set to @tie, resulting in them not being ignored after
-% @indent.
-\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
-\gdef\nonfillindentcheck{%
-\ifx\temp %
-\expandafter\nonfillindentgobble%
-\else%
-\leavevmode\nonfillindentbox%
-\fi%
-}%
-\endgroup
-\def\nonfillindentgobble#1{\nonfillindent}
-\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
-
-% If you want all examples etc. small: @set dispenvsize small.
-% If you want even small examples the full size: @set dispenvsize nosmall.
-% This affects the following displayed environments:
-%    @example, @display, @format, @lisp
-%
-\def\smallword{small}
-\def\nosmallword{nosmall}
-\let\SETdispenvsize\relax
-\def\setnormaldispenv{%
-  \ifx\SETdispenvsize\smallword
-    % end paragraph for sake of leading, in case document has no blank
-    % line.  This is redundant with what happens in \aboveenvbreak, but
-    % we need to do it before changing the fonts, and it's inconvenient
-    % to change the fonts afterward.
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-\def\setsmalldispenv{%
-  \ifx\SETdispenvsize\nosmallword
-  \else
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-
-% We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
-  \expandafter\let\csname E#1\endcsname \afterenvbreak
-  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
-}
-
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
-  \makedispenv{#1}{#3}
-  \makedispenv{#2}{#3}
-}
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
-%
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-%
-\maketwodispenvs {lisp}{example}{%
-  \nonfillstart
-  \tt\setupmarkupstyle{example}%
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
-}
-% @display/@smalldisplay: same as @lisp except keep current font.
-%
-\makedispenv {display}{%
-  \nonfillstart
-  \gobble
-}
-
-% @format/@smallformat: same as @display except don't narrow margins.
-%
-\makedispenv{format}{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-
-% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
-\envdef\flushleft{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-\let\Eflushleft = \afterenvbreak
-
-% @flushright.
-%
-\envdef\flushright{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \advance\leftskip by 0pt plus 1fill
-  \gobble
-}
-\let\Eflushright = \afterenvbreak
-
-
-% @raggedright does more-or-less normal line breaking but no right
-% justification.  From plain.tex.
-\envdef\raggedright{%
-  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
-}
-\let\Eraggedright\par
-
-\envdef\raggedleft{%
-  \parindent=0pt \leftskip0pt plus2em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedleft\par
-
-\envdef\raggedcenter{%
-  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedcenter\par
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.  We keep \parskip nonzero in general, since
-% we're doing normal filling.  So, when using \aboveenvbreak and
-% \afterenvbreak, temporarily make \parskip 0.
-%
-\def\quotationstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-  \parsearg\quotationlabel
-}
-
-\envdef\quotation{%
-  \setnormaldispenv
-  \quotationstart
-}
-
-\envdef\smallquotation{%
-  \setsmalldispenv
-  \quotationstart
-}
-\let\Esmallquotation = \Equotation
-
-% We have retained a nonzero parskip for the environment, since we're
-% doing normal filling.
-%
-\def\Equotation{%
-  \par
-  \ifx\quotationauthor\undefined\else
-    % indent a bit.
-    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
-  \fi
-  {\parskip=0pt \afterenvbreak}%
-}
-
-% If we're given an argument, typeset it in bold with a colon after.
-\def\quotationlabel#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty \else
-    {\bf #1: }%
-  \fi
-}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too.  Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
-  \do\ \do\\\do\{\do\}\do\$\do\&%
-  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
-  \do\<\do\>\do\|\do\@\do+\do\"%
-  % Don't do the quotes -- if we do, @set txicodequoteundirected and
-  % @set txicodequotebacktick will not have effect on @verb and
-  % @verbatim, and ?` and !` ligatures won't get disabled.
-  %\do\`\do\'%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=\other}\dospecials}
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
-  \tt  % easiest (and conventionally used) font for verbatim
-  \def\par{\leavevmode\endgraf}%
-  \setupmarkupstyle{verb}%
-  \tabeightspaces
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-\def\starttabbox{\setbox0=\hbox\bgroup}
-%
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabexpand{%
-    \catcode`\^^I=\active
-    \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
-    }%
-  }
-\endgroup
-
-% start the verbatim environment.
-\def\setupverbatim{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
-  \tabexpand
-  \setupmarkupstyle{verbatim}%
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-  \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters.  Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-%    \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
-  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-%     \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%
-\begingroup
-  \catcode`\ =\active
-  \obeylines %
-  % ignore everything up to the first ^^M, that's the newline at the end
-  % of the @verbatim input line itself.  Otherwise we get an extra blank
-  % line in the output.
-  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
-  % We really want {...\end verbatim} in the body of the macro, but
-  % without the active space; thus we have to use \xdef and \gobble.
-\endgroup
-%
-\envdef\verbatim{%
-    \setupverbatim\doverbatim
-}
-\let\Everbatim = \afterenvbreak
-
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-%
-\def\doverbatiminclude#1{%
-  {%
-    \makevalueexpandable
-    \setupverbatim
-    \indexnofonts       % Allow `@@' and other weird things in file names.
-    \input #1
-    \afterenvbreak
-  }%
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
-\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
-%
-\def\insertcopying{%
-  \begingroup
-    \parindent = 0pt  % paragraph indentation looks wrong on title page
-    \scanexp\copyingtext
-  \endgroup
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-\newcount\defunpenalty
-
-% Start the processing of @deffn:
-\def\startdefun{%
-  \ifnum\lastpenalty<10000
-    \medbreak
-    \defunpenalty=10003 % Will keep this @deffn together with the
-                        % following @def command, see below.
-  \else
-    % If there are two @def commands in a row, we'll have a \nobreak,
-    % which is there to keep the function description together with its
-    % header.  But if there's nothing but headers, we need to allow a
-    % break somewhere.  Check specifically for penalty 10002, inserted
-    % by \printdefunline, instead of 10000, since the sectioning
-    % commands also insert a nobreak penalty, and we don't want to allow
-    % a break between a section heading and a defun.
-    %
-    % As a minor refinement, we avoid "club" headers by signalling
-    % with penalty of 10003 after the very first @deffn in the
-    % sequence (see above), and penalty of 10002 after any following
-    % @def command.
-    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
-    %
-    % Similarly, after a section heading, do not allow a break.
-    % But do insert the glue.
-    \medskip  % preceded by discardable penalty, so not a breakpoint
-  \fi
-  %
-  \parindent=0in
-  \advance\leftskip by \defbodyindent
-  \exdentamount=\defbodyindent
-}
-
-\def\dodefunx#1{%
-  % First, check whether we are in the right environment:
-  \checkenv#1%
-  %
-  % As above, allow line break if we have multiple x headers in a row.
-  % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
-  %
-  % And now, it's time to reuse the body of the original defun:
-  \expandafter\gobbledefun#1%
-}
-\def\gobbledefun#1\startdefun{}
-
-% \printdefunline \deffnheader{text}
-%
-\def\printdefunline#1#2{%
-  \begingroup
-    % call \deffnheader:
-    #1#2 \endheader
-    % common ending:
-    \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil
-    \endgraf
-    \nobreak\vskip -\parskip
-    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
-    % Some of the @defun-type tags do not enable magic parentheses,
-    % rendering the following check redundant.  But we don't optimize.
-    \checkparencounts
-  \endgroup
-}
-
-\def\Edefun{\endgraf\medbreak}
-
-% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remaining is to define \deffnheader.
-%
-\def\makedefun#1{%
-  \expandafter\let\csname E#1\endcsname = \Edefun
-  \edef\temp{\noexpand\domakedefun
-    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
-  \temp
-}
-
-% \domakedefun \deffn \deffnx \deffnheader
-%
-% Define \deffn and \deffnx, without parameters.
-% \deffnheader has to be defined explicitly.
-%
-\def\domakedefun#1#2#3{%
-  \envdef#1{%
-    \startdefun
-    \parseargusing\activeparens{\printdefunline#3}%
-  }%
-  \def#2{\dodefunx#1}%
-  \def#3%
-}
-
-%%% Untyped functions:
-
-% @deffn category name args
-\makedefun{deffn}{\deffngeneral{}}
-
-% @deffn category class name args
-\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
-
-% \defopon {category on}class name args
-\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deffngeneral {subind}category name args
-%
-\def\deffngeneral#1#2 #3 #4\endheader{%
-  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
-  \dosubind{fn}{\code{#3}}{#1}%
-  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
-}
-
-%%% Typed functions:
-
-% @deftypefn category type name args
-\makedefun{deftypefn}{\deftypefngeneral{}}
-
-% @deftypeop category class type name args
-\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
-
-% \deftypeopon {category on}class type name args
-\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypefngeneral {subind}category type name args
-%
-\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{fn}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-%%% Typed variables:
-
-% @deftypevr category type var args
-\makedefun{deftypevr}{\deftypecvgeneral{}}
-
-% @deftypecv category class type var args
-\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
-
-% \deftypecvof {category of}class type var args
-\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypecvgeneral {subind}category type var args
-%
-\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{vr}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-%%% Untyped variables:
-
-% @defvr category var args
-\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
-
-% @defcv category class var args
-\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
-
-% \defcvof {category of}class var args
-\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-
-%%% Type:
-% @deftp category name args
-\makedefun{deftp}#1 #2 #3\endheader{%
-  \doind{tp}{\code{#2}}%
-  \defname{#1}{}{#2}\defunargs{#3\unskip}%
-}
-
-% Remaining @defun-like shortcuts:
-\makedefun{defun}{\deffnheader{\putwordDeffunc} }
-\makedefun{defmac}{\deffnheader{\putwordDefmac} }
-\makedefun{defspec}{\deffnheader{\putwordDefspec} }
-\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
-\makedefun{defvar}{\defvrheader{\putwordDefvar} }
-\makedefun{defopt}{\defvrheader{\putwordDefopt} }
-\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod}{\defopon\putwordMethodon}
-\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
-\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
-\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the category, such as "Function".
-% #2 is the return type, if any.
-% #3 is the function name.
-%
-% We are followed by (but not passed) the arguments, if any.
-%
-\def\defname#1#2#3{%
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \advance\leftskip by -\defbodyindent
-  %
-  % How we'll format the type name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \def\temp{#1}%
-  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
-  %
-  % Figure out line sizes for the paragraph shape.
-  % The first line needs space for \box0; but if \rightskip is nonzero,
-  % we need only space for the part of \box0 which exceeds it:
-  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
-  % The continuations:
-  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  % (plain.tex says that \dimen1 should be used only as global.)
-  \parshape 2 0in \dimen0 \defargsindent \dimen2
-  %
-  % Put the type name to the right margin.
-  \noindent
-  \hbox to 0pt{%
-    \hfil\box0 \kern-\hsize
-    % \hsize has to be shortened this way:
-    \kern\leftskip
-    % Intentionally do not respect \rightskip, since we need the space.
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \exdentamount=\defbodyindent
-  {%
-    % defun fonts. We use typewriter by default (used to be bold) because:
-    % . we're printing identifiers, they should be in tt in principle.
-    % . in languages with many accents, such as Czech or French, it's
-    %   common to leave accents off identifiers.  The result looks ok in
-    %   tt, but exceedingly strange in rm.
-    % . we don't want -- and --- to be treated as ligatures.
-    % . this still does not fix the ?` and !` ligatures, but so far no
-    %   one has made identifiers using them :).
-    \df \tt
-    \def\temp{#2}% return value type
-    \ifx\temp\empty\else \tclose{\temp} \fi
-    #3% output function name
-  }%
-  {\rm\enskip}% hskip 0.5 em of \tenrm
-  %
-  \boldbrax
-  % arguments will be output next, if any.
-}
-
-% Print arguments in slanted roman (not ttsl), inconsistently with using
-% tt for the name.  This is because literal text is sometimes needed in
-% the argument list (groff manual), and ttsl and tt are not very
-% distinguishable.  Prevent hyphenation at `-' chars.
-%
-\def\defunargs#1{%
-  % use sl by default (not ttsl),
-  % tt for the names.
-  \df \sl \hyphenchar\font=0
-  %
-  % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  Let's try @var for that.
-  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
-  #1%
-  \sl\hyphenchar\font=45
-}
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
-  \catcode`\(=\active \catcode`\)=\active
-  \catcode`\[=\active \catcode`\]=\active
-  \catcode`\&=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-% Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-{
-  \activeparens
-  \global\let(=\lparen \global\let)=\rparen
-  \global\let[=\lbrack \global\let]=\rbrack
-  \global\let& = \&
-
-  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-  \gdef\magicamp{\let&=\amprm}
-}
-
-\newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
-
-\def\parenfont{%
-  \ifampseen
-    % At the first level, print parens in roman,
-    % otherwise use the default font.
-    \ifnum \parencount=1 \rm \fi
-  \else
-    % The \sf parens (in \boldbrax) actually are a little bolder than
-    % the contained text.  This is especially needed for [ and ] .
-    \sf
-  \fi
-}
-\def\infirstlevel#1{%
-  \ifampseen
-    \ifnum\parencount=1
-      #1%
-    \fi
-  \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
-\def\opnr{%
-  \global\advance\parencount by 1
-  {\parenfont(}%
-  \infirstlevel \bfafterword
-}
-\def\clnr{%
-  {\parenfont)}%
-  \infirstlevel \sl
-  \global\advance\parencount by -1
-}
-
-\newcount\brackcount
-\def\lbrb{%
-  \global\advance\brackcount by 1
-  {\bf[}%
-}
-\def\rbrb{%
-  {\bf]}%
-  \global\advance\brackcount by -1
-}
-
-\def\checkparencounts{%
-  \ifnum\parencount=0 \else \badparencount \fi
-  \ifnum\brackcount=0 \else \badbrackcount \fi
-}
-% these should not use \errmessage; the glibc manual, at least, actually
-% has such constructs (when documenting function pointers).
-\def\badparencount{%
-  \message{Warning: unbalanced parentheses in @def...}%
-  \global\parencount=0
-}
-\def\badbrackcount{%
-  \message{Warning: unbalanced square brackets in @def...}%
-  \global\brackcount=0
-}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
-  \newwrite\macscribble
-  \def\scantokens#1{%
-    \toks0={#1}%
-    \immediate\openout\macscribble=\jobname.tmp
-    \immediate\write\macscribble{\the\toks0}%
-    \immediate\closeout\macscribble
-    \input \jobname.tmp
-  }
-\fi
-
-\def\scanmacro#1{%
-  \begingroup
-    \newlinechar`\^^M
-    \let\xeatspaces\eatspaces
-    % Undo catcode changes of \startcontents and \doprintindex
-    % When called from @insertcopying or (short)caption, we need active
-    % backslash to get it printed correctly.  Previously, we had
-    % \catcode`\\=\other instead.  We'll see whether a problem appears
-    % with macro expansion.                            --kasal, 19aug04
-    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-    % ... and \example
-    \spaceisspace
-    %
-    % Append \endinput to make sure that TeX does not see the ending newline.
-    % I've verified that it is necessary both for e-TeX and for ordinary TeX
-    %                                                  --kasal, 29nov03
-    \scantokens{#1\endinput}%
-  \endgroup
-}
-
-\def\scanexp#1{%
-  \edef\temp{\noexpand\scanmacro{#1}}%
-  \temp
-}
-
-\newcount\paramno   % Count of parameters
-\newtoks\macname    % Macro name
-\newif\ifrecursive  % Is it recursive?
-
-% List of all defined macros in the form
-%    \definedummyword\macro1\definedummyword\macro2...
-% Currently is also contains all @aliases; the list can be split
-% if there is a need.
-\def\macrolist{}
-
-% Add the macro to \macrolist
-\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
-\def\addtomacrolistxxx#1{%
-     \toks0 = \expandafter{\macrolist\definedummyword#1}%
-     \xdef\macrolist{\the\toks0}%
-}
-
-% Utility routines.
-% This does \let #1 = #2, with \csnames; that is,
-%   \let \csname#1\endcsname = \csname#2\endcsname
-% (except of course we have to play expansion games).
-% 
-\def\cslet#1#2{%
-  \expandafter\let
-  \csname#1\expandafter\endcsname
-  \csname#2\endcsname
-}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
-% Non-ASCII encodings make 8-bit characters active, so un-activate
-% them to avoid their expansion.  Must do this non-globally, to
-% confine the change to the current group.
-
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
-  \catcode`\"=\other
-  \catcode`\+=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\@=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\~=\other
-  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
-}
-
-\def\scanargctxt{%
-  \scanctxt
-  \catcode`\\=\other
-  \catcode`\^^M=\other
-}
-
-\def\macrobodyctxt{%
-  \scanctxt
-  \catcode`\{=\other
-  \catcode`\}=\other
-  \catcode`\^^M=\other
-  \usembodybackslash
-}
-
-\def\macroargctxt{%
-  \scanctxt
-  \catcode`\\=\other
-}
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
-  \getargs{#1}%           now \macname is the macname and \argl the arglist
-  \ifx\argl\empty       % no arguments
-     \paramno=0%
-  \else
-     \expandafter\parsemargdef \argl;%
-  \fi
-  \if1\csname ismacro.\the\macname\endcsname
-     \message{Warning: redefining \the\macname}%
-  \else
-     \expandafter\ifx\csname \the\macname\endcsname \relax
-     \else \errmessage{Macro name \the\macname\space already defined}\fi
-     \global\cslet{macsave.\the\macname}{\the\macname}%
-     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
-     \addtomacrolist{\the\macname}%
-  \fi
-  \begingroup \macrobodyctxt
-  \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody
-  \fi}
-
-\parseargdef\unmacro{%
-  \if1\csname ismacro.#1\endcsname
-    \global\cslet{#1}{macsave.#1}%
-    \global\expandafter\let \csname ismacro.#1\endcsname=0%
-    % Remove the macro name from \macrolist:
-    \begingroup
-      \expandafter\let\csname#1\endcsname \relax
-      \let\definedummyword\unmacrodo
-      \xdef\macrolist{\macrolist}%
-    \endgroup
-  \else
-    \errmessage{Macro #1 not defined}%
-  \fi
-}
-
-% Called by \do from \dounmacro on each macro.  The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
-  \ifx #1\relax
-    % remove this
-  \else
-    \noexpand\definedummyword \noexpand#1%
-  \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
-% That gets used by \mbodybackslash (above).
-
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX:  let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\def\parsemargdefxxx#1,{%
-  \if#1;\let\next=\relax
-  \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1%
-    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
-    \edef\paramlist{\paramlist\hash\the\paramno,}%
-  \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-\def\defmacro{%
-  \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
-    \fi
-  \else
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-        \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \expandafter\noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-      \csname\the\macname xxx\endcsname
-      \paramlist{%
-          \egroup
-          \noexpand\norecurse{\the\macname}%
-          \noexpand\scanmacro{\temp}\egroup}%
-    \fi
-  \fi}
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {.  If so it reads up to the closing }, if not, it reads the whole
-% line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
-  \ifx\nchar\bgroup\else
-    \expandafter\parsearg
-  \fi \macnamexxx}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
-\def\alias{\parseargusing\obeyspaces\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{%
-  {%
-    \expandafter\let\obeyedspace=\empty
-    \addtomacrolist{#1}%
-    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
-  }%
-  \next
-}
-
-
-\message{cross references,}
-
-\newwrite\auxfile
-\newif\ifhavexrefs    % True if xref values are known.
-\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
-
-% @node's only job in TeX is to define \lastnode, which is used in
-% cross-references.  The @node line might or might not have commas, and
-% might or might not have spaces before the first comma, like:
-% @node foo , bar , ...
-% We don't want such trailing spaces in the node name.
-%
-\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
-%
-% also remove a trailing comma, in case of something like this:
-% @node Help-Cross,  ,  , Cross-refs
-\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
-
-\let\nwnode=\node
-\let\lastnode=\empty
-
-% Write a cross-reference definition for the current node.  #1 is the
-% type (Ynumbered, Yappendix, Ynothing).
-%
-\def\donoderef#1{%
-  \ifx\lastnode\empty\else
-    \setref{\lastnode}{#1}%
-    \global\let\lastnode=\empty
-  \fi
-}
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-%
-\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
-%                 or the anchor name.
-% 2) NAME-snt   - section number and type, passed as the SNT arg, or
-%                 empty for anchors.
-% 3) NAME-pg    - the page number.
-%
-% This is called from \donoderef, \anchor, and \dofloat.  In the case of
-% floats, there is an additional part, which is not written here:
-% 4) NAME-lof   - the text as it should appear in a @listoffloats.
-%
-\def\setref#1#2{%
-  \pdfmkdest{#1}%
-  \iflinks
-    {%
-      \atdummies  % preserve commands, but don't expand them
-      \edef\writexrdef##1##2{%
-       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
-         ##1}{##2}}% these are parameters of \writexrdef
-      }%
-      \toks0 = \expandafter{\lastsection}%
-      \immediate \writexrdef{title}{\the\toks0 }%
-      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
-    }%
-  \fi
-}
-
-% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual.  All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
-  \unsepspaces
-  \def\printedmanual{\ignorespaces #5}%
-  \def\printedrefname{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual\unskip}%
-  \setbox0=\hbox{\printedrefname\unskip}%
-  \ifdim \wd0 = 0pt
-    % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
-      % Use the node name inside the square brackets.
-      \def\printedrefname{\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
-        % It is in another manual, so we don't have it.
-        \def\printedrefname{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We know the real title if we have the xref values.
-          \def\printedrefname{\refx{#1-title}{}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printedrefname{\ignorespaces #1}%
-        \fi%
-      \fi
-    \fi
-  \fi
-  %
-  % Make link in pdf output.
-  \ifpdf
-    {\indexnofonts
-     \turnoffactive
-     % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.
-     \getfilename{#4}%
-     %
-     % See comments at \activebackslashdouble.
-     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
-      \backslashparens\pdfxrefdest}%
-     %
-     \leavevmode
-     \startlink attr{/Border [0 0 0]}%
-     \ifnum\filenamelength>0
-       goto file{\the\filename.pdf} name{\pdfxrefdest}%
-     \else
-       goto name{\pdfmkpgn{\pdfxrefdest}}%
-     \fi
-    }%
-    \setcolor{\linkcolor}%
-  \fi
-  %
-  % Float references are printed completely differently: "Figure 1.2"
-  % instead of "[somenode], p.3".  We distinguish them by the
-  % LABEL-title being set to a magic string.
-  {%
-    % Have to otherify everything special to allow the \csname to
-    % include an _ in the xref name, etc.
-    \indexnofonts
-    \turnoffactive
-    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
-      \csname XR#1-title\endcsname
-  }%
-  \iffloat\Xthisreftitle
-    % If the user specified the print name (third arg) to the ref,
-    % print it instead of our usual "Figure 1.2".
-    \ifdim\wd0 = 0pt
-      \refx{#1-snt}{}%
-    \else
-      \printedrefname
-    \fi
-    %
-    % if the user also gave the printed manual name (fifth arg), append
-    % "in MANUALNAME".
-    \ifdim \wd1 > 0pt
-      \space \putwordin{} \cite{\printedmanual}%
-    \fi
-  \else
-    % node/anchor (non-float) references.
-    %
-    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-    % insert empty discretionaries after hyphens, which means that it will
-    % not find a line break at a hyphen in a node names.  Since some manuals
-    % are best written with fairly long node names, containing hyphens, this
-    % is a loss.  Therefore, we give the text of the node name again, so it
-    % is as if TeX is seeing it for the first time.
-    \ifdim \wd1 > 0pt
-      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
-    \else
-      % _ (for example) has to be the character _ for the purposes of the
-      % control sequence corresponding to the node, but it has to expand
-      % into the usual \leavevmode...\vrule stuff for purposes of
-      % printing. So we \turnoffactive for the \refx-snt, back on for the
-      % printing, back off for the \refx-pg.
-      {\turnoffactive
-       % Only output a following space if the -snt ref is nonempty; for
-       % @unnumbered and @anchor, it won't be.
-       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
-       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
-      }%
-      % output the `[mynode]' via a macro so it can be overridden.
-      \xrefprintnodename\printedrefname
-      %
-      % But we always want a comma and a space:
-      ,\space
-      %
-      % output the `page 3'.
-      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% This macro is called from \xrefX for the `[nodename]' part of xref
-% output.  It's a separate macro only so it can be changed more easily,
-% since square brackets don't work well in some documents.  Particularly
-% one that Bob is working on :).
-%
-\def\xrefprintnodename#1{[#1]}
-
-% Things referred to by \setref.
-%
-\def\Ynothing{}
-\def\Yomitfromtoc{}
-\def\Ynumbered{%
-  \ifnum\secno=0
-    \putwordChapter@tie \the\chapno
-  \else \ifnum\subsecno=0
-    \putwordSection@tie \the\chapno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-\def\Yappendix{%
-  \ifnum\secno=0
-     \putwordAppendix@tie @char\the\appendixno{}%
-  \else \ifnum\subsecno=0
-     \putwordSection@tie @char\the\appendixno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie
-      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
-  {%
-    \indexnofonts
-    \otherbackslash
-    \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname XR#1\endcsname
-  }%
-  \ifx\thisrefX\relax
-    % If not defined, say something at least.
-    \angleleft un\-de\-fined\angleright
-    \iflinks
-      \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
-      \else
-        \ifwarnedxrefs\else
-          \global\warnedxrefstrue
-          \message{Cross reference values unknown; you must run TeX again.}%
-        \fi
-      \fi
-    \fi
-  \else
-    % It's defined, so just use it.
-    \thisrefX
-  \fi
-  #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.  Usually it's
-% just a \def (we prepend XR to the control sequence name to avoid
-% collisions).  But if this is a float type, we have more work to do.
-%
-\def\xrdef#1#2{%
-  {% The node name might contain 8-bit characters, which in our current
-   % implementation are changed to commands like @'e.  Don't let these
-   % mess up the control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safexrefname{#1}%
-  }%
-  %
-  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
-  %
-  % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR\safexrefname\endcsname
-    % it was a float, and we have the (safe) float type in \iffloattype.
-    \expandafter\let\expandafter\floatlist
-      \csname floatlist\iffloattype\endcsname
-    %
-    % Is this the first time we've seen this float type?
-    \expandafter\ifx\floatlist\relax
-      \toks0 = {\do}% yes, so just \do
-    \else
-      % had it before, so preserve previous elements in list.
-      \toks0 = \expandafter{\floatlist\do}%
-    \fi
-    %
-    % Remember this xref in the control sequence \floatlistFLOATTYPE,
-    % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
-      {\safexrefname}}%
-  \fi
-}
-
-% Read the last existing aux file, if any.  No error if none exists.
-%
-\def\tryauxfile{%
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \readdatafile{aux}%
-    \global\havexrefstrue
-  \fi
-  \closein 1
-}
-
-\def\setupdatafile{%
-  \catcode`\^^@=\other
-  \catcode`\^^A=\other
-  \catcode`\^^B=\other
-  \catcode`\^^C=\other
-  \catcode`\^^D=\other
-  \catcode`\^^E=\other
-  \catcode`\^^F=\other
-  \catcode`\^^G=\other
-  \catcode`\^^H=\other
-  \catcode`\^^K=\other
-  \catcode`\^^L=\other
-  \catcode`\^^N=\other
-  \catcode`\^^P=\other
-  \catcode`\^^Q=\other
-  \catcode`\^^R=\other
-  \catcode`\^^S=\other
-  \catcode`\^^T=\other
-  \catcode`\^^U=\other
-  \catcode`\^^V=\other
-  \catcode`\^^W=\other
-  \catcode`\^^X=\other
-  \catcode`\^^Z=\other
-  \catcode`\^^[=\other
-  \catcode`\^^\=\other
-  \catcode`\^^]=\other
-  \catcode`\^^^=\other
-  \catcode`\^^_=\other
-  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
-  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
-  % supported in the main text, it doesn't seem desirable.  Furthermore,
-  % that is not enough: for node names that actually contain a ^
-  % character, we would end up writing a line like this: 'xrdef {'hat
-  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
-  % argument, and \hat is not an expandable control sequence.  It could
-  % all be worked out, but why?  Either we support ^^ or we don't.
-  %
-  % The other change necessary for this was to define \auxhat:
-  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
-  % and then to call \auxhat in \setq.
-  %
-  \catcode`\^=\other
-  %
-  % Special characters.  Should be turned off anyway, but...
-  \catcode`\~=\other
-  \catcode`\[=\other
-  \catcode`\]=\other
-  \catcode`\"=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\$=\other
-  \catcode`\#=\other
-  \catcode`\&=\other
-  \catcode`\%=\other
-  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
-  %
-  % This is to support \ in node names and titles, since the \
-  % characters end up in a \csname.  It's easier than
-  % leaving it active and making its active definition an actual \
-  % character.  What I don't understand is why it works in the *value*
-  % of the xrdef.  Seems like it should be a catcode12 \, and that
-  % should not typeset properly.  But it works, so I'm moving on for
-  % now.  --karl, 15jan04.
-  \catcode`\\=\other
-  %
-  % Make the characters 128-255 be printing characters.
-  {%
-    \count1=128
-    \def\loop{%
-      \catcode\count1=\other
-      \advance\count1 by 1
-      \ifnum \count1<256 \loop \fi
-    }%
-  }%
-  %
-  % @ is our escape character in .aux files, and we need braces.
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\@=0
-}
-
-\def\readdatafile#1{%
-\begingroup
-  \setupdatafile
-  \input\jobname.#1
-\endgroup}
-
-
-\message{insertions,}
-% including footnotes.
-
-\newcount \footnoteno
-
-% 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. (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.
-\let\footnotestyle=\comment
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \global\advance\footnoteno by \@ne
-  \edef\thisfootno{$^{\the\footnoteno}$}%
-  %
-  % In case the footnote comes at the end of a sentence, preserve the
-  % extra spacing after we do the footnote number.
-  \let\@sf\empty
-  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
-  %
-  % Remove inadvertent blank space before typesetting the footnote number.
-  \unskip
-  \thisfootno\@sf
-  \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter.  Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset (and anything else that uses
-% \parseargline) fails inside footnotes because the tokens are fixed when
-% the footnote is read.  --karl, 16nov96.
-%
-\gdef\dofootnote{%
-  \insert\footins\bgroup
-  % We want to typeset this text as a normal paragraph, even if the
-  % footnote reference occurs in (for example) a display environment.
-  % So reset some parameters.
-  \hsize=\pagewidth
-  \interlinepenalty\interfootnotelinepenalty
-  \splittopskip\ht\strutbox % top baseline for broken footnotes
-  \splitmaxdepth\dp\strutbox
-  \floatingpenalty\@MM
-  \leftskip\z@skip
-  \rightskip\z@skip
-  \spaceskip\z@skip
-  \xspaceskip\z@skip
-  \parindent\defaultparindent
-  %
-  \smallfonts \rm
-  %
-  % Because we use hanging indentation in footnotes, a @noindent appears
-  % to exdent this text, so make it be a no-op.  makeinfo does not use
-  % hanging indentation so @noindent can still be needed within footnote
-  % text after an @example or the like (not that this is good style).
-  \let\noindent = \relax
-  %
-  % Hang the footnote text off the number.  Use \everypar in case the
-  % footnote extends for more than one paragraph.
-  \everypar = {\hang}%
-  \textindent{\thisfootno}%
-  %
-  % Don't crash into the line above the footnote text.  Since this
-  % expands into a box, it must come within the paragraph, lest it
-  % provide a place where TeX can split the footnote.
-  \footstrut
-  \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% In case a @footnote appears in a vbox, save the footnote text and create
-% the real \insert just after the vbox finished.  Otherwise, the insertion
-% would be lost.
-% Similarly, if a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is finished.
-% And the same can be done for other insert classes.  --kasal, 16nov03.
-
-% Replace the \insert primitive by a cheating macro.
-% Deeper inside, just make sure that the saved insertions are not spilled
-% out prematurely.
-%
-\def\startsavinginserts{%
-  \ifx \insert\ptexinsert
-    \let\insert\saveinsert
-  \else
-    \let\checkinserts\relax
-  \fi
-}
-
-% This \insert replacement works for both \insert\footins{foo} and
-% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
-%
-\def\saveinsert#1{%
-  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
-  \afterassignment\next
-  % swallow the left brace
-  \let\temp =
-}
-\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
-\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
-
-\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
-
-\def\placesaveins#1{%
-  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
-    {\box#1}%
-}
-
-% eat @SAVE -- beware, all of them have catcode \other:
-{
-  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
-  \gdef\gobblesave @SAVE{}
-}
-
-% initialization:
-\def\newsaveins #1{%
-  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
-  \next
-}
-\def\newsaveinsX #1{%
-  \csname newbox\endcsname #1%
-  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
-    \checksaveins #1}%
-}
-
-% initialize:
-\let\checkinserts\empty
-\newsaveins\footins
-\newsaveins\margin
-
-
-% @image.  We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front.  If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
-  % Do not bother showing banner with epsf.tex v2.7k (available in
-  % doc/epsf.tex and on ctan).
-  \def\epsfannounce{\toks0 = }%
-  \input epsf.tex
-\fi
-\closein 1
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
-  work.  It is also included in the Texinfo distribution, or you can get
-  it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
-  \ifx\epsfbox\undefined
-    \ifwarnednoepsf \else
-      \errhelp = \noepsfhelp
-      \errmessage{epsf.tex not found, images will be ignored}%
-      \global\warnednoepsftrue
-    \fi
-  \else
-    \imagexxx #1,,,,,\finish
-  \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
-  \catcode`\^^M = 5     % in case we're inside an example
-  \normalturnoffactive  % allow _ et al. in names
-  % If the image is by itself, center it.
-  \ifvmode
-    \imagevmodetrue
-    \nobreak\medskip
-    % Usually we'll have text after the image which will insert
-    % \parskip glue, so insert it here too to equalize the space
-    % above and below.
-    \nobreak\vskip\parskip
-    \nobreak
-  \fi
-  %
-  % Leave vertical mode so that indentation from an enclosing
-  % environment such as @quotation is respected.  On the other hand, if
-  % it's at the top level, we don't want the normal paragraph indentation.
-  \noindent
-  %
-  % Output the image.
-  \ifpdf
-    \dopdfimage{#1}{#2}{#3}%
-  \else
-    % \epsfbox itself resets \epsf?size at each figure.
-    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
-    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
-    \epsfbox{#1.eps}%
-  \fi
-  %
-  \ifimagevmode \medskip \fi  % space after the standalone image
-\endgroup}
-
-
-% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
-% etc.  We don't actually implement floating yet, we always include the
-% float "here".  But it seemed the best name for the future.
-%
-\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
-
-% There may be a space before second and/or third parameter; delete it.
-\def\eatcommaspace#1, {#1,}
-
-% #1 is the optional FLOATTYPE, the text label for this float, typically
-% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
-% this float will not be numbered and cannot be referred to.
-%
-% #2 is the optional xref label.  Also must be present for the float to
-% be referable.
-%
-% #3 is the optional positioning argument; for now, it is ignored.  It
-% will somehow specify the positions allowed to float to (here, top, bottom).
-%
-% We keep a separate counter for each FLOATTYPE, which we reset at each
-% chapter-level command.
-\let\resetallfloatnos=\empty
-%
-\def\dofloat#1,#2,#3,#4\finish{%
-  \let\thiscaption=\empty
-  \let\thisshortcaption=\empty
-  %
-  % don't lose footnotes inside @float.
-  %
-  % BEWARE: when the floats start float, we have to issue warning whenever an
-  % insert appears inside a float which could possibly float. --kasal, 26may04
-  %
-  \startsavinginserts
-  %
-  % We can't be used inside a paragraph.
-  \par
-  %
-  \vtop\bgroup
-    \def\floattype{#1}%
-    \def\floatlabel{#2}%
-    \def\floatloc{#3}% we do nothing with this yet.
-    %
-    \ifx\floattype\empty
-      \let\safefloattype=\empty
-    \else
-      {%
-        % the floattype might have accents or other special characters,
-        % but we need to use it in a control sequence name.
-        \indexnofonts
-        \turnoffactive
-        \xdef\safefloattype{\floattype}%
-      }%
-    \fi
-    %
-    % If label is given but no type, we handle that as the empty type.
-    \ifx\floatlabel\empty \else
-      % We want each FLOATTYPE to be numbered separately (Figure 1,
-      % Table 1, Figure 2, ...).  (And if no label, no number.)
-      %
-      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
-      \global\advance\floatno by 1
-      %
-      {%
-        % This magic value for \lastsection is output by \setref as the
-        % XREFLABEL-title value.  \xrefX uses it to distinguish float
-        % labels (which have a completely different output format) from
-        % node and anchor labels.  And \xrdef uses it to construct the
-        % lists of floats.
-        %
-        \edef\lastsection{\floatmagic=\safefloattype}%
-        \setref{\floatlabel}{Yfloat}%
-      }%
-    \fi
-    %
-    % start with \parskip glue, I guess.
-    \vskip\parskip
-    %
-    % Don't suppress indentation if a float happens to start a section.
-    \restorefirstparagraphindent
-}
-
-% we have these possibilities:
-% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
-% @float Foo,lbl & no caption:    Foo 1.1
-% @float Foo & @caption{Cap}:     Foo: Cap
-% @float Foo & no caption:        Foo
-% @float ,lbl & Caption{Cap}:     1.1: Cap
-% @float ,lbl & no caption:       1.1
-% @float & @caption{Cap}:         Cap
-% @float & no caption:
-%
-\def\Efloat{%
-    \let\floatident = \empty
-    %
-    % In all cases, if we have a float type, it comes first.
-    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
-    %
-    % If we have an xref label, the number comes next.
-    \ifx\floatlabel\empty \else
-      \ifx\floattype\empty \else % if also had float type, need tie first.
-        \appendtomacro\floatident{\tie}%
-      \fi
-      % the number.
-      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
-    \fi
-    %
-    % Start the printed caption with what we've constructed in
-    % \floatident, but keep it separate; we need \floatident again.
-    \let\captionline = \floatident
-    %
-    \ifx\thiscaption\empty \else
-      \ifx\floatident\empty \else
-       \appendtomacro\captionline{: }% had ident, so need a colon between
-      \fi
-      %
-      % caption text.
-      \appendtomacro\captionline{\scanexp\thiscaption}%
-    \fi
-    %
-    % If we have anything to print, print it, with space before.
-    % Eventually this needs to become an \insert.
-    \ifx\captionline\empty \else
-      \vskip.5\parskip
-      \captionline
-      %
-      % Space below caption.
-      \vskip\parskip
-    \fi
-    %
-    % If have an xref label, write the list of floats info.  Do this
-    % after the caption, to avoid chance of it being a breakpoint.
-    \ifx\floatlabel\empty \else
-      % Write the text that goes in the lof to the aux file as
-      % \floatlabel-lof.  Besides \floatident, we include the short
-      % caption if specified, else the full caption if specified, else nothing.
-      {%
-        \atdummies
-        %
-        % since we read the caption text in the macro world, where ^^M
-        % is turned into a normal character, we have to scan it back, so
-        % we don't write the literal three characters "^^M" into the aux file.
-       \scanexp{%
-         \xdef\noexpand\gtemp{%
-           \ifx\thisshortcaption\empty
-             \thiscaption
-           \else
-             \thisshortcaption
-           \fi
-         }%
-       }%
-        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
-         \ifx\gtemp\empty \else : \gtemp \fi}}%
-      }%
-    \fi
-  \egroup  % end of \vtop
-  %
-  % place the captured inserts
-  %
-  % BEWARE: when the floats start floating, we have to issue warning
-  % whenever an insert appears inside a float which could possibly
-  % float. --kasal, 26may04
-  %
-  \checkinserts
-}
-
-% Append the tokens #2 to the definition of macro #1, not expanding either.
-%
-\def\appendtomacro#1#2{%
-  \expandafter\def\expandafter#1\expandafter{#1#2}%
-}
-
-% @caption, @shortcaption
-%
-\def\caption{\docaption\thiscaption}
-\def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
-
-% The parameter is the control sequence identifying the counter we are
-% going to use.  Create it if it doesn't exist and assign it to \floatno.
-\def\getfloatno#1{%
-  \ifx#1\relax
-      % Haven't seen this figure type before.
-      \csname newcount\endcsname #1%
-      %
-      % Remember to reset this floatno at the next chap.
-      \expandafter\gdef\expandafter\resetallfloatnos
-        \expandafter{\resetallfloatnos #1=0 }%
-  \fi
-  \let\floatno#1%
-}
-
-% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
-% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
-% first read the @float command.
-%
-\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
-
-% Magic string used for the XREFLABEL-title value, so \xrefX can
-% distinguish floats from other xref types.
-\def\floatmagic{!!float!!}
-
-% #1 is the control sequence we are passed; we expand into a conditional
-% which is true if #1 represents a float ref.  That is, the magic
-% \lastsection value which we \setref above.
-%
-\def\iffloat#1{\expandafter\doiffloat#1==\finish}
-%
-% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
-% (safe) float type for this float.  We set \iffloattype to #2.
-%
-\def\doiffloat#1=#2=#3\finish{%
-  \def\temp{#1}%
-  \def\iffloattype{#2}%
-  \ifx\temp\floatmagic
-}
-
-% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-%
-\parseargdef\listoffloats{%
-  \def\floattype{#1}% floattype
-  {%
-    % the floattype might have accents or other special characters,
-    % but we need to use it in a control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safefloattype{\floattype}%
-  }%
-  %
-  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
-  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
-    \ifhavexrefs
-      % if the user said @listoffloats foo but never @float foo.
-      \message{\linenumber No `\safefloattype' floats to list.}%
-    \fi
-  \else
-    \begingroup
-      \leftskip=\tocindent  % indent these entries like a toc
-      \let\do=\listoffloatsdo
-      \csname floatlist\safefloattype\endcsname
-    \endgroup
-  \fi
-}
-
-% This is called on each entry in a list of floats.  We're passed the
-% xref label, in the form LABEL-title, which is how we save it in the
-% aux file.  We strip off the -title and look up \XRLABEL-lof, which
-% has the text we're supposed to typeset here.
-%
-% Figures without xref labels will not be included in the list (since
-% they won't appear in the aux file).
-%
-\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
-\def\listoffloatsdoentry#1-title\finish{{%
-  % Can't fully expand XR#1-lof because it can contain anything.  Just
-  % pass the control sequence.  On the other hand, XR#1-pg is just the
-  % page number, and we want to fully expand that so we can get a link
-  % in pdf output.
-  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
-  %
-  % use the same \entry macro we use to generate the TOC and index.
-  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
-  \writeentry
-}}
-
-
-\message{localization,}
-
-% For single-language documents, @documentlanguage is usually given very
-% early, just after @documentencoding.  Single argument is the language
-% (de) or locale (de_DE) abbreviation.
-%
-{
-  \catcode`\_ = \active
-  \globaldefs=1
-\parseargdef\documentlanguage{\begingroup
-  \let_=\normalunderscore  % normal _ character for filenames
-  \tex % read txi-??.tex file in plain TeX.
-    % Read the file by the name they passed if it exists.
-    \openin 1 txi-#1.tex
-    \ifeof 1
-      \documentlanguagetrywithoutunderscore{#1_\finish}%
-    \else
-      \globaldefs = 1  % everything in the txi-LL files needs to persist
-      \input txi-#1.tex
-    \fi
-    \closein 1
-  \endgroup % end raw TeX
-\endgroup}
-}
-%
-% If they passed de_DE, and txi-de_DE.tex doesn't exist,
-% try txi-de.tex.
-% 
-\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
-  \openin 1 txi-#1.tex
-  \ifeof 1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-  \else
-    \input txi-#1.tex
-  \fi
-  \closein 1
-}
-%
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  Putting it in the current
-directory should work if nowhere else does.}
-
-% This macro is called from txi-??.tex files; the first argument is the
-% \language name to set (without the "\lang@" prefix), the second and
-% third args are \{left,right}hyphenmin.
-% 
-% The language names to pass are determined when the format is built.
-% See the etex.log file created at that time, e.g.,
-% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
-% 
-% With TeX Live 2008, etex now includes hyphenation patterns for all
-% available languages.  This means we can support hyphenation in
-% Texinfo, at least to some extent.  (This still doesn't solve the
-% accented characters problem.)
-% 
-\catcode`@=11
-\def\txisetlanguage#1#2#3{%
-  % do not set the language if the name is undefined in the current TeX.
-  \expandafter\ifx\csname lang@#1\endcsname \relax
-    \message{no patterns for #1}%
-  \else
-    \global\language = \csname lang@#1\endcsname
-  \fi
-  % but there is no harm in adjusting the hyphenmin values regardless.
-  \global\lefthyphenmin = #2\relax
-  \global\righthyphenmin = #3\relax
-}
-
-% Helpers for encodings.
-% Set the catcode of characters 128 through 255 to the specified number.
-%
-\def\setnonasciicharscatcode#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \global\catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-\def\setnonasciicharscatcodenonglobal#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-% @documentencoding sets the definition of non-ASCII characters
-% according to the specified encoding.
-%
-\parseargdef\documentencoding{%
-  % Encoding being declared for the document.
-  \def\declaredencoding{\csname #1.enc\endcsname}%
-  %
-  % Supported encodings: names converted to tokens in order to be able
-  % to compare them with \ifx.
-  \def\ascii{\csname US-ASCII.enc\endcsname}%
-  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
-  \def\latone{\csname ISO-8859-1.enc\endcsname}%
-  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
-  \def\utfeight{\csname UTF-8.enc\endcsname}%
-  %
-  \ifx \declaredencoding \ascii
-     \asciichardefs
-  %
-  \else \ifx \declaredencoding \lattwo
-     \setnonasciicharscatcode\active
-     \lattwochardefs
-  %
-  \else \ifx \declaredencoding \latone 
-     \setnonasciicharscatcode\active
-     \latonechardefs
-  %
-  \else \ifx \declaredencoding \latnine
-     \setnonasciicharscatcode\active
-     \latninechardefs
-  %
-  \else \ifx \declaredencoding \utfeight
-     \setnonasciicharscatcode\active
-     \utfeightchardefs
-  %
-  \else 
-    \message{Unknown document encoding #1, ignoring.}%
-  %
-  \fi % utfeight
-  \fi % latnine
-  \fi % latone
-  \fi % lattwo
-  \fi % ascii
-}
-
-% A message to be logged when using a character that isn't available
-% the default font encoding (OT1).
-% 
-\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
-
-% Take account of \c (plain) vs. \, (Texinfo) difference.
-\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
-
-% First, make active non-ASCII characters in order for them to be
-% correctly categorized when TeX reads the replacement text of
-% macros containing the character definitions.
-\setnonasciicharscatcode\active
-%
-% Latin1 (ISO-8859-1) character definitions.
-\def\latonechardefs{%
-  \gdef^^a0{~} 
-  \gdef^^a1{\exclamdown}
-  \gdef^^a2{\missingcharmsg{CENT SIGN}} 
-  \gdef^^a3{{\pounds}}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\missingcharmsg{YEN SIGN}}
-  \gdef^^a6{\missingcharmsg{BROKEN BAR}} 
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}} 
-  \gdef^^a9{\copyright} 
-  \gdef^^aa{\ordf}
-  \gdef^^ab{\guillemetleft}
-  \gdef^^ac{$\lnot$}
-  \gdef^^ad{\-} 
-  \gdef^^ae{\registeredsymbol} 
-  \gdef^^af{\={}}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{$\pm$}
-  \gdef^^b2{$^2$}
-  \gdef^^b3{$^3$}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{$\mu$}
-  \gdef^^b6{\P}
-  %
-  \gdef^^b7{$^.$}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{$^1$}
-  \gdef^^ba{\ordm}
-  %
-  \gdef^^bb{\guilletright}
-  \gdef^^bc{$1\over4$}
-  \gdef^^bd{$1\over2$}
-  \gdef^^be{$3\over4$}
-  \gdef^^bf{\questiondown}
-  %
-  \gdef^^c0{\`A}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\~A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\ringaccent A} 
-  \gdef^^c6{\AE}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\`E}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\^E}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\`I}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\"I}
-  %
-  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
-  \gdef^^d1{\~N}
-  \gdef^^d2{\`O}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\~O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\O}
-  \gdef^^d9{\`U}
-  \gdef^^da{\'U}
-  \gdef^^db{\^U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\`a}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\~a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\ringaccent a}
-  \gdef^^e6{\ae}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\`e}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\^e}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\`{\dotless i}}
-  \gdef^^ed{\'{\dotless i}}
-  \gdef^^ee{\^{\dotless i}}
-  \gdef^^ef{\"{\dotless i}}
-  %
-  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
-  \gdef^^f1{\~n}
-  \gdef^^f2{\`o}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\~o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\o}
-  \gdef^^f9{\`u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\^u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
-  \gdef^^ff{\"y}
-}
-
-% Latin9 (ISO-8859-15) encoding character definitions.
-\def\latninechardefs{%
-  % Encoding is almost identical to Latin1.
-  \latonechardefs
-  %
-  \gdef^^a4{\euro}
-  \gdef^^a6{\v S}
-  \gdef^^a8{\v s}
-  \gdef^^b4{\v Z}
-  \gdef^^b8{\v z}
-  \gdef^^bc{\OE}
-  \gdef^^bd{\oe}
-  \gdef^^be{\"Y}
-}
-
-% Latin2 (ISO-8859-2) character definitions.
-\def\lattwochardefs{%
-  \gdef^^a0{~}
-  \gdef^^a1{\ogonek{A}}
-  \gdef^^a2{\u{}}
-  \gdef^^a3{\L}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\v L}
-  \gdef^^a6{\'S}
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}}
-  \gdef^^a9{\v S}
-  \gdef^^aa{\cedilla S}
-  \gdef^^ab{\v T}
-  \gdef^^ac{\'Z}
-  \gdef^^ad{\-}
-  \gdef^^ae{\v Z}
-  \gdef^^af{\dotaccent Z}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{\ogonek{a}}
-  \gdef^^b2{\ogonek{ }}
-  \gdef^^b3{\l}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{\v l}
-  \gdef^^b6{\'s}
-  \gdef^^b7{\v{}}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{\v s}
-  \gdef^^ba{\cedilla s}
-  \gdef^^bb{\v t}
-  \gdef^^bc{\'z}
-  \gdef^^bd{\H{}}
-  \gdef^^be{\v z}
-  \gdef^^bf{\dotaccent z}
-  %
-  \gdef^^c0{\'R}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\u A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\'L}
-  \gdef^^c6{\'C}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\v C}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\ogonek{E}}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\v E}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\v D}
-  %
-  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
-  \gdef^^d1{\'N}
-  \gdef^^d2{\v N}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\H O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\v R}
-  \gdef^^d9{\ringaccent U} 
-  \gdef^^da{\'U}
-  \gdef^^db{\H U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\cedilla T}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\'r}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\u a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\'l}
-  \gdef^^e6{\'c}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\v c}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\ogonek{e}}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\v e}
-  \gdef^^ed{\'\i}
-  \gdef^^ee{\^\i}
-  \gdef^^ef{\v d}
-  %
-  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
-  \gdef^^f1{\'n}
-  \gdef^^f2{\v n}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\H o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\v r}
-  \gdef^^f9{\ringaccent u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\H u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\cedilla t}
-  \gdef^^ff{\dotaccent{}}
-}
-
-% UTF-8 character definitions.
-% 
-% This code to support UTF-8 is based on LaTeX's utf8.def, with some
-% changes for Texinfo conventions.  It is included here under the GPL by
-% permission from Frank Mittelbach and the LaTeX team.
-% 
-\newcount\countUTFx
-\newcount\countUTFy
-\newcount\countUTFz
-
-\gdef\UTFviiiTwoOctets#1#2{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
-%
-\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
-%
-\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
-
-\gdef\UTFviiiDefined#1{%
-  \ifx #1\relax
-    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
-  \else
-    \expandafter #1%
-  \fi
-}
-
-\begingroup
-  \catcode`\~13
-  \catcode`\"12
-
-  \def\UTFviiiLoop{%
-    \global\catcode\countUTFx\active
-    \uccode`\~\countUTFx
-    \uppercase\expandafter{\UTFviiiTmp}%
-    \advance\countUTFx by 1
-    \ifnum\countUTFx < \countUTFy
-      \expandafter\UTFviiiLoop
-    \fi}
-
-  \countUTFx = "C2
-  \countUTFy = "E0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "E0
-  \countUTFy = "F0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "F0
-  \countUTFy = "F4
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
-  \UTFviiiLoop
-\endgroup
-
-\begingroup
-  \catcode`\"=12
-  \catcode`\<=12
-  \catcode`\.=12
-  \catcode`\,=12
-  \catcode`\;=12
-  \catcode`\!=12
-  \catcode`\~=13
-
-  \gdef\DeclareUnicodeCharacter#1#2{%
-    \countUTFz = "#1\relax
-    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
-    \begingroup
-      \parseXMLCharref
-      \def\UTFviiiTwoOctets##1##2{%
-        \csname u8:##1\string ##2\endcsname}%
-      \def\UTFviiiThreeOctets##1##2##3{%
-        \csname u8:##1\string ##2\string ##3\endcsname}%
-      \def\UTFviiiFourOctets##1##2##3##4{%
-        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
-      \expandafter\expandafter\expandafter\expandafter
-       \expandafter\expandafter\expandafter
-       \gdef\UTFviiiTmp{#2}%
-    \endgroup}
-
-  \gdef\parseXMLCharref{%
-    \ifnum\countUTFz < "A0\relax
-      \errhelp = \EMsimple
-      \errmessage{Cannot define Unicode char value < 00A0}%
-    \else\ifnum\countUTFz < "800\relax
-      \parseUTFviiiA,%
-      \parseUTFviiiB C\UTFviiiTwoOctets.,%
-    \else\ifnum\countUTFz < "10000\relax
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
-    \else
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiA!%
-      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
-    \fi\fi\fi
-  }
-
-  \gdef\parseUTFviiiA#1{%
-    \countUTFx = \countUTFz
-    \divide\countUTFz by 64
-    \countUTFy = \countUTFz
-    \multiply\countUTFz by 64
-    \advance\countUTFx by -\countUTFz
-    \advance\countUTFx by 128
-    \uccode `#1\countUTFx
-    \countUTFz = \countUTFy}
-
-  \gdef\parseUTFviiiB#1#2#3#4{%
-    \advance\countUTFz by "#10\relax
-    \uccode `#3\countUTFz
-    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-\endgroup
-
-\def\utfeightchardefs{%
-  \DeclareUnicodeCharacter{00A0}{\tie}
-  \DeclareUnicodeCharacter{00A1}{\exclamdown}
-  \DeclareUnicodeCharacter{00A3}{\pounds}
-  \DeclareUnicodeCharacter{00A8}{\"{ }}
-  \DeclareUnicodeCharacter{00A9}{\copyright}
-  \DeclareUnicodeCharacter{00AA}{\ordf}
-  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
-  \DeclareUnicodeCharacter{00AD}{\-}
-  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
-  \DeclareUnicodeCharacter{00AF}{\={ }}
-
-  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
-  \DeclareUnicodeCharacter{00B4}{\'{ }}
-  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
-  \DeclareUnicodeCharacter{00BA}{\ordm}
-  \DeclareUnicodeCharacter{00BB}{\guillemetright}
-  \DeclareUnicodeCharacter{00BF}{\questiondown}
-
-  \DeclareUnicodeCharacter{00C0}{\`A}
-  \DeclareUnicodeCharacter{00C1}{\'A}
-  \DeclareUnicodeCharacter{00C2}{\^A}
-  \DeclareUnicodeCharacter{00C3}{\~A}
-  \DeclareUnicodeCharacter{00C4}{\"A}
-  \DeclareUnicodeCharacter{00C5}{\AA}
-  \DeclareUnicodeCharacter{00C6}{\AE}
-  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
-  \DeclareUnicodeCharacter{00C8}{\`E}
-  \DeclareUnicodeCharacter{00C9}{\'E}
-  \DeclareUnicodeCharacter{00CA}{\^E}
-  \DeclareUnicodeCharacter{00CB}{\"E}
-  \DeclareUnicodeCharacter{00CC}{\`I}
-  \DeclareUnicodeCharacter{00CD}{\'I}
-  \DeclareUnicodeCharacter{00CE}{\^I}
-  \DeclareUnicodeCharacter{00CF}{\"I}
-
-  \DeclareUnicodeCharacter{00D1}{\~N}
-  \DeclareUnicodeCharacter{00D2}{\`O}
-  \DeclareUnicodeCharacter{00D3}{\'O}
-  \DeclareUnicodeCharacter{00D4}{\^O}
-  \DeclareUnicodeCharacter{00D5}{\~O}
-  \DeclareUnicodeCharacter{00D6}{\"O}
-  \DeclareUnicodeCharacter{00D8}{\O}
-  \DeclareUnicodeCharacter{00D9}{\`U}
-  \DeclareUnicodeCharacter{00DA}{\'U}
-  \DeclareUnicodeCharacter{00DB}{\^U}
-  \DeclareUnicodeCharacter{00DC}{\"U}
-  \DeclareUnicodeCharacter{00DD}{\'Y}
-  \DeclareUnicodeCharacter{00DF}{\ss}
-
-  \DeclareUnicodeCharacter{00E0}{\`a}
-  \DeclareUnicodeCharacter{00E1}{\'a}
-  \DeclareUnicodeCharacter{00E2}{\^a}
-  \DeclareUnicodeCharacter{00E3}{\~a}
-  \DeclareUnicodeCharacter{00E4}{\"a}
-  \DeclareUnicodeCharacter{00E5}{\aa}
-  \DeclareUnicodeCharacter{00E6}{\ae}
-  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
-  \DeclareUnicodeCharacter{00E8}{\`e}
-  \DeclareUnicodeCharacter{00E9}{\'e}
-  \DeclareUnicodeCharacter{00EA}{\^e}
-  \DeclareUnicodeCharacter{00EB}{\"e}
-  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
-  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{00F1}{\~n}
-  \DeclareUnicodeCharacter{00F2}{\`o}
-  \DeclareUnicodeCharacter{00F3}{\'o}
-  \DeclareUnicodeCharacter{00F4}{\^o}
-  \DeclareUnicodeCharacter{00F5}{\~o}
-  \DeclareUnicodeCharacter{00F6}{\"o}
-  \DeclareUnicodeCharacter{00F8}{\o}
-  \DeclareUnicodeCharacter{00F9}{\`u}
-  \DeclareUnicodeCharacter{00FA}{\'u}
-  \DeclareUnicodeCharacter{00FB}{\^u}
-  \DeclareUnicodeCharacter{00FC}{\"u}
-  \DeclareUnicodeCharacter{00FD}{\'y}
-  \DeclareUnicodeCharacter{00FF}{\"y}
-
-  \DeclareUnicodeCharacter{0100}{\=A}
-  \DeclareUnicodeCharacter{0101}{\=a}
-  \DeclareUnicodeCharacter{0102}{\u{A}}
-  \DeclareUnicodeCharacter{0103}{\u{a}}
-  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
-  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
-  \DeclareUnicodeCharacter{0106}{\'C}
-  \DeclareUnicodeCharacter{0107}{\'c}
-  \DeclareUnicodeCharacter{0108}{\^C}
-  \DeclareUnicodeCharacter{0109}{\^c}
-  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
-  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
-  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
-  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
-  \DeclareUnicodeCharacter{010C}{\v{C}}
-  \DeclareUnicodeCharacter{010D}{\v{c}}
-  \DeclareUnicodeCharacter{010E}{\v{D}}
-
-  \DeclareUnicodeCharacter{0112}{\=E}
-  \DeclareUnicodeCharacter{0113}{\=e}
-  \DeclareUnicodeCharacter{0114}{\u{E}}
-  \DeclareUnicodeCharacter{0115}{\u{e}}
-  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
-  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
-  \DeclareUnicodeCharacter{011A}{\v{E}}
-  \DeclareUnicodeCharacter{011B}{\v{e}}
-  \DeclareUnicodeCharacter{011C}{\^G}
-  \DeclareUnicodeCharacter{011D}{\^g}
-  \DeclareUnicodeCharacter{011E}{\u{G}}
-  \DeclareUnicodeCharacter{011F}{\u{g}}
-
-  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
-  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
-  \DeclareUnicodeCharacter{0124}{\^H}
-  \DeclareUnicodeCharacter{0125}{\^h}
-  \DeclareUnicodeCharacter{0128}{\~I}
-  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
-  \DeclareUnicodeCharacter{012A}{\=I}
-  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
-  \DeclareUnicodeCharacter{012C}{\u{I}}
-  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
-  \DeclareUnicodeCharacter{0131}{\dotless{i}}
-  \DeclareUnicodeCharacter{0132}{IJ}
-  \DeclareUnicodeCharacter{0133}{ij}
-  \DeclareUnicodeCharacter{0134}{\^J}
-  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
-  \DeclareUnicodeCharacter{0139}{\'L}
-  \DeclareUnicodeCharacter{013A}{\'l}
-
-  \DeclareUnicodeCharacter{0141}{\L}
-  \DeclareUnicodeCharacter{0142}{\l}
-  \DeclareUnicodeCharacter{0143}{\'N}
-  \DeclareUnicodeCharacter{0144}{\'n}
-  \DeclareUnicodeCharacter{0147}{\v{N}}
-  \DeclareUnicodeCharacter{0148}{\v{n}}
-  \DeclareUnicodeCharacter{014C}{\=O}
-  \DeclareUnicodeCharacter{014D}{\=o}
-  \DeclareUnicodeCharacter{014E}{\u{O}}
-  \DeclareUnicodeCharacter{014F}{\u{o}}
-
-  \DeclareUnicodeCharacter{0150}{\H{O}}
-  \DeclareUnicodeCharacter{0151}{\H{o}}
-  \DeclareUnicodeCharacter{0152}{\OE}
-  \DeclareUnicodeCharacter{0153}{\oe}
-  \DeclareUnicodeCharacter{0154}{\'R}
-  \DeclareUnicodeCharacter{0155}{\'r}
-  \DeclareUnicodeCharacter{0158}{\v{R}}
-  \DeclareUnicodeCharacter{0159}{\v{r}}
-  \DeclareUnicodeCharacter{015A}{\'S}
-  \DeclareUnicodeCharacter{015B}{\'s}
-  \DeclareUnicodeCharacter{015C}{\^S}
-  \DeclareUnicodeCharacter{015D}{\^s}
-  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
-  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
-
-  \DeclareUnicodeCharacter{0160}{\v{S}}
-  \DeclareUnicodeCharacter{0161}{\v{s}}
-  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
-  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
-  \DeclareUnicodeCharacter{0164}{\v{T}}
-
-  \DeclareUnicodeCharacter{0168}{\~U}
-  \DeclareUnicodeCharacter{0169}{\~u}
-  \DeclareUnicodeCharacter{016A}{\=U}
-  \DeclareUnicodeCharacter{016B}{\=u}
-  \DeclareUnicodeCharacter{016C}{\u{U}}
-  \DeclareUnicodeCharacter{016D}{\u{u}}
-  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
-  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
-
-  \DeclareUnicodeCharacter{0170}{\H{U}}
-  \DeclareUnicodeCharacter{0171}{\H{u}}
-  \DeclareUnicodeCharacter{0174}{\^W}
-  \DeclareUnicodeCharacter{0175}{\^w}
-  \DeclareUnicodeCharacter{0176}{\^Y}
-  \DeclareUnicodeCharacter{0177}{\^y}
-  \DeclareUnicodeCharacter{0178}{\"Y}
-  \DeclareUnicodeCharacter{0179}{\'Z}
-  \DeclareUnicodeCharacter{017A}{\'z}
-  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
-  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
-  \DeclareUnicodeCharacter{017D}{\v{Z}}
-  \DeclareUnicodeCharacter{017E}{\v{z}}
-
-  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
-  \DeclareUnicodeCharacter{01C5}{D\v{z}}
-  \DeclareUnicodeCharacter{01C6}{d\v{z}}
-  \DeclareUnicodeCharacter{01C7}{LJ}
-  \DeclareUnicodeCharacter{01C8}{Lj}
-  \DeclareUnicodeCharacter{01C9}{lj}
-  \DeclareUnicodeCharacter{01CA}{NJ}
-  \DeclareUnicodeCharacter{01CB}{Nj}
-  \DeclareUnicodeCharacter{01CC}{nj}
-  \DeclareUnicodeCharacter{01CD}{\v{A}}
-  \DeclareUnicodeCharacter{01CE}{\v{a}}
-  \DeclareUnicodeCharacter{01CF}{\v{I}}
-
-  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
-  \DeclareUnicodeCharacter{01D1}{\v{O}}
-  \DeclareUnicodeCharacter{01D2}{\v{o}}
-  \DeclareUnicodeCharacter{01D3}{\v{U}}
-  \DeclareUnicodeCharacter{01D4}{\v{u}}
-
-  \DeclareUnicodeCharacter{01E2}{\={\AE}}
-  \DeclareUnicodeCharacter{01E3}{\={\ae}}
-  \DeclareUnicodeCharacter{01E6}{\v{G}}
-  \DeclareUnicodeCharacter{01E7}{\v{g}}
-  \DeclareUnicodeCharacter{01E8}{\v{K}}
-  \DeclareUnicodeCharacter{01E9}{\v{k}}
-
-  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
-  \DeclareUnicodeCharacter{01F1}{DZ}
-  \DeclareUnicodeCharacter{01F2}{Dz}
-  \DeclareUnicodeCharacter{01F3}{dz}
-  \DeclareUnicodeCharacter{01F4}{\'G}
-  \DeclareUnicodeCharacter{01F5}{\'g}
-  \DeclareUnicodeCharacter{01F8}{\`N}
-  \DeclareUnicodeCharacter{01F9}{\`n}
-  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
-  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
-  \DeclareUnicodeCharacter{01FE}{\'{\O}}
-  \DeclareUnicodeCharacter{01FF}{\'{\o}}
-
-  \DeclareUnicodeCharacter{021E}{\v{H}}
-  \DeclareUnicodeCharacter{021F}{\v{h}}
-
-  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
-  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
-  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
-  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
-  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
-  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
-
-  \DeclareUnicodeCharacter{0232}{\=Y}
-  \DeclareUnicodeCharacter{0233}{\=y}
-  \DeclareUnicodeCharacter{0237}{\dotless{j}}
-
-  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
-
-  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
-  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
-  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
-  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
-  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
-  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
-  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
-  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
-  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
-  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
-  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
-  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
-
-  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
-  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
-
-  \DeclareUnicodeCharacter{1E20}{\=G}
-  \DeclareUnicodeCharacter{1E21}{\=g}
-  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
-  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
-  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
-  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
-  \DeclareUnicodeCharacter{1E26}{\"H}
-  \DeclareUnicodeCharacter{1E27}{\"h}
-
-  \DeclareUnicodeCharacter{1E30}{\'K}
-  \DeclareUnicodeCharacter{1E31}{\'k}
-  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
-  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
-  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
-  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
-  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
-  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
-  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
-  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
-  \DeclareUnicodeCharacter{1E3E}{\'M}
-  \DeclareUnicodeCharacter{1E3F}{\'m}
-
-  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
-  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
-  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
-  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
-  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
-  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
-  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
-  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
-  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
-  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
-
-  \DeclareUnicodeCharacter{1E54}{\'P}
-  \DeclareUnicodeCharacter{1E55}{\'p}
-  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
-  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
-  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
-  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
-  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
-  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
-  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
-  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
-
-  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
-  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
-  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
-  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
-  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
-  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
-  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
-  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
-  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
-  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
-
-  \DeclareUnicodeCharacter{1E7C}{\~V}
-  \DeclareUnicodeCharacter{1E7D}{\~v}
-  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
-  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
-
-  \DeclareUnicodeCharacter{1E80}{\`W}
-  \DeclareUnicodeCharacter{1E81}{\`w}
-  \DeclareUnicodeCharacter{1E82}{\'W}
-  \DeclareUnicodeCharacter{1E83}{\'w}
-  \DeclareUnicodeCharacter{1E84}{\"W}
-  \DeclareUnicodeCharacter{1E85}{\"w}
-  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
-  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
-  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
-  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
-  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
-  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
-  \DeclareUnicodeCharacter{1E8C}{\"X}
-  \DeclareUnicodeCharacter{1E8D}{\"x}
-  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
-  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
-
-  \DeclareUnicodeCharacter{1E90}{\^Z}
-  \DeclareUnicodeCharacter{1E91}{\^z}
-  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
-  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
-  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
-  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
-  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
-  \DeclareUnicodeCharacter{1E97}{\"t}
-  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
-  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
-
-  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
-  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
-
-  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
-  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
-  \DeclareUnicodeCharacter{1EBC}{\~E}
-  \DeclareUnicodeCharacter{1EBD}{\~e}
-
-  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
-  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
-  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
-  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
-
-  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
-  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
-
-  \DeclareUnicodeCharacter{1EF2}{\`Y}
-  \DeclareUnicodeCharacter{1EF3}{\`y}
-  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
-
-  \DeclareUnicodeCharacter{1EF8}{\~Y}
-  \DeclareUnicodeCharacter{1EF9}{\~y}
-
-  \DeclareUnicodeCharacter{2013}{--}
-  \DeclareUnicodeCharacter{2014}{---}
-  \DeclareUnicodeCharacter{2018}{\quoteleft}
-  \DeclareUnicodeCharacter{2019}{\quoteright}
-  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
-  \DeclareUnicodeCharacter{201C}{\quotedblleft}
-  \DeclareUnicodeCharacter{201D}{\quotedblright}
-  \DeclareUnicodeCharacter{201E}{\quotedblbase}
-  \DeclareUnicodeCharacter{2022}{\bullet}
-  \DeclareUnicodeCharacter{2026}{\dots}
-  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
-  \DeclareUnicodeCharacter{203A}{\guilsinglright}
-  \DeclareUnicodeCharacter{20AC}{\euro}
-
-  \DeclareUnicodeCharacter{2192}{\expansion}
-  \DeclareUnicodeCharacter{21D2}{\result}
-
-  \DeclareUnicodeCharacter{2212}{\minus}
-  \DeclareUnicodeCharacter{2217}{\point}
-  \DeclareUnicodeCharacter{2261}{\equiv}
-}% end of \utfeightchardefs
-
-
-% US-ASCII character definitions.
-\def\asciichardefs{% nothing need be done
-   \relax
-}
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
-\message{formatting,}
-
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\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
-
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything.  We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize.  We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
-  \ifx\emergencystretch\thisisundefined
-    % Allow us to assign to \emergencystretch anyway.
-    \def\emergencystretch{\dimen0}%
-  \else
-    \emergencystretch = .15\hsize
-  \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth;
-% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-% 7) physical page height; 8) physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading.  The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
-  \voffset = #3\relax
-  \topskip = #6\relax
-  \splittopskip = \topskip
-  %
-  \vsize = #1\relax
-  \advance\vsize by \topskip
-  \outervsize = \vsize
-  \advance\outervsize by 2\topandbottommargin
-  \pageheight = \vsize
-  %
-  \hsize = #2\relax
-  \outerhsize = \hsize
-  \advance\outerhsize by 0.5in
-  \pagewidth = \hsize
-  %
-  \normaloffset = #4\relax
-  \bindingoffset = #5\relax
-  %
-  \ifpdf
-    \pdfpageheight #7\relax
-    \pdfpagewidth #8\relax
-    % if we don't reset these, they will remain at "1 true in" of
-    % whatever layout pdftex was dumped with.
-    \pdfhorigin = 1 true in
-    \pdfvorigin = 1 true in
-  \fi
-  %
-  \setleading{\textleading}
-  %
-  \parindent = \defaultparindent
-  \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % If page is nothing but text, make it come out even.
-  \internalpagesizes{607.2pt}{6in}% that's 46 lines
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{36pt}%
-                    {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.25 trim size.
-\def\smallbook{{\globaldefs = 1
-  \parskip = 2pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.5in}{5in}%
-                    {-.2in}{0in}%
-                    {\bindingoffset}{16pt}%
-                    {9.25in}{7in}%
-  %
-  \lispnarrowing = 0.3in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .5cm
-}}
-
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
-  \parskip = 1.5pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.4in}{4.8in}%
-                    {-.2in}{-.4in}%
-                    {0pt}{14pt}%
-                    {9in}{6in}%
-  %
-  \lispnarrowing = 0.25in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .4cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % Double-side printing via postscript on Laserjet 4050
-  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
-  % To change the settings for a different printer or situation, adjust
-  % \normaloffset until the front-side and back-side texts align.  Then
-  % do the same for \bindingoffset.  You can set these for testing in
-  % your texinfo source file like this:
-  % @tex
-  % \global\normaloffset = -6mm
-  % \global\bindingoffset = 10mm
-  % @end tex
-  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{44pt}%
-                    {297mm}{210mm}%
-  %
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
-  \parskip = 2pt plus 1pt minus 0.1pt
-  \textleading = 12.5pt
-  %
-  \internalpagesizes{160mm}{120mm}%
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{8pt}%
-                    {210mm}{148mm}%
-  %
-  \lispnarrowing = 0.2in
-  \tolerance = 800
-  \hfuzz = 1.2pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 2mm
-  \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{237mm}{150mm}%
-                    {\voffset}{4.6mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  %
-  % Must explicitly reset to 0 because we call \afourpaper.
-  \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{241mm}{165mm}%
-                    {\voffset}{-2.95mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
-  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
-  \globaldefs = 1
-  %
-  \parskip = 3pt plus 2pt minus 1pt
-  \setleading{\textleading}%
-  %
-  \dimen0 = #1\relax
-  \advance\dimen0 by \voffset
-  %
-  \dimen2 = \hsize
-  \advance\dimen2 by \normaloffset
-  %
-  \internalpagesizes{#1}{\hsize}%
-                    {\voffset}{\normaloffset}%
-                    {\bindingoffset}{44pt}%
-                    {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-% DEL is a comment character, in case @c does not suffice.
-\catcode`\^^? = 14
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
-
-% This macro is used to make a character print one way in \tt
-% (where it can probably be output as-is), and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise.  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, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-% Used sometimes to turn off (effectively) the active characters even after
-% parsing them.
-\def\turnoffactive{%
-  \normalturnoffactive
-  \otherbackslash
-}
-
-\catcode`\@=0
-
-% \backslashcurfont outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
-
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-
-% In texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
-\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
-% On startup, @fixbackslash assigns:
-%  @let \ = @normalbackslash
-
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-@gdef@rawbackslash{@let\=@backslashcurfont}
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-% 
-@def@normalturnoffactive{%
-  @let\=@normalbackslash
-  @let"=@normaldoublequote
-  @let~=@normaltilde
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let<=@normalless
-  @let>=@normalgreater
-  @let+=@normalplus
-  @let$=@normaldollar %$ font-lock fix
-  @markupsetuplqdefault
-  @markupsetuprqdefault
-  @unsepspaces
-}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
-  @catcode`+=@active
-  @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Finally, make ` and ' active, so that txicodequoteundirected and
-@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
-@c don't make ` and ' active, @code will not get them as active chars.
-@c Do this last of all since we use ` in the previous @catcode assignments.
-@catcode`@'=@active
-@catcode`@`=@active
-@markupsetuplqdefault
-@markupsetuprqdefault
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
-
-@c vim:sw=2:
-
-@ignore
-   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
diff --git a/doc/texinfo.tex.20131227 b/doc/texinfo.tex.20131227
deleted file mode 100644 (file)
index bfd765d..0000000
+++ /dev/null
@@ -1,10145 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-% 
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2013-09-11.11}
-%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013 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
-% published by the Free Software Foundation, either version 3 of the
-% License, or (at your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program.  If not, see <http://www.gnu.org/licenses/>.
-%
-% As a special exception, when this file is read by TeX when processing
-% a Texinfo source document, you may use the result without
-% restriction. This Exception is an additional permission under section 7
-% of the GNU General Public License, version 3 ("GPLv3").
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
-%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
-% The texinfo.tex in any given distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.  Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem.  Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution.  For a simple
-% manual foo.texi, however, you can get away with this:
-%   tex foo.texi
-%   texindex foo.??
-%   tex foo.texi
-%   tex foo.texi
-%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent.  You can get the existing language-specific files from the
-% full Texinfo distribution.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
-  \catcode`+=\active \catcode`\_=\active}
-
-\chardef\other=12
-
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some plain tex macros whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexfootnote=\footnote
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexindent=\indent
-\let\ptexinsert=\insert
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexnewwrite\newwrite
-\let\ptexnoindent=\noindent
-\let\ptexplus=+
-\let\ptexraggedright=\raggedright
-\let\ptexrbrace=\}
-\let\ptexslash=\/
-\let\ptexstar=\*
-\let\ptext=\t
-\let\ptextop=\top
-{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
-  \let\linenumber = \empty % Pre-3.0.
-\else
-  \def\linenumber{l.\the\inputlineno:\space}
-\fi
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
-\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
-\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
-
-% sometimes characters are active, so we need control sequences.
-\chardef\ampChar   = `\&
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dashChar  = `\-
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\hashChar  = `\#
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar  = `\;
-\chardef\slashChar = `\/
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% The following is used inside several \edef's.
-\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
-
-% Hyphenation fixes.
-\hyphenation{
-  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
-  ap-pen-dix bit-map bit-maps
-  data-base data-bases eshell fall-ing half-way long-est man-u-script
-  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
-  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
-  spell-ing spell-ings
-  stand-alone strong-est time-stamp time-stamps which-ever white-space
-  wide-spread wrap-around
-}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt }
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal.  We don't just call \tracingall here,
-% since that produces some useless output on the terminal.  We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
-  \tracingstats2
-  \tracingpages1
-  \tracinglostchars2  % 2 gives us more in etex
-  \tracingparagraphs1
-  \tracingoutput1
-  \tracingmacros2
-  \tracingrestores1
-  \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
-    \tracingscantokens1
-    \tracingifs1
-    \tracinggroups1
-    \tracingnesting2
-    \tracingassigns1
-  \fi
-  \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines16
-}%
-
-% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
-% aren't perfect, it's not the end of the world, being an error message,
-% after all.
-% 
-\def\errormsg{\begingroup \indexnofonts \doerrormsg}
-\def\doerrormsg#1{\errmessage{#1}}
-
-% add check for \lastpenalty to plain's definitions.  If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
-  \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
-  \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
-  \removelastskip\penalty-200\bigskip\fi\fi}
-
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong  \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Output a mark which sets \thischapter, \thissection and \thiscolor.
-% We dump everything together because we only have one kind of mark.
-% This works because we only use \botmark / \topmark, not \firstmark.
-%
-% A mark contains a subexpression of the \ifcase ... \fi construct.
-% \get*marks macros below extract the needed part using \ifcase.
-%
-% Another complication is to let the user choose whether \thischapter
-% (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page.  The solution is
-% described on page 260 of The TeXbook.  It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after.  I won't pretend I can describe this better than DEK...
-\def\domark{%
-  \toks0=\expandafter{\lastchapterdefs}%
-  \toks2=\expandafter{\lastsectiondefs}%
-  \toks4=\expandafter{\prevchapterdefs}%
-  \toks6=\expandafter{\prevsectiondefs}%
-  \toks8=\expandafter{\lastcolordefs}%
-  \mark{%
-                   \the\toks0 \the\toks2  % 0: top marks (\last...)
-      \noexpand\or \the\toks4 \the\toks6  % 1: bottom marks (default, \prev...)
-    \noexpand\else \the\toks8             % 2: color marks
-  }%
-}
-% \topmark doesn't work for the very first chapter (after the title
-% page or the contents), so we use \firstmark there -- this gets us
-% the mark with the chapter defs, unless the user sneaks in, e.g.,
-% @setcolor (or @url, or @link, etc.) between @contents and the very
-% first @chapter.
-\def\gettopheadingmarks{%
-  \ifcase0\topmark\fi
-  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
-}
-\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
-
-% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\prevchapterdefs{}
-\def\prevsectiondefs{}
-\def\lastcolordefs{}
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
-  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
-  %
-  \ifodd\pageno  \advance\hoffset by \bindingoffset
-  \else \advance\hoffset by -\bindingoffset\fi
-  %
-  % Do this outside of the \shipout so @code etc. will be expanded in
-  % the headline as they should be, not taken literally (outputting ''code).
-  \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
-  %
-  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
-  %
-  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
-  \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
-  %
-  {%
-    % Have to do this stuff outside the \shipout because we want it to
-    % take effect in \write's, yet the group defined by the \vbox ends
-    % before the \shipout runs.
-    %
-    \indexdummies         % don't expand commands in the output.
-    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
-               % the page break happens to be in the middle of an example.
-               % We don't want .vr (or whatever) entries like this:
-               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
-               % "\acronym" won't work when it's read back in;
-               % it needs to be
-               % {\code {{\tt \backslashcurfont }acronym}
-    \shipout\vbox{%
-      % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
-      %
-      \ifcropmarks \vbox to \outervsize\bgroup
-        \hsize = \outerhsize
-        \vskip-\topandbottommargin
-        \vtop to0pt{%
-          \line{\ewtop\hfil\ewtop}%
-          \nointerlineskip
-          \line{%
-            \vbox{\moveleft\cornerthick\nstop}%
-            \hfill
-            \vbox{\moveright\cornerthick\nstop}%
-          }%
-          \vss}%
-        \vskip\topandbottommargin
-        \line\bgroup
-          \hfil % center the page within the outer (page) hsize.
-          \ifodd\pageno\hskip\bindingoffset\fi
-          \vbox\bgroup
-      \fi
-      %
-      \unvbox\headlinebox
-      \pagebody{#1}%
-      \ifdim\ht\footlinebox > 0pt
-        % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingyyy.)
-        % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 24pt
-        \unvbox\footlinebox
-      \fi
-      %
-      \ifcropmarks
-          \egroup % end of \vbox\bgroup
-        \hfil\egroup % end of (centering) \line\bgroup
-        \vskip\topandbottommargin plus1fill minus1fill
-        \boxmaxdepth = \cornerthick
-        \vbox to0pt{\vss
-          \line{%
-            \vbox{\moveleft\cornerthick\nsbot}%
-            \hfill
-            \vbox{\moveright\cornerthick\nsbot}%
-          }%
-          \nointerlineskip
-          \line{\ewbot\hfil\ewbot}%
-        }%
-      \egroup % \vbox from first cropmarks clause
-      \fi
-    }% end of \shipout\vbox
-  }% end of group with \indexdummies
-  \advancepageno
-  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
-  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1\relax \unvbox#1\relax
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks.  Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
-  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
-  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1.  The argument is the rest of
-% the input line (except we remove a trailing comment).  #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg{\parseargusing{}}
-\def\parseargusing#1#2{%
-  \def\argtorun{#2}%
-  \begingroup
-    \obeylines
-    \spaceisspace
-    #1%
-    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
-}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    \argremovecomment #1\comment\ArgTerm%
-  }%
-}
-
-% First remove any @comment, then any @c comment.
-\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-
-% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
-%
-% \argremovec might leave us with trailing space, e.g.,
-%    @end itemize  @c foo
-% This space token undergoes the same procedure and is eventually removed
-% by \finishparsearg.
-%
-\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
-\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
-\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
-  \def\temp{#3}%
-  \ifx\temp\empty
-    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
-    \let\temp\finishparsearg
-  \else
-    \let\temp\argcheckspaces
-  \fi
-  % Put the space token in:
-  \temp#1 #3\ArgTerm
-}
-
-% If a _delimited_ argument is enclosed in braces, they get stripped; so
-% to get _exactly_ the rest of the line, we had to prevent such situation.
-% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \argtorun.
-% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
-% either the null string, or it ends with \^^M---thus there is no danger
-% that a pair of braces would be stripped.
-%
-% But first, we have to remove the trailing space token.
-%
-\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
-
-% \parseargdef\foo{...}
-%      is roughly equivalent to
-% \def\foo{\parsearg\Xfoo}
-% \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick.  --kasal, 16nov03
-
-\def\parseargdef#1{%
-  \expandafter \doparseargdef \csname\string#1\endcsname #1%
-}
-\def\doparseargdef#1#2{%
-  \def#2{\parsearg#1}%
-  \def#1##1%
-}
-
-% Several utility definitions with active space:
-{
-  \obeyspaces
-  \gdef\obeyedspace{ }
-
-  % Make each space character in the input produce a normal interword
-  % space in the output.  Don't allow a line break at this space, as this
-  % is used only in environments like @example, where each line of input
-  % should produce a line of output anyway.
-  %
-  \gdef\sepspaces{\obeyspaces\let =\tie}
-
-  % 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 \ ).
-  \gdef\unsepspaces{\let =\space}
-}
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-% Define the framework for environments in texinfo.tex.  It's used like this:
-%
-%   \envdef\foo{...}
-%   \def\Efoo{...}
-%
-% It's the responsibility of \envdef to insert \begingroup before the
-% actual body; @end closes the group after calling \Efoo.  \envdef also
-% defines \thisenv, so the current environment is known; @end checks
-% whether the environment name matches.  The \checkenv macro can also be
-% used to check whether the current environment is the one expected.
-%
-% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as environments; they don't open a group.  (The
-% implementation of @end takes care not to call \endgroup in this
-% special case.)
-
-
-% At run-time, environments start with this:
-\def\startenvironment#1{\begingroup\def\thisenv{#1}}
-% initialize
-\let\thisenv\empty
-
-% ... but they get defined via ``\envdef\foo{...}'':
-\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
-\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
-
-% Check whether we're in the right environment:
-\def\checkenv#1{%
-  \def\temp{#1}%
-  \ifx\thisenv\temp
-  \else
-    \badenverr
-  \fi
-}
-
-% Environment mismatch, #1 expected:
-\def\badenverr{%
-  \errhelp = \EMsimple
-  \errmessage{This command can appear only \inenvironment\temp,
-    not \inenvironment\thisenv}%
-}
-\def\inenvironment#1{%
-  \ifx#1\empty
-    outside of any environment%
-  \else
-    in environment \expandafter\string#1%
-  \fi
-}
-
-% @end foo executes the definition of \Efoo.
-% But first, it executes a specialized version of \checkenv
-%
-\parseargdef\end{%
-  \if 1\csname iscond.#1\endcsname
-  \else
-    % The general wording of \badenverr may not be ideal.
-    \expandafter\checkenv\csname#1\endcsname
-    \csname E#1\endcsname
-    \endgroup
-  \fi
-}
-
-\newhelp\EMsimple{Press RETURN to continue.}
-
-
-% 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
-% at the beginning of a line will start with \penalty -- and
-% 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
- % 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\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
-
-% @/ allows a line break.
-\let\/=\allowbreak
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=\endofsentencespacefactor\space}
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=\endofsentencespacefactor\space}
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=\endofsentencespacefactor\space}
-
-% @frenchspacing on|off  says whether to put extra space after punctuation.
-%
-\def\onword{on}
-\def\offword{off}
-%
-\parseargdef\frenchspacing{%
-  \def\temp{#1}%
-  \ifx\temp\onword \plainfrenchspacing
-  \else\ifx\temp\offword \plainnonfrenchspacing
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
-  \fi\fi
-}
-
-% @w prevents a word break.  Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line.  According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0).  If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large.  This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material.  In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom.  The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\envdef\group{%
-  \ifnum\catcode`\^^M=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  \startsavinginserts
-  %
-  \setbox\groupbox = \vtop\bgroup
-    % Do @comment since we are called inside an environment such as
-    % @example, where each end-of-line in the input causes an
-    % end-of-line in the output.  We don't want the end-of-line after
-    % the `@group' to put extra space in the output.  Since @group
-    % should appear on a line by itself (according to the Texinfo
-    % manual), we don't worry about eating any user text.
-    \comment
-}
-%
-% The \vtop produces a box with normal height and large depth; thus, TeX puts
-% \baselineskip glue before it, and (when the next line of text is done)
-% \lineskip glue after it.  Thus, space below is not quite equal to space
-% above.  But it's pretty close.
-\def\Egroup{%
-    % To get correct interline space between the last line of the group
-    % and the first line afterwards, we have to propagate \prevdepth.
-    \endgraf % Not \par, as it may have been set to \lisppar.
-    \global\dimen1 = \prevdepth
-  \egroup           % End the \vtop.
-  % \dimen0 is the vertical size of the group's box.
-  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
-  % \dimen2 is how much space is left on the page (more or less).
-  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
-  % if the group doesn't fit on the current page, and it's a big big
-  % group, force a page break.
-  \ifdim \dimen0 > \dimen2
-    \ifdim \pagetotal < \vfilllimit\pageheight
-      \page
-    \fi
-  \fi
-  \box\groupbox
-  \prevdepth = \dimen1
-  \checkinserts
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil  \mil=0.001in
-
-\parseargdef\need{%
-  % Ensure vertical mode, so we don't make a big box in the middle of a
-  % paragraph.
-  \par
-  %
-  % If the @need value is less than one line space, it's useless.
-  \dimen0 = #1\mil
-  \dimen2 = \ht\strutbox
-  \advance\dimen2 by \dp\strutbox
-  \ifdim\dimen0 > \dimen2
-    %
-    % Do a \strut just to make the height of this box be normal, so the
-    % normal leading is inserted relative to the preceding line.
-    % And a page break here is fine.
-    \vtop to #1\mil{\strut\vfil}%
-    %
-    % TeX does not even consider page breaks if a penalty added to the
-    % main vertical list is 10000 or more.  But in order to see if the
-    % empty box we just added fits on the page, we must make it consider
-    % page breaks.  On the other hand, we don't want to actually break the
-    % page after the empty box.  So we use a penalty of 9999.
-    %
-    % There is an extremely small chance that TeX will actually break the
-    % page at this \penalty, if there are no other feasible breakpoints in
-    % sight.  (If the user is using lots of big @group commands, which
-    % almost-but-not-quite fill up a page, TeX will have a hard time doing
-    % good page breaking, for example.)  However, I could not construct an
-    % example where a page broke at this \penalty; if it happens in a real
-    % document, then we can reconsider our strategy.
-    \penalty9999
-    %
-    % Back up by the size of the box, whether we did a page break or not.
-    \kern -#1\mil
-    %
-    % Do not allow a page break right after this kern.
-    \nobreak
-  \fi
-}
-
-% @br   forces paragraph break (and is undocumented).
-
-\let\br = \par
-
-% @page forces the start of a new page.
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
-
-% This defn is used inside nofill environments such as @example.
-\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
-  \leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
-  \nobreak
-  \kern-\strutdepth
-  \vtop to \strutdepth{%
-    \baselineskip=\strutdepth
-    \vss
-    % if you have multiple lines of stuff to put here, you'll need to
-    % make the vbox yourself of the appropriate size.
-    \ifx#1l%
-      \llap{\ignorespaces #2\hskip\inmarginspacing}%
-    \else
-      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
-    \fi
-    \null
-  }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
-  \setbox0 = \hbox{\ignorespaces #2}%
-  \ifdim\wd0 > 0pt
-    \def\lefttext{#1}%  have both texts
-    \def\righttext{#2}%
-  \else
-    \def\lefttext{#1}%  have only one text
-    \def\righttext{#1}%
-  \fi
-  %
-  \ifodd\pageno
-    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
-  \else
-    \def\temp{\inleftmargin\lefttext}%
-  \fi
-  \temp
-}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).  This command
-% is not documented, not supported, and doesn't work.
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
-
-% @include FILE -- \input text of FILE.
-%
-\def\include{\parseargusing\filenamecatcodes\includezzz}
-\def\includezzz#1{%
-  \pushthisfilestack
-  \def\thisfile{#1}%
-  {%
-    \makevalueexpandable  % we want to expand any @value in FILE.
-    \turnoffactive        % and allow special characters in the expansion
-    \indexnofonts         % Allow `@@' and other weird things in file names.
-    \wlog{texinfo.tex: doing @include of #1^^J}%
-    \edef\temp{\noexpand\input #1 }%
-    %
-    % This trickery is to read FILE outside of a group, in case it makes
-    % definitions, etc.
-    \expandafter
-  }\temp
-  \popthisfilestack
-}
-\def\filenamecatcodes{%
-  \catcode`\\=\other
-  \catcode`~=\other
-  \catcode`^=\other
-  \catcode`_=\other
-  \catcode`|=\other
-  \catcode`<=\other
-  \catcode`>=\other
-  \catcode`+=\other
-  \catcode`-=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
-}
-
-\def\pushthisfilestack{%
-  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-}
-\def\pushthisfilestackX{%
-  \expandafter\pushthisfilestackY\thisfile\StackTerm
-}
-\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
-  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
-}
-
-\def\popthisfilestack{\errthisfilestackempty}
-\def\errthisfilestackempty{\errmessage{Internal error:
-  the stack of filenames is empty.}}
-%
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\parseargdef\center{%
-  \ifhmode
-    \let\centersub\centerH
-  \else
-    \let\centersub\centerV
-  \fi
-  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
-  \let\centersub\relax % don't let the definition persist, just in case
-}
-\def\centerH#1{{%
-  \hfil\break
-  \advance\hsize by -\leftskip
-  \advance\hsize by -\rightskip
-  \line{#1}%
-  \break
-}}
-%
-\newcount\centerpenalty
-\def\centerV#1{%
-  % The idea here is the same as in \startdefun, \cartouche, etc.: if
-  % @center is the first thing after a section heading, we need to wipe
-  % out the negative parskip inserted by \sectionheading, but still
-  % prevent a page break here.
-  \centerpenalty = \lastpenalty
-  \ifnum\centerpenalty>10000 \vskip\parskip \fi
-  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
-  \line{\kern\leftskip #1\kern\rightskip}%
-}
-
-% @sp n   outputs n lines of vertical space
-%
-\parseargdef\sp{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore  is another way to write a comment
-%
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-%
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% NCHARS can also be the word `asis' or `none'.
-% We cannot feasibly implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\parseargdef\paragraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \defaultparindent = 0pt
-    \else
-      \defaultparindent = #1em
-    \fi
-  \fi
-  \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\parseargdef\exampleindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \lispnarrowing = 0pt
-    \else
-      \lispnarrowing = #1em
-    \fi
-  \fi
-}
-
-% @firstparagraphindent WORD
-% If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading.  If WORD is `insert', then do indent at such
-% paragraphs.
-%
-% The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.
-% We switch the definition of this back and forth according to WORD.
-% By default, we suppress indentation.
-%
-\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\def\insertword{insert}
-%
-\parseargdef\firstparagraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\noneword
-    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
-  \else\ifx\temp\insertword
-    \let\suppressfirstparagraphindent = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @firstparagraphindent option `\temp'}%
-  \fi\fi
-}
-
-% Here is how we actually suppress indentation.  Redefine \everypar to
-% \kern backwards by \parindent, and then reset itself to empty.
-%
-% We also make \indent itself not actually do anything until the next
-% paragraph.
-%
-\gdef\dosuppressfirstparagraphindent{%
-  \gdef\indent{%
-    \restorefirstparagraphindent
-    \indent
-  }%
-  \gdef\noindent{%
-    \restorefirstparagraphindent
-    \noindent
-  }%
-  \global\everypar = {%
-    \kern -\parindent
-    \restorefirstparagraphindent
-  }%
-}
-
-\gdef\restorefirstparagraphindent{%
-  \global \let \indent = \ptexindent
-  \global \let \noindent = \ptexnoindent
-  \global \everypar = {}%
-}
-
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \iflinks
-     \tryauxfile
-     % Open the new aux file.  TeX will close it automatically at exit.
-     \immediate\openout\auxfile=\jobname.aux
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   \openin 1 texinfo.cnf
-   \ifeof 1 \else \input texinfo.cnf \fi
-   \closein 1
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as being undefined.
-\ifx\pdfoutput\thisisundefined
-\else
-  \ifx\pdfoutput\relax
-  \else
-    \ifcase\pdfoutput
-    \else
-      \pdftrue
-    \fi
-  \fi
-\fi
-
-% PDF uses PostScript string constants for the names of xref targets,
-% for display in the outlines, and in other places.  Thus, we have to
-% double any backslashes.  Otherwise, a name like "\node" will be
-% interpreted as a newline (\n), followed by o, d, e.  Not good.
-% 
-% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
-% related messages.  The final outcome is that it is up to the TeX user
-% to double the backslashes and otherwise make the string valid, so
-% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
-% do this reliably, so we use it.
-
-% #1 is a control sequence in which to do the replacements,
-% which we \xdef.
-\def\txiescapepdf#1{%
-  \ifx\pdfescapestring\thisisundefined
-    % No primitive available; should we give a warning or log?
-    % Many times it won't matter.
-  \else
-    % The expandable \pdfescapestring primitive escapes parentheses,
-    % backslashes, and other special chars.
-    \xdef#1{\pdfescapestring{#1}}%
-  \fi
-}
-
-\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
-with PDF output, and none of those formats could be found.  (.eps cannot
-be supported due to the design of the PDF format; use regular TeX (DVI
-output) for that.)}
-
-\ifpdf
-  %
-  % Color manipulation macros based on pdfcolor.tex,
-  % except using rgb instead of cmyk; the latter is said to render as a
-  % very dark gray on-screen and a very dark halftone in print, instead
-  % of actual black.
-  \def\rgbDarkRed{0.50 0.09 0.12}
-  \def\rgbBlack{0 0 0}
-  %
-  % k sets the color for filling (usual text, etc.);
-  % K sets the color for stroking (thin rules, e.g., normal _'s).
-  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
-  %
-  % Set color, and create a mark which defines \thiscolor accordingly,
-  % so that \makeheadline knows which color to restore.
-  \def\setcolor#1{%
-    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
-    \domark
-    \pdfsetcolor{#1}%
-  }
-  %
-  \def\maincolor{\rgbBlack}
-  \pdfsetcolor{\maincolor}
-  \edef\thiscolor{\maincolor}
-  \def\lastcolordefs{}
-  %
-  \def\makefootline{%
-    \baselineskip24pt
-    \line{\pdfsetcolor{\maincolor}\the\footline}%
-  }
-  %
-  \def\makeheadline{%
-    \vbox to 0pt{%
-      \vskip-22.5pt
-      \line{%
-        \vbox to8.5pt{}%
-        % Extract \thiscolor definition from the marks.
-        \getcolormarks
-        % Typeset the headline with \maincolor, then restore the color.
-        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
-      }%
-      \vss
-    }%
-    \nointerlineskip
-  }
-  %
-  %
-  \pdfcatalog{/PageMode /UseOutlines}
-  %
-  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
-  \def\dopdfimage#1#2#3{%
-    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
-    %
-    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
-    % others).  Let's try in that order, PDF first since if
-    % someone has a scalable image, presumably better to use that than a
-    % bitmap.
-    \let\pdfimgext=\empty
-    \begingroup
-      \openin 1 #1.pdf \ifeof 1
-        \openin 1 #1.PDF \ifeof 1
-          \openin 1 #1.png \ifeof 1
-            \openin 1 #1.jpg \ifeof 1
-              \openin 1 #1.jpeg \ifeof 1
-                \openin 1 #1.JPG \ifeof 1
-                  \errhelp = \nopdfimagehelp
-                  \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{JPG}%
-                \fi
-              \else \gdef\pdfimgext{jpeg}%
-              \fi
-            \else \gdef\pdfimgext{jpg}%
-            \fi
-          \else \gdef\pdfimgext{png}%
-          \fi
-        \else \gdef\pdfimgext{PDF}%
-        \fi
-      \else \gdef\pdfimgext{pdf}%
-      \fi
-      \closein 1
-    \endgroup
-    %
-    % without \immediate, ancient pdftex seg faults when the same image is
-    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
-    \ifnum\pdftexversion < 14
-      \immediate\pdfimage
-    \else
-      \immediate\pdfximage
-    \fi
-      \ifdim \wd0 >0pt width \pdfimagewidth \fi
-      \ifdim \wd2 >0pt height \pdfimageheight \fi
-      \ifnum\pdftexversion<13
-         #1.\pdfimgext
-       \else
-         {#1.\pdfimgext}%
-       \fi
-    \ifnum\pdftexversion < 14 \else
-      \pdfrefximage \pdflastximage
-    \fi}
-  %
-  \def\pdfmkdest#1{{%
-    % We have to set dummies so commands such as @code, and characters
-    % such as \, aren't expanded when present in a section title.
-    \indexnofonts
-    \turnoffactive
-    \makevalueexpandable
-    \def\pdfdestname{#1}%
-    \txiescapepdf\pdfdestname
-    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
-  }}
-  %
-  % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}
-  %
-  % by default, use a color that is dark enough to print on paper as
-  % nearly black, but still distinguishable for online viewing.
-  \def\urlcolor{\rgbDarkRed}
-  \def\linkcolor{\rgbDarkRed}
-  \def\endlink{\setcolor{\maincolor}\pdfendlink}
-  %
-  % Adding outlines to PDF; macros for calculating structure of outlines
-  % come from Petr Olsak
-  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
-    \else \csname#1\endcsname \fi}
-  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
-    \advance\tempnum by 1
-    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  %
-  % #1 is the section text, which is what will be displayed in the
-  % outline by the pdf viewer.  #2 is the pdf expression for the number
-  % of subentries (or empty, for subsubsections).  #3 is the node text,
-  % which might be empty if this toc entry had no corresponding node.
-  % #4 is the page number
-  %
-  \def\dopdfoutline#1#2#3#4{%
-    % Generate a link to the node text if that exists; else, use the
-    % page number.  We could generate a destination for the section
-    % text in the case where a section has no node, but it doesn't
-    % seem worth the trouble, since most documents are normally structured.
-    \edef\pdfoutlinedest{#3}%
-    \ifx\pdfoutlinedest\empty
-      \def\pdfoutlinedest{#4}%
-    \else
-      \txiescapepdf\pdfoutlinedest
-    \fi
-    %
-    % Also escape PDF chars in the display string.
-    \edef\pdfoutlinetext{#1}%
-    \txiescapepdf\pdfoutlinetext
-    %
-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
-  }
-  %
-  \def\pdfmakeoutlines{%
-    \begingroup
-      % Read toc silently, to get counts of subentries for \pdfoutline.
-      \def\partentry##1##2##3##4{}% ignore parts in the outlines
-      \def\numchapentry##1##2##3##4{%
-       \def\thischapnum{##2}%
-       \def\thissecnum{0}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsecentry##1##2##3##4{%
-       \advancenumber{chap\thischapnum}%
-       \def\thissecnum{##2}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsubsecentry##1##2##3##4{%
-       \advancenumber{sec\thissecnum}%
-       \def\thissubsecnum{##2}%
-      }%
-      \def\numsubsubsecentry##1##2##3##4{%
-       \advancenumber{subsec\thissubsecnum}%
-      }%
-      \def\thischapnum{0}%
-      \def\thissecnum{0}%
-      \def\thissubsecnum{0}%
-      %
-      % use \def rather than \let here because we redefine \chapentry et
-      % al. a second time, below.
-      \def\appentry{\numchapentry}%
-      \def\appsecentry{\numsecentry}%
-      \def\appsubsecentry{\numsubsecentry}%
-      \def\appsubsubsecentry{\numsubsubsecentry}%
-      \def\unnchapentry{\numchapentry}%
-      \def\unnsecentry{\numsecentry}%
-      \def\unnsubsecentry{\numsubsecentry}%
-      \def\unnsubsubsecentry{\numsubsubsecentry}%
-      \readdatafile{toc}%
-      %
-      % Read toc second time, this time actually producing the outlines.
-      % The `-' means take the \expnumber as the absolute number of
-      % subentries, which we calculated on our first read of the .toc above.
-      %
-      % We use the node names as the destinations.
-      \def\numchapentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
-      \def\numsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
-      \def\numsubsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
-      \def\numsubsubsecentry##1##2##3##4{% count is always zero
-        \dopdfoutline{##1}{}{##3}{##4}}%
-      %
-      % PDF outlines are displayed using system fonts, instead of
-      % document fonts.  Therefore we cannot use special characters,
-      % since the encoding is unknown.  For example, the eogonek from
-      % Latin 2 (0xea) gets translated to a | character.  Info from
-      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
-      %
-      % TODO this right, we have to translate 8-bit characters to
-      % their "best" equivalent, based on the @documentencoding.  Too
-      % much work for too little return.  Just use the ASCII equivalents
-      % we use for the index sort strings.
-      % 
-      \indexnofonts
-      \setupdatafile
-      % We can have normal brace characters in the PDF outlines, unlike
-      % Texinfo index files.  So set that up.
-      \def\{{\lbracecharliteral}%
-      \def\}{\rbracecharliteral}%
-      \catcode`\\=\active \otherbackslash
-      \input \tocreadfilename
-    \endgroup
-  }
-  {\catcode`[=1 \catcode`]=2
-   \catcode`{=\other \catcode`}=\other
-   \gdef\lbracecharliteral[{]%
-   \gdef\rbracecharliteral[}]%
-  ]
-  %
-  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
-    \ifx\PP\D\let\nextsp\relax
-    \else\let\nextsp\skipspaces
-      \addtokens{\filename}{\PP}%
-      \advance\filenamelength by 1
-    \fi
-    \nextsp}
-  \def\getfilename#1{%
-    \filenamelength=0
-    % If we don't expand the argument now, \skipspaces will get
-    % snagged on things like "@value{foo}".
-    \edef\temp{#1}%
-    \expandafter\skipspaces\temp|\relax
-  }
-  \ifnum\pdftexversion < 14
-    \let \startlink \pdfannotlink
-  \else
-    \let \startlink \pdfstartlink
-  \fi
-  % make a live url in pdf output.
-  \def\pdfurl#1{%
-    \begingroup
-      % it seems we really need yet another set of dummies; have not
-      % tried to figure out what each command should do in the context
-      % of @url.  for now, just make @/ a no-op, that's the only one
-      % people have actually reported a problem with.
-      %
-      \normalturnoffactive
-      \def\@{@}%
-      \let\/=\empty
-      \makevalueexpandable
-      % do we want to go so far as to use \indexnofonts instead of just
-      % special-casing \var here?
-      \def\var##1{##1}%
-      %
-      \leavevmode\setcolor{\urlcolor}%
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-    \endgroup}
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
-  \def\pdflink#1{%
-    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
-    \setcolor{\linkcolor}#1\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\else
-  % non-pdf mode
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\setcolor = \gobble
-  \let\pdfsetcolor = \gobble
-  \let\pdfmakeoutlines = \relax
-\fi  % \ifx\pdfoutput
-
-
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
-  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
-  \csname ten#1\endcsname  % change the current font
-}
-
-% Select #1 fonts with the current style.
-%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold.  Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly.  There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-% can get a sort of poor man's double spacing by redefining this.
-\def\baselinefactor{1}
-%
-\newdimen\textleading
-\def\setleading#1{%
-  \dimen0 = #1\relax
-  \normalbaselineskip = \baselinefactor\dimen0
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% PDF CMaps.  See also LaTeX's t1.cmap.
-%
-% do nothing with this by default.
-\expandafter\let\csname cmapOT1\endcsname\gobble
-\expandafter\let\csname cmapOT1IT\endcsname\gobble
-\expandafter\let\csname cmapOT1TT\endcsname\gobble
-
-% if we are producing pdf, and we have \pdffontattr, then define cmaps.
-% (\pdffontattr was introduced many years ago, but people still run
-% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\thisisundefined \else
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1-0)
-%%Title: (TeX-OT1-0 TeX OT1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1)
-/Supplement 0
->> def
-/CMapName /TeX-OT1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<23> <26> <0023>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-40 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1IT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1IT-0)
-%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1IT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1IT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<25> <26> <0025>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-42 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<23> <0023>
-<24> <00A3>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1TT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1TT-0)
-%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1TT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1TT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-5 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-endbfrange
-32 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <2191>
-<0C> <2193>
-<0D> <0027>
-<0E> <00A1>
-<0F> <00BF>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-\fi\fi
-
-
-% Set the font macro #1 to the font named \fontprefix#2.
-% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
-% Example:
-% #1 = \textrm
-% #2 = \rmshape
-% #3 = 10
-% #4 = \mainmagstep
-% #5 = OT1
-%
-\def\setfont#1#2#3#4#5{%
-  \font#1=\fontprefix#2#3 scaled #4
-  \csname cmap#5\endcsname#1%
-}
-% This is what gets called when #5 of \setfont is empty.
-\let\cmap\gobble
-%
-% (end of cmaps)
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\thisisundefined
-\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}
-
-% Definitions for a main text size of 11pt.  (The default in Texinfo.)
-%
-\def\definetextfontsizexi{%
-% Text fonts (11.2pt, magstep1).
-\def\textnominalsize{11pt}
-\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1095}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}{OT1}
-\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
-\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
-\setfont\chapsf\sfbshape{17}{1000}{OT1}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-\def\chapecsize{1728}
-
-% Section fonts (14.4pt).
-\def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
-\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep2}{OT1}
-\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}{OT1}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-\def\sececsize{1440}
-
-% Subsection fonts (13.15pt).
-\def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
-\setfont\ssecit\itbshape{10}{1315}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1315}{OT1}
-\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}{OT1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-\def\ssececsize{1200}
-
-% Reduced fonts for @acro in text (10pt).
-\def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}{OT1}
-\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{1000}{OT1}
-\setfont\reducedit\itshape{10}{1000}{OT1IT}
-\setfont\reducedsl\slshape{10}{1000}{OT1}
-\setfont\reducedsf\sfshape{10}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{1000}{OT1}
-\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
-\font\reducedi=cmmi10
-\font\reducedsy=cmsy10
-\def\reducedecsize{1000}
-
-\textleading = 13.2pt % line spacing for 11pt CM
-\textfonts            % reset the current fonts
-\rm
-} % end of 11pt text font size definitions, \definetextfontsizexi
-
-
-% Definitions to make the main text be 10pt Computer Modern, with
-% section, chapter, etc., sizes following suit.  This is for the GNU
-% Press printing of the Emacs 22 manual.  Maybe other manuals in the
-% future.  Used with @smallbook, which sets the leading to 12pt.
-%
-\def\definetextfontsizex{%
-% Text fonts (10pt).
-\def\textnominalsize{10pt}
-\edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1000}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
-\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter fonts (14.4pt).
-\def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
-\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
-\let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
-\font\chapi=cmmi12 scaled \magstep1
-\font\chapsy=cmsy10 scaled \magstep2
-\def\chapecsize{1440}
-
-% Section fonts (12pt).
-\def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}{OT1}
-\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep1}{OT1}
-\setfont\sectt\ttbshape{12}{1000}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
-\setfont\secsf\sfbshape{12}{1000}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}{OT1}
-\font\seci=cmmi12
-\font\secsy=cmsy10 scaled \magstep1
-\def\sececsize{1200}
-
-% Subsection fonts (10pt).
-\def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}{OT1}
-\setfont\ssecit\itbshape{10}{1000}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1000}{OT1}
-\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
-\setfont\ssecsf\sfbshape{10}{1000}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}{OT1}
-\font\sseci=cmmi10
-\font\ssecsy=cmsy10
-\def\ssececsize{1000}
-
-% Reduced fonts for @acro in text (9pt).
-\def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}{OT1}
-\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{900}{OT1}
-\setfont\reducedit\itshape{9}{1000}{OT1IT}
-\setfont\reducedsl\slshape{9}{1000}{OT1}
-\setfont\reducedsf\sfshape{9}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{900}{OT1}
-\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
-\font\reducedi=cmmi9
-\font\reducedsy=cmsy9
-\def\reducedecsize{0900}
-
-\divide\parskip by 2  % reduce space between paragraphs
-\textleading = 12pt   % line spacing for 10pt CM
-\textfonts            % reset the current fonts
-\rm
-} % end of 10pt text font size definitions, \definetextfontsizex
-
-
-% We provide the user-level command
-%   @fonttextsize 10
-% (or 11) to redefine the text font size.  pt is assumed.
-%
-\def\xiword{11}
-\def\xword{10}
-\def\xwordpt{10pt}
-%
-\parseargdef\fonttextsize{%
-  \def\textsizearg{#1}%
-  %\wlog{doing @fonttextsize \textsizearg}%
-  %
-  % Set \globaldefs so that documents can use this inside @tex, since
-  % makeinfo 4.8 does not support it, but we need it nonetheless.
-  %
- \begingroup \globaldefs=1
-  \ifx\textsizearg\xword \definetextfontsizex
-  \else \ifx\textsizearg\xiword \definetextfontsizexi
-  \else
-    \errhelp=\EMsimple
-    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
-  \fi\fi
- \endgroup
-}
-
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families.  Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
-  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
-  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
-  \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE.  We do this because \STYLE needs to also set the
-% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
-%
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower).  These relative commands are used in
-% the LaTeX logo and acronyms.
-%
-% This all needs generalizing, badly.
-%
-\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\tenttsl=\textttsl
-  \def\curfontsize{text}%
-  \def\lsize{reduced}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
-  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
-  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
-  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
-  \let\tenttsl=\titlettsl
-  \def\curfontsize{title}%
-  \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{27pt}}
-\def\titlefont#1{{\titlefonts\rmisbold #1}}
-\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
-  \let\tenttsl=\chapttsl
-  \def\curfontsize{chap}%
-  \def\lsize{sec}\def\lllsize{text}%
-  \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
-  \let\tenttsl=\secttsl
-  \def\curfontsize{sec}%
-  \def\lsize{subsec}\def\lllsize{reduced}%
-  \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
-  \let\tenttsl=\ssecttsl
-  \def\curfontsize{ssec}%
-  \def\lsize{text}\def\lllsize{small}%
-  \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts
-\def\reducedfonts{%
-  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
-  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
-  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
-  \let\tenttsl=\reducedttsl
-  \def\curfontsize{reduced}%
-  \def\lsize{small}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallfonts{%
-  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
-  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
-  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
-  \let\tenttsl=\smallttsl
-  \def\curfontsize{small}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
-  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
-  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
-  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
-  \let\tenttsl=\smallerttsl
-  \def\curfontsize{smaller}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{9.5pt}}
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
-
-% Define these just so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-%   8.5x11=86   smallbook=72  a4=90  a5=69
-% If we use \scriptfonts (8pt), then we can fit this many characters:
-%   8.5x11=90+  smallbook=80  a4=90+  a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt.  So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-%   8.5x11=71  smallbook=60  a4=75  a5=58
-% --karl, 24jan03.
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\definetextfontsizexi
-
-
-\message{markup,}
-
-% 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 }
-
-% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
-% define and register \INITMACRO to be called on markup style changes.
-% \INITMACRO can check \currentmarkupstyle for the innermost
-% style and the set of \ifmarkupSTYLE switches for all styles
-% currently in effect.
-\newif\ifmarkupvar
-\newif\ifmarkupsamp
-\newif\ifmarkupkey
-%\newif\ifmarkupfile % @file == @samp.
-%\newif\ifmarkupoption % @option == @samp.
-\newif\ifmarkupcode
-\newif\ifmarkupkbd
-%\newif\ifmarkupenv % @env == @code.
-%\newif\ifmarkupcommand % @command == @code.
-\newif\ifmarkuptex % @tex (and part of @math, for now).
-\newif\ifmarkupexample
-\newif\ifmarkupverb
-\newif\ifmarkupverbatim
-
-\let\currentmarkupstyle\empty
-
-\def\setupmarkupstyle#1{%
-  \csname markup#1true\endcsname
-  \def\currentmarkupstyle{#1}%
-  \markupstylesetup
-}
-
-\let\markupstylesetup\empty
-
-\def\defmarkupstylesetup#1{%
-  \expandafter\def\expandafter\markupstylesetup
-    \expandafter{\markupstylesetup #1}%
-  \def#1%
-}
-
-% Markup style setup for left and right quotes.
-\defmarkupstylesetup\markupsetuplq{%
-  \expandafter\let\expandafter \temp
-    \csname markupsetuplq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
-}
-
-\defmarkupstylesetup\markupsetuprq{%
-  \expandafter\let\expandafter \temp
-    \csname markupsetuprq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
-}
-
-{
-\catcode`\'=\active
-\catcode`\`=\active
-
-\gdef\markupsetuplqdefault{\let`\lq}
-\gdef\markupsetuprqdefault{\let'\rq}
-
-\gdef\markupsetcodequoteleft{\let`\codequoteleft}
-\gdef\markupsetcodequoteright{\let'\codequoteright}
-}
-
-\let\markupsetuplqcode \markupsetcodequoteleft
-\let\markupsetuprqcode \markupsetcodequoteright
-%
-\let\markupsetuplqexample \markupsetcodequoteleft
-\let\markupsetuprqexample \markupsetcodequoteright
-%
-\let\markupsetuplqkbd     \markupsetcodequoteleft
-\let\markupsetuprqkbd     \markupsetcodequoteright
-%
-\let\markupsetuplqsamp \markupsetcodequoteleft
-\let\markupsetuprqsamp \markupsetcodequoteright
-%
-\let\markupsetuplqverb \markupsetcodequoteleft
-\let\markupsetuprqverb \markupsetcodequoteright
-%
-\let\markupsetuplqverbatim \markupsetcodequoteleft
-\let\markupsetuprqverbatim \markupsetcodequoteright
-
-% Allow an option to not use regular directed right quote/apostrophe
-% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
-% The undirected quote is ugly, so don't make it the default, but it
-% works for pasting with more pdf viewers (at least evince), the
-% lilypond developers report.  xpdf does work with the regular 0x27.
-%
-\def\codequoteright{%
-  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
-    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
-      '%
-    \else \char'15 \fi
-  \else \char'15 \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-%
-\def\codequoteleft{%
-  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
-    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
-      % [Knuth] pp. 380,381,391
-      % \relax disables Spanish ligatures ?` and !` of \tt font.
-      \relax`%
-    \else \char'22 \fi
-  \else \char'22 \fi
-}
-
-% Commands to set the quote options.
-% 
-\parseargdef\codequoteundirected{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxicodequoteundirected\endcsname
-      = t%
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxicodequoteundirected\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
-  \fi\fi
-}
-%
-\parseargdef\codequotebacktick{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxicodequotebacktick\endcsname
-      = t%
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxicodequotebacktick\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
-  \fi\fi
-}
-
-% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
-\def\noligaturesquoteleft{\relax\lq}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Font commands.
-
-% #1 is the font command (\sl or \it), #2 is the text to slant.
-% If we are in a monospaced environment, however, 1) always use \ttsl,
-% and 2) do not add an italic correction.
-\def\dosmartslant#1#2{%
-  \ifusingtt 
-    {{\ttsl #2}\let\next=\relax}%
-    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
-  \next
-}
-\def\smartslanted{\dosmartslant\sl}
-\def\smartitalic{\dosmartslant\it}
-
-% Output an italic correction unless \next (presumed to be the following
-% character) is such as not to need one.
-\def\smartitaliccorrection{%
-  \ifx\next,%
-  \else\ifx\next-%
-  \else\ifx\next.%
-  \else\ifx\next\.%
-  \else\ifx\next\comma%
-  \else\ptexslash
-  \fi\fi\fi\fi\fi
-  \aftersmartic
-}
-
-% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
-\def\ttslanted#1{{\ttsl #1}}
-
-% @cite is like \smartslanted except unconditionally use \sl.  We never want
-% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
-
-\def\aftersmartic{}
-\def\var#1{%
-  \let\saveaftersmartic = \aftersmartic
-  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
-  \smartslanted{#1}%
-}
-
-\let\i=\smartitalic
-\let\slanted=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}}              % roman font
-\def\sc#1{{\smallcaps#1}}       % smallcaps font
-\def\ii#1{{\it #1}}             % italic font
-
-% @b, explicit bold.  Also @strong.
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% @sansserif, explicit sans.
-\def\sansserif#1{{\sf #1}}
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph.  Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
-  \def\plainfrenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
-    \def\endofsentencespacefactor{1000}% for @. and friends
-  }
-  \def\plainnonfrenchspacing{%
-    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
-    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
-    \def\endofsentencespacefactor{3000}% for @. and friends
-  }
-\catcode`@=\other
-\def\endofsentencespacefactor{3000}% default
-
-% @t, explicit typewriter.
-\def\t#1{%
-  {\tt \rawbackslash \plainfrenchspacing #1}%
-  \null
-}
-
-% @samp.
-\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-
-% @indicateurl is \samp, that is, with quotes.
-\let\indicateurl=\samp
-
-% @code (and similar) prints in typewriter, but with spaces the same
-% size as normal in the surrounding text, without hyphenation, etc.
-% This is a subroutine for that.
-\def\tclose#1{%
-  {%
-    % Change normal interword space to be same as for the current font.
-    \spaceskip = \fontdimen2\font
-    %
-    % Switch to typewriter.
-    \tt
-    %
-    % But `\ ' produces the large typewriter interword space.
-    \def\ {{\spaceskip = 0pt{} }}%
-    %
-    % Turn off hyphenation.
-    \nohyphenation
-    %
-    \rawbackslash
-    \plainfrenchspacing
-    #1%
-  }%
-  \null % reset spacefactor to 1000
-}
-
-% We *must* turn on hyphenation at `-' and `_' in @code.
-% (But see \codedashfinish below.)
-% 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 at a dash. -- rms.
-{
-  \catcode`\-=\active \catcode`\_=\active
-  \catcode`\'=\active \catcode`\`=\active
-  \global\let'=\rq \global\let`=\lq  % default definitions
-  %
-  \global\def\code{\begingroup
-    \setupmarkupstyle{code}%
-    % The following should really be moved into \setupmarkupstyle handlers.
-    \catcode\dashChar=\active  \catcode\underChar=\active
-    \ifallowcodebreaks
-     \let-\codedash
-     \let_\codeunder
-    \else
-     \let-\normaldash
-     \let_\realunder
-    \fi
-    % Given -foo (with a single dash), we do not want to allow a break
-    % after the hyphen.
-    \global\let\codedashprev=\codedash
-    %
-    \codex
-  }
-  %
-  \gdef\codedash{\futurelet\next\codedashfinish}
-  \gdef\codedashfinish{%
-    \normaldash % always output the dash character itself.
-    % 
-    % Now, output a discretionary to allow a line break, unless
-    % (a) the next character is a -, or
-    % (b) the preceding character is a -.
-    % E.g., given --posix, we do not want to allow a break after either -.
-    % Given --foo-bar, we do want to allow a break between the - and the b.
-    \ifx\next\codedash \else
-      \ifx\codedashprev\codedash 
-      \else \discretionary{}{}{}\fi
-    \fi
-    % we need the space after the = for the case when \next itself is a
-    % space token; it would get swallowed otherwise.  As in @code{- a}.
-    \global\let\codedashprev= \next
-  }
-}
-\def\normaldash{-}
-%
-\def\codex #1{\tclose{#1}\endgroup}
-
-\def\codeunder{%
-  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
-  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
-  % will therefore expand the active definition of _, which is us
-  % (inside @code that is), therefore an endless loop.
-  \ifusingtt{\ifmmode
-               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
-             \else\normalunderscore \fi
-             \discretionary{}{}{}}%
-            {\_}%
-}
-
-% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is bad.
-% @allowcodebreaks provides a document-level way to turn breaking at -
-% and _ on and off.
-%
-\newif\ifallowcodebreaks  \allowcodebreakstrue
-
-\def\keywordtrue{true}
-\def\keywordfalse{false}
-
-\parseargdef\allowcodebreaks{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\keywordtrue
-    \allowcodebreakstrue
-  \else\ifx\txiarg\keywordfalse
-    \allowcodebreaksfalse
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
-  \fi\fi
-}
-
-% For @command, @env, @file, @option quotes seem unnecessary,
-% so use \code rather than \samp.
-\let\command=\code
-\let\env=\code
-\let\file=\code
-\let\option=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself.  First (mandatory) arg is the url.
-% (This \urefnobreak definition isn't used now, leaving it for a while
-% for comparison.)
-\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
-\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
-  \unsepspaces
-  \pdfurl{#1}%
-  \setbox0 = \hbox{\ignorespaces #3}%
-  \ifdim\wd0 > 0pt
-    \unhbox0 % third arg given, show only that
-  \else
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0 > 0pt
-      \ifpdf
-        \unhbox0             % PDF: 2nd arg given, show only it
-      \else
-        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
-      \fi
-    \else
-      \code{#1}% only url given, so show it
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% This \urefbreak definition is the active one.
-\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
-\let\uref=\urefbreak
-\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
-\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
-  \unsepspaces
-  \pdfurl{#1}%
-  \setbox0 = \hbox{\ignorespaces #3}%
-  \ifdim\wd0 > 0pt
-    \unhbox0 % third arg given, show only that
-  \else
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0 > 0pt
-      \ifpdf
-        \unhbox0             % PDF: 2nd arg given, show only it
-      \else
-        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
-      \fi
-    \else
-      \urefcode{#1}% only url given, so show it
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% Allow line breaks around only a few characters (only).
-\def\urefcatcodes{%
-  \catcode\ampChar=\active   \catcode\dotChar=\active
-  \catcode\hashChar=\active  \catcode\questChar=\active
-  \catcode\slashChar=\active
-}
-{
-  \urefcatcodes
-  %
-  \global\def\urefcode{\begingroup
-    \setupmarkupstyle{code}%
-    \urefcatcodes
-    \let&\urefcodeamp
-    \let.\urefcodedot
-    \let#\urefcodehash
-    \let?\urefcodequest
-    \let/\urefcodeslash
-    \codex
-  }
-  %
-  % By default, they are just regular characters.
-  \global\def&{\normalamp}
-  \global\def.{\normaldot}
-  \global\def#{\normalhash}
-  \global\def?{\normalquest}
-  \global\def/{\normalslash}
-}
-
-% we put a little stretch before and after the breakable chars, to help
-% line breaking of long url's.  The unequal skips make look better in
-% cmtt at least, especially for dots.
-\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
-\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
-%
-\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
-\def\urefcodedot{\urefprestretch .\urefpoststretch}
-\def\urefcodehash{\urefprestretch \#\urefpoststretch}
-\def\urefcodequest{\urefprestretch ?\urefpoststretch}
-\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
-{
-  \catcode`\/=\active
-  \global\def\urefcodeslashfinish{%
-    \urefprestretch \slashChar
-    % Allow line break only after the final / in a sequence of
-    % slashes, to avoid line break between the slashes in http://.
-    \ifx\next/\else \urefpoststretch \fi
-  }
-}
-
-% One more complication: by default we'll break after the special
-% characters, but some people like to break before the special chars, so
-% allow that.  Also allow no breaking at all, for manual control.
-% 
-\parseargdef\urefbreakstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\wordnone
-    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
-  \else\ifx\txiarg\wordbefore
-    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
-  \else\ifx\txiarg\wordafter
-    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
-  \fi\fi\fi
-}
-\def\wordafter{after}
-\def\wordbefore{before}
-\def\wordnone{none}
-
-\urefbreakstyle after
-
-% @url synonym for @uref, since that's how everyone uses it.
-%
-\let\url=\uref
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
-  \def\email#1{\doemail#1,,\finish}
-  \def\doemail#1,#2,#3\finish{\begingroup
-    \unsepspaces
-    \pdfurl{mailto:#1}%
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
-    \endlink
-  \endgroup}
-\else
-  \let\email=\uref
-\fi
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-%   `example' (@kbd uses ttsl only inside of @example and friends),
-%   or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\txiarg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\txiarg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
-
-\def\xkey{\key}
-\def\kbdsub#1#2#3\par{%
-  \def\one{#1}\def\three{#3}\def\threex{??}%
-  \ifx\one\xkey\ifx\threex\three \key{#2}%
-  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-}
-
-% definition of @key that produces a lozenge.  Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-%    \vbox{\hrule\kern-0.4pt
-%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-%    \kern-0.4pt\hrule}%
-%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge.  If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle.  But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
-  \nohyphenation
-  \ifmonospace\else\tt\fi
-  #1}\null}
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow   (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
-% 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 @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-% @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}
-
-% @acronym for "FBI", "NATO", and the like.
-% We print this one point size smaller, since it's intended for
-% all-uppercase.
-%
-\def\acronym#1{\doacronym #1,,\finish}
-\def\doacronym#1,#2,#3\finish{%
-  {\selectfonts\lsize #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-  \null % reset \spacefactor=1000
-}
-
-% @abbr for "Comput. J." and the like.
-% No font change, but don't do end-of-sentence spacing.
-%
-\def\abbr#1{\doabbr #1,,\finish}
-\def\doabbr#1,#2,#3\finish{%
-  {\plainfrenchspacing #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-  \null % reset \spacefactor=1000
-}
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a math (or tt) \.
-% FYI, plain.tex uses \\ as a temporary control sequence (for no
-% particular reason), but this is not advertised and we don't care.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \catcode`' = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-    \let' = \ptexquoteright
-  }
-}
-
-% ctrl is no longer a Texinfo command, but leave this definition for fun.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
-% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
-% except specified as a normal braced arg, so no newlines to worry about.
-% 
-\def\outfmtnametex{tex}
-%
-\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
-\long\def\doinlinefmt#1,#2,\finish{%
-  \def\inlinefmtname{#1}%
-  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
-}
-% 
-% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
-% FMTNAME is tex, else ELSE-TEXT.
-\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
-\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{%
-  \def\inlinefmtname{#1}%
-  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi
-}
-%
-% For raw, must switch into @tex before parsing the argument, to avoid
-% setting catcodes prematurely.  Doing it this way means that, for
-% example, @inlineraw{html, foo{bar} gets a parse error instead of being
-% ignored.  But this isn't important because if people want a literal
-% *right* brace they would have to use a command anyway, so they may as
-% well use a command to get a left brace too.  We could re-use the
-% delimiter character idea from \verb, but it seems like overkill.
-% 
-\long\def\inlineraw{\tex \doinlineraw}
-\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
-\def\doinlinerawtwo#1,#2,\finish{%
-  \def\inlinerawname{#1}%
-  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
-  \endgroup % close group opened by \tex.
-}
-
-% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set.
-%
-\long\def\inlineifset#1{\doinlineifset #1,\finish}
-\long\def\doinlineifset#1,#2,\finish{%
-  \def\inlinevarname{#1}%
-  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax
-  \else\ignorespaces#2\fi
-}
-
-% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set.
-%
-\long\def\inlineifclear#1{\doinlineifclear #1,\finish}
-\long\def\doinlineifclear#1,#2,\finish{%
-  \def\inlinevarname{#1}%
-  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi
-}
-
-
-\message{glyphs,}
-% and logos.
-
-% @@ prints an @, as does @atchar{}.
-\def\@{\char64 }
-\let\atchar=\@
-
-% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
-\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \ptexc
-\let\dotaccent = \ptexdot
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \ptext
-\let\ubaraccent = \ptexb
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
-  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence.  (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{%
-     \ifx\textnominalsize\xwordpt
-       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
-       % Revert to plain's \scriptsize, which is 7pt.
-       \count255=\the\fam $\fam\count255 \scriptstyle A$%
-     \else
-       % For 11pt, we can use our lllsize.
-       \selectfonts\lllsize A%
-     \fi
-     }%
-     \vss
-  }}%
-  \kern-.15em
-  \TeX
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em.  So do
-% whichever is larger.
-%
-\def\dots{%
-  \leavevmode
-  \setbox0=\hbox{...}% get width of three periods
-  \ifdim\wd0 > 1.5em
-    \dimen0 = \wd0
-  \else
-    \dimen0 = 1.5em
-  \fi
-  \hbox to \dimen0{%
-    \hskip 0pt plus.25fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, they should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
-\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
-   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
-   \advance\hsize by -2\dimen2 % Rules.
-   \vbox{%
-      \hrule height\dimen2
-      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
-         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
-         \kern3pt\vrule width\dimen2}% Space to right.
-      \hrule height\dimen2}
-    \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
-%
-\def\pounds{{\it\$}}
-
-% @euro{} comes from a separate font, depending on the current style.
-% We use the free feym* fonts from the eurosym package by Henrik
-% Theiling, which support regular, slanted, bold and bold slanted (and
-% "outlined" (blackboard board, sort of) versions, which we don't need).
-% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-%
-% Although only regular is the truly official Euro symbol, we ignore
-% that.  The Euro is designed to be slightly taller than the regular
-% font height.
-%
-% feymr - regular
-% feymo - slanted
-% feybr - bold
-% feybo - bold slanted
-%
-% There is no good (free) typewriter version, to my knowledge.
-% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
-% Hmm.
-%
-% Also doesn't work in math.  Do we need to do math with euro symbols?
-% Hope not.
-%
-%
-\def\euro{{\eurofont e}}
-\def\eurofont{%
-  % We set the font at each command, rather than predefining it in
-  % \textfonts and the other font-switching commands, so that
-  % installations which never need the symbol don't have to have the
-  % font installed.
-  %
-  % There is only one designed size (nominal 10pt), so we always scale
-  % that to the current nominal size.
-  %
-  % By the way, simply using "at 1em" works for cmr10 and the like, but
-  % does not work for cmbx10 and other extended/shrunken fonts.
-  %
-  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
-  %
-  \ifx\curfontstyle\bfstylename
-    % bold:
-    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
-  \else
-    % regular:
-    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
-  \fi
-  \thiseurofont
-}
-
-% Glyphs from the EC fonts.  We don't use \let for the aliases, because
-% sometimes we redefine the original macro, and the alias should reflect
-% the redefinition.
-%
-% Use LaTeX names for the Icelandic letters.
-\def\DH{{\ecfont \char"D0}} % Eth
-\def\dh{{\ecfont \char"F0}} % eth
-\def\TH{{\ecfont \char"DE}} % Thorn
-\def\th{{\ecfont \char"FE}} % thorn
-%
-\def\guillemetleft{{\ecfont \char"13}}
-\def\guillemotleft{\guillemetleft}
-\def\guillemetright{{\ecfont \char"14}}
-\def\guillemotright{\guillemetright}
-\def\guilsinglleft{{\ecfont \char"0E}}
-\def\guilsinglright{{\ecfont \char"0F}}
-\def\quotedblbase{{\ecfont \char"12}}
-\def\quotesinglbase{{\ecfont \char"0D}}
-%
-% This positioning is not perfect (see the ogonek LaTeX package), but
-% we have the precomposed glyphs for the most common cases.  We put the
-% tests to use those glyphs in the single \ogonek macro so we have fewer
-% dummy definitions to worry about for index entries, etc.
-%
-% ogonek is also used with other letters in Lithuanian (IOU), but using
-% the precomposed glyphs for those is not so easy since they aren't in
-% the same EC font.
-\def\ogonek#1{{%
-  \def\temp{#1}%
-  \ifx\temp\macrocharA\Aogonek
-  \else\ifx\temp\macrochara\aogonek
-  \else\ifx\temp\macrocharE\Eogonek
-  \else\ifx\temp\macrochare\eogonek
-  \else
-    \ecfont \setbox0=\hbox{#1}%
-    \ifdim\ht0=1ex\accent"0C #1%
-    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
-    \fi
-  \fi\fi\fi\fi
-  }%
-}
-\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
-\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
-\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
-\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
-%
-% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
-\def\ecfont{%
-  % We can't distinguish serif/sans and italic/slanted, but this
-  % is used for crude hacks anyway (like adding French and German
-  % quotes to documents typeset with CM, where we lose kerning), so
-  % hopefully nobody will notice/care.
-  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
-  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifmonospace
-    % typewriter:
-    \font\thisecfont = ectt\ecsize \space at \nominalsize
-  \else
-    \ifx\curfontstyle\bfstylename
-      % bold:
-      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
-    \else
-      % regular:
-      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
-    \fi
-  \fi
-  \thisecfont
-}
-
-% @registeredsymbol - R in a circle.  The font for the R should really
-% be smaller yet, but lllsize is the best we can do for now.
-% Adapted from the plain.tex definition of \copyright.
-%
-\def\registeredsymbol{%
-  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
-               \hfil\crcr\Orb}}%
-    }$%
-}
-
-% @textdegree - the normal degrees sign.
-%
-\def\textdegree{$^\circ$}
-
-% Laurent Siebenmann reports \Orb undefined with:
-%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
-% so we'll define it if necessary.
-%
-\ifx\Orb\thisisundefined
-\def\Orb{\mathhexbox20D}
-\fi
-
-% Quotes.
-\chardef\quotedblleft="5C
-\chardef\quotedblright=`\"
-\chardef\quoteleft=`\`
-\chardef\quoteright=`\'
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page.  Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\parseargdef\shorttitlepage{%
-  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-  \endgroup\page\hbox{}\page}
-
-\envdef\titlepage{%
-  % Open one extra group, as we want to close it in the middle of \Etitlepage.
-  \begingroup
-    \parindent=0pt \textfonts
-    % Leave some space at the very top of the page.
-    \vglue\titlepagetopglue
-    % No rule at page bottom unless we print one at the top with @title.
-    \finishedtitlepagetrue
-    %
-    % Most title ``pages'' are actually two pages long, with space
-    % at the top of the second.  We don't want the ragged left on the second.
-    \let\oldpage = \page
-    \def\page{%
-      \iffinishedtitlepage\else
-        \finishtitlepage
-      \fi
-      \let\page = \oldpage
-      \page
-      \null
-    }%
-}
-
-\def\Etitlepage{%
-    \iffinishedtitlepage\else
-       \finishtitlepage
-    \fi
-    % It is important to do the page break before ending the group,
-    % because the headline and footline are only empty inside the group.
-    % If we use the new definition of \page, we always get a blank page
-    % after the title page, which we certainly don't want.
-    \oldpage
-  \endgroup
-  %
-  % Need this before the \...aftertitlepage checks so that if they are
-  % in effect the toc pages will come out with page numbers.
-  \HEADINGSon
-  %
-  % If they want short, they certainly want long too.
-  \ifsetshortcontentsaftertitlepage
-    \shortcontents
-    \contents
-    \global\let\shortcontents = \relax
-    \global\let\contents = \relax
-  \fi
-  %
-  \ifsetcontentsaftertitlepage
-    \contents
-    \global\let\contents = \relax
-    \global\let\shortcontents = \relax
-  \fi
-}
-
-\def\finishtitlepage{%
-  \vskip4pt \hrule height 2pt width \hsize
-  \vskip\titlepagebottomglue
-  \finishedtitlepagetrue
-}
-
-% Settings used for typesetting titles: no hyphenation, no indentation,
-% don't worry much about spacing, ragged right.  This should be used
-% inside a \vbox, and fonts need to be set appropriately first.  Because
-% it is always used for titles, nothing else, we call \rmisbold.  \par
-% should be specified before the end of the \vbox, since a vbox is a group.
-% 
-\def\raggedtitlesettings{%
-  \rmisbold
-  \hyphenpenalty=10000
-  \parindent=0pt
-  \tolerance=5000
-  \ptexraggedright
-}
-
-% Macros to be used within @titlepage:
-
-\let\subtitlerm=\tenrm
-\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-
-\parseargdef\title{%
-  \checkenv\titlepage
-  \vbox{\titlefonts \raggedtitlesettings #1\par}%
-  % print a rule at the page bottom also.
-  \finishedtitlepagefalse
-  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
-}
-
-\parseargdef\subtitle{%
-  \checkenv\titlepage
-  {\subtitlefont \rightline{#1}}%
-}
-
-% @author should come last, but may come many times.
-% It can also be used inside @quotation.
-%
-\parseargdef\author{%
-  \def\temp{\quotation}%
-  \ifx\thisenv\temp
-    \def\quotationauthor{#1}% printed in \Equotation.
-  \else
-    \checkenv\titlepage
-    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
-    {\secfonts\rmisbold \leftline{#1}}%
-  \fi
-}
-
-
-% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline    % headline on even pages
-\newtoks\oddheadline     % headline on odd pages
-\newtoks\evenfootline    % footline on even pages
-\newtoks\oddfootline     % footline on odd pages
-
-% Now make TeX use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
-                            \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
-                            \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what  @headings on  does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
-\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
-\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
-\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
-\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
-  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
-  %
-  % Leave some space for the footline.  Hopefully ok to assume
-  % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -12pt
-  \global\advance\vsize by -12pt
-}
-
-\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-
-% @evenheadingmarks top     \thischapter <- chapter at the top of a page
-% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
-%
-% The same set of arguments for:
-%
-% @oddheadingmarks
-% @evenfootingmarks
-% @oddfootingmarks
-% @everyheadingmarks
-% @everyfootingmarks
-
-\def\evenheadingmarks{\headingmarks{even}{heading}}
-\def\oddheadingmarks{\headingmarks{odd}{heading}}
-\def\evenfootingmarks{\headingmarks{even}{footing}}
-\def\oddfootingmarks{\headingmarks{odd}{footing}}
-\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
-                          \headingmarks{odd}{heading}{#1} }
-\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
-                          \headingmarks{odd}{footing}{#1} }
-% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
-\def\headingmarks#1#2#3 {%
-  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
-  \global\expandafter\let\csname get#1#2marks\endcsname \temp
-}
-
-\everyheadingmarks bottom
-\everyfootingmarks bottom
-
-% @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 at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\headingsoff{% non-global headings elimination
-  \evenheadline={\hfil}\evenfootline={\hfil}%
-   \oddheadline={\hfil}\oddfootline={\hfil}%
-}
-
-\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
-\HEADINGSoff  % it's the default
-
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\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{%
-\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}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\thisisundefined
-\def\today{%
-  \number\day\space
-  \ifcase\month
-  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
-  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
-  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
-  \fi
-  \space\number\year}
-\fi
-
-% @settitle line...  specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg{\gdef\thistitle}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent  \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin  \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemindicate{#1}}%
-  \itemindex{#1}%
-  \nobreak % This prevents a break before @itemx.
-  %
-  % If the item text does not fit in the space we have, put it on a line
-  % by itself, and do not allow a page break either before or after that
-  % line.  We do not start a paragraph here because then if the next
-  % command is, e.g., @kindex, the whatsit would get put into the
-  % horizontal list on a line by itself, resulting in extra blank space.
-  \ifdim \wd0>\itemmax
-    %
-    % Make this a paragraph so we get the \parskip glue and wrapping,
-    % but leave it ragged-right.
-    \begingroup
-      \advance\leftskip by-\tableindent
-      \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil\relax
-      \leavevmode\unhbox0\par
-    \endgroup
-    %
-    % We're going to be starting a paragraph, but we don't want the
-    % \parskip glue -- logically it's part of the @item we just started.
-    \nobreak \vskip-\parskip
-    %
-    % Stop a page break at the \parskip glue coming up.  However, if
-    % what follows is an environment such as @example, there will be no
-    % \parskip glue; then the negative vskip we just inserted would
-    % cause the example and the item to crash together.  So we use this
-    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
-    % \parskip glue after all.  Section titles are handled this way also.
-    %
-    \penalty 10001
-    \endgroup
-    \itemxneedsnegativevskipfalse
-  \else
-    % The item text fits into the space.  Start a paragraph, so that the
-    % following text (if any) will end up on the same line.
-    \noindent
-    % Do this with kerns and \unhbox so that if there is a footnote in
-    % the item text, it can migrate to the main vertical list and
-    % eventually be printed.
-    \nobreak\kern-\tableindent
-    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
-    \unhbox0
-    \nobreak\kern\dimen0
-    \endgroup
-    \itemxneedsnegativevskiptrue
-  \fi
-}
-
-\def\item{\errmessage{@item while not in a list environment}}
-\def\itemx{\errmessage{@itemx while not in a list environment}}
-
-% @table, @ftable, @vtable.
-\envdef\table{%
-  \let\itemindex\gobble
-  \tablecheck{table}%
-}
-\envdef\ftable{%
-  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-  \tablecheck{ftable}%
-}
-\envdef\vtable{%
-  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-  \tablecheck{vtable}%
-}
-\def\tablecheck#1{%
-  \ifnum \the\catcode`\^^M=\active
-    \endgroup
-    \errmessage{This command won't work in this context; perhaps the problem is
-      that we are \inenvironment\thisenv}%
-    \def\next{\doignore{#1}}%
-  \else
-    \let\next\tablex
-  \fi
-  \next
-}
-\def\tablex#1{%
-  \def\itemindicate{#1}%
-  \parsearg\tabley
-}
-\def\tabley#1{%
-  {%
-    \makevalueexpandable
-    \edef\temp{\noexpand\tablez #1\space\space\space}%
-    \expandafter
-  }\temp \endtablez
-}
-\def\tablez #1 #2 #3 #4\endtablez{%
-  \aboveenvbreak
-  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
-  \ifnum 0#2>0 \tableindent=#2\mil \fi
-  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
-  \itemmax=\tableindent
-  \advance \itemmax by -\itemmargin
-  \advance \leftskip by \tableindent
-  \exdentamount=\tableindent
-  \parindent = 0pt
-  \parskip = \smallskipamount
-  \ifdim \parskip=0pt \parskip=2pt \fi
-  \let\item = \internalBitem
-  \let\itemx = \internalBitemx
-}
-\def\Etable{\endgraf\afterenvbreak}
-\let\Eftable\Etable
-\let\Evtable\Etable
-\let\Eitemize\Etable
-\let\Eenumerate\Etable
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\envdef\itemize{\parsearg\doitemize}
-
-\def\doitemize#1{%
-  \aboveenvbreak
-  \itemmax=\itemindent
-  \advance\itemmax by -\itemmargin
-  \advance\leftskip by \itemindent
-  \exdentamount=\itemindent
-  \parindent=0pt
-  \parskip=\smallskipamount
-  \ifdim\parskip=0pt \parskip=2pt \fi
-  %
-  % Try typesetting the item mark that if the document erroneously says
-  % something like @itemize @samp (intending @table), there's an error
-  % right away at the @itemize.  It's not the best error message in the
-  % world, but it's better than leaving it to the @item.  This means if
-  % the user wants an empty mark, they have to say @w{} not just @w.
-  \def\itemcontents{#1}%
-  \setbox0 = \hbox{\itemcontents}%
-  %
-  % @itemize with no arg is equivalent to @itemize @bullet.
-  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
-  %
-  \let\item=\itemizeitem
-}
-
-% Definition of @item while inside @itemize and @enumerate.
-%
-\def\itemizeitem{%
-  \advance\itemno by 1  % for enumerations
-  {\let\par=\endgraf \smallbreak}% reasonable place to break
-  {%
-   % If the document has an @itemize directly after a section title, a
-   % \nobreak will be last on the list, and \sectionheading will have
-   % done a \vskip-\parskip.  In that case, we don't want to zero
-   % parskip, or the item text will crash with the heading.  On the
-   % other hand, when there is normal text preceding the item (as there
-   % usually is), we do want to zero parskip, or there would be too much
-   % space.  In that case, we won't have a \nobreak before.  At least
-   % that's the theory.
-   \ifnum\lastpenalty<10000 \parskip=0in \fi
-   \noindent
-   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
-   %
-   \vadjust{\penalty 1200}}% not good to break after first line of item.
-  \flushcr
-}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list.  No
-% argument is the same as `1'.
-%
-\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  % If we were given no argument, pretend we were given `1'.
-  \def\thearg{#1}%
-  \ifx\thearg\empty \def\thearg{1}\fi
-  %
-  % Detect if the argument is a single token.  If so, it might be a
-  % letter.  Otherwise, the only valid thing it can be is a number.
-  % (We will always have one token, because of the test we just made.
-  % This is a good thing, since \splitoff doesn't work given nothing at
-  % all -- the first parameter is undelimited.)
-  \expandafter\splitoff\thearg\endmark
-  \ifx\rest\empty
-    % Only one token in the argument.  It could still be anything.
-    % A ``lowercase letter'' is one whose \lccode is nonzero.
-    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
-    %   not equal to itself.
-    % Otherwise, we assume it's a number.
-    %
-    % We need the \relax at the end of the \ifnum lines to stop TeX from
-    % continuing to look for a <number>.
-    %
-    \ifnum\lccode\expandafter`\thearg=0\relax
-      \numericenumerate % a number (we hope)
-    \else
-      % It's a letter.
-      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
-        \lowercaseenumerate % lowercase letter
-      \else
-        \uppercaseenumerate % uppercase letter
-      \fi
-    \fi
-  \else
-    % Multiple tokens in the argument.  We hope it's a number.
-    \numericenumerate
-  \fi
-}
-
-% An @enumerate whose labels are integers.  The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
-  \itemno = \thearg
-  \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more lowercase letters in @enumerate; get a bigger
-                  alphabet}%
-    \fi
-    \char\lccode\itemno
-  }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more uppercase letters in @enumerate; get a bigger
-                  alphabet}
-    \fi
-    \char\uccode\itemno
-  }%
-}
-
-% Call \doitemize, adding a period to the first argument and supplying the
-% common last two arguments.  Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
-  \advance\itemno by -1
-  \doitemize{#1.}\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @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.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-%   @multitable @columnfractions .25 .3 .45
-%   @item ...
-%
-%   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.
-
-% 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 do not need to be on their own lines, but it will not hurt
-% if they are.
-
-% Sample multitable:
-
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item first col stuff @tab second col stuff @tab third col
-%   @item
-%   first col stuff
-%   @tab
-%   second col stuff
-%   @tab
-%   third col
-%   @item first col stuff @tab second col stuff
-%   @tab Many paragraphs of text may be used in any column.
-%
-%         They will wrap at the width determined by the template.
-%   @item@tab@tab This will be in third column.
-%   @end multitable
-
-% Default dimensions may be reset by user.
-% @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.
-%
-\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\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the @columnfraction, usually a decimal number like .5, but might
-% be just 1.  We just use it, whatever it is.
-%
-\def\pickupwholefraction#1 {%
-  \global\advance\colcount by 1
-  \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\xcolumnfractions
-      \global\setpercenttrue
-    \else
-      \ifsetpercent
-         \let\go\pickupwholefraction
-      \else
-         \global\advance\colcount by 1
-         \setbox0=\hbox{#1\unskip\space}% 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
-    \ifx\go\pickupwholefraction
-      % Put the argument back for the \pickupwholefraction call, so
-      % we'll always have a period there to be parsed.
-      \def\go{\pickupwholefraction#1}%
-    \else
-      \let\go = \setuptable
-    \fi%
-  \fi
-  \go
-}
-
-% multitable-only commands.
-%
-% @headitem starts a heading row, which we typeset in bold.
-% Assignments have to be global since we are inside the implicit group
-% of an alignment entry.  \everycr resets \everytab so we don't have to
-% undo it ourselves.
-\def\headitemfont{\b}% for people to use in the template row; not changeable
-\def\headitem{%
-  \checkenv\multitable
-  \crcr
-  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
-  \the\everytab % for the first item
-}%
-%
-% A \tab used to include \hskip1sp.  But then the space in a template
-% line is not enough.  That is bad.  So let's go back to just `&' until
-% we again encounter the problem the 1sp was intended to solve.
-%                                      --karl, nathan@acm.org, 20apr99.
-\def\tab{\checkenv\multitable &\the\everytab}%
-
-% @multitable ... @end multitable definitions:
-%
-\newtoks\everytab  % insert after every tab.
-%
-\envdef\multitable{%
-  \vskip\parskip
-  \startsavinginserts
-  %
-  % @item within a multitable starts a normal row.
-  % We use \def instead of \let so that if one of the multitable entries
-  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
-  % \endtemplate) expanding \doitemize.
-  \def\item{\crcr}%
-  %
-  \tolerance=9500
-  \hbadness=9500
-  \setmultitablespacing
-  \parskip=\multitableparskip
-  \parindent=\multitableparindent
-  \overfullrule=0pt
-  \global\colcount=0
-  %
-  \everycr = {%
-    \noalign{%
-      \global\everytab={}%
-      \global\colcount=0 % Reset the column counter.
-      % Check for saved footnotes, etc.
-      \checkinserts
-      % Keeps underfull box messages off when table breaks over pages.
-      %\filbreak
-       % Maybe so, but it also creates really weird page breaks when the
-       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
-       % problem manifests itself, so it can be fixed for real --karl.
-    }%
-  }%
-  %
-  \parsearg\domultitable
-}
-\def\domultitable#1{%
-  % To parse everything between @multitable and @item:
-  \setuptable#1 \endsetuptable
-  %
-  % This preamble sets up a generic column definition, which will
-  % be used as many times as user calls for columns.
-  % \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
-    \multistrut
-    \vtop{%
-      % Use the current \colcount to find the correct column width:
-      \hsize=\expandafter\csname col\the\colcount\endcsname
-      %
-      % In order to keep entries from bumping into each other
-      % we will add a \leftskip of \multitablecolspace to all columns after
-      % the first one.
-      %
-      % If a template has been used, we will add \multitablecolspace
-      % to the width of each template entry.
-      %
-      % If the user has set preamble in terms of percent of \hsize we will
-      % use that dimension as the width of the column, and the \leftskip
-      % will keep entries from bumping into each other.  Table will start at
-      % left margin and final column will justify at right margin.
-      %
-      % Make sure we don't inherit \rightskip from the outer environment.
-      \rightskip=0pt
-      \ifnum\colcount=1
-       % The first column will be indented with the surrounding text.
-       \advance\hsize by\leftskip
-      \else
-       \ifsetpercent \else
-         % If user has not set preamble in terms of percent of \hsize
-         % we will advance \hsize by \multitablecolspace.
-         \advance\hsize by \multitablecolspace
-       \fi
-       % In either case we will make \leftskip=\multitablecolspace:
-      \leftskip=\multitablecolspace
-      \fi
-      % Ignoring space at the beginning and end avoids an occasional spurious
-      % blank line, when TeX decides to break the line at the space before the
-      % box from the multistrut, so the strut ends up on a line by itself.
-      % For example:
-      % @multitable @columnfractions .11 .89
-      % @item @code{#}
-      % @tab Legal holiday which is valid in major parts of the whole country.
-      % Is automatically provided with highlighting sequences respectively
-      % marking characters.
-      \noindent\ignorespaces##\unskip\multistrut
-    }\cr
-}
-\def\Emultitable{%
-  \crcr
-  \egroup % end the \halign
-  \global\setpercentfalse
-}
-
-\def\setmultitablespacing{%
-  \def\multistrut{\strut}% just use the standard line spacing
-  %
-  % Compute \multitablelinespace (if not defined by user) for use in
-  % \multitableparskip calculation.  We used define \multistrut based on
-  % this, but (ironically) that caused the spacing to be off.
-  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-\fi
-% 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.
-\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{conditionals,}
-
-% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
-% @ifnotxml always succeed.  They currently do nothing; we don't
-% attempt to check whether the conditionals are properly nested.  But we
-% have to remember that they are conditionals, so that @end doesn't
-% attempt to close an environment group.
-%
-\def\makecond#1{%
-  \expandafter\let\csname #1\endcsname = \relax
-  \expandafter\let\csname iscond.#1\endcsname = 1
-}
-\makecond{iftex}
-\makecond{ifnotdocbook}
-\makecond{ifnothtml}
-\makecond{ifnotinfo}
-\makecond{ifnotplaintext}
-\makecond{ifnotxml}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescription{\doignore{documentdescription}}
-\def\docbook{\doignore{docbook}}
-\def\html{\doignore{html}}
-\def\ifdocbook{\doignore{ifdocbook}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% Ignore text until a line `@end #1', keeping track of nested conditionals.
-%
-% A count to remember the depth of nesting.
-\newcount\doignorecount
-
-\def\doignore#1{\begingroup
-  % Scan in ``verbatim'' mode:
-  \obeylines
-  \catcode`\@ = \other
-  \catcode`\{ = \other
-  \catcode`\} = \other
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \spaceisspace
-  %
-  % Count number of #1's that we've seen.
-  \doignorecount = 0
-  %
-  % Swallow text until we reach the matching `@end #1'.
-  \dodoignore{#1}%
-}
-
-{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
-  \obeylines %
-  %
-  \gdef\dodoignore#1{%
-    % #1 contains the command name as a string, e.g., `ifinfo'.
-    %
-    % Define a command to find the next `@end #1'.
-    \long\def\doignoretext##1^^M@end #1{%
-      \doignoretextyyy##1^^M@#1\_STOP_}%
-    %
-    % And this command to find another #1 command, at the beginning of a
-    % line.  (Otherwise, we would consider a line `@c @ifset', for
-    % example, to count as an @ifset for nesting.)
-    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
-    %
-    % And now expand that command.
-    \doignoretext ^^M%
-  }%
-}
-
-\def\doignoreyyy#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty                      % Nothing found.
-    \let\next\doignoretextzzz
-  \else                                        % Found a nested condition, ...
-    \advance\doignorecount by 1
-    \let\next\doignoretextyyy          % ..., look for another.
-    % If we're here, #1 ends with ^^M\ifinfo (for example).
-  \fi
-  \next #1% the token \_STOP_ is present just after this macro.
-}
-
-% We have to swallow the remaining "\_STOP_".
-%
-\def\doignoretextzzz#1{%
-  \ifnum\doignorecount = 0     % We have just found the outermost @end.
-    \let\next\enddoignore
-  \else                                % Still inside a nested condition.
-    \advance\doignorecount by -1
-    \let\next\doignoretext      % Look for the next @end.
-  \fi
-  \next
-}
-
-% Finish off ignored text.
-{ \obeylines%
-  % Ignore anything after the last `@end #1'; this matters in verbatim
-  % environments, where otherwise the newline after an ignored conditional
-  % would result in a blank line in the output.
-  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
-}
-
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% 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.
-% We rely on the fact that \parsearg sets \catcode`\ =10.
-%
-\parseargdef\set{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  {%
-    \makevalueexpandable
-    \def\temp{#2}%
-    \edef\next{\gdef\makecsname{SET#1}}%
-    \ifx\temp\empty
-      \next{}%
-    \else
-      \setzzz#2\endsetzzz
-    \fi
-  }%
-}
-% Remove the trailing space \setxxx inserted.
-\def\setzzz#1 \endsetzzz{\next{#1}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\parseargdef\clear{%
-  {%
-    \makevalueexpandable
-    \global\expandafter\let\csname SET#1\endcsname=\relax
-  }%
-}
-
-% @value{foo} gets the text saved in variable foo.
-\def\value{\begingroup\makevalueexpandable\valuexxx}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-{
-  \catcode`\-=\active \catcode`\_=\active
-  %
-  \gdef\makevalueexpandable{%
-    \let\value = \expandablevalue
-    % We don't want these characters active, ...
-    \catcode`\-=\other \catcode`\_=\other
-    % ..., but we might end up with active ones in the argument if
-    % we're called from @code, as @code{@value{foo-bar_}}, though.
-    % So \let them to their normal equivalents.
-    \let-\normaldash \let_\normalunderscore
-  }
-}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file.  This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-% 
-% Unfortunately, this has the consequence that when _ is in the *value*
-% of an @set, it does not print properly in the roman fonts (get the cmr
-% dot accent at position 126 instead).  No fix comes to mind, and it's
-% been this way since 2003 or earlier, so just ignore it.
-% 
-\def\expandablevalue#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    {[No value for ``#1'']}%
-    \message{Variable `#1', used in @value, is not set.}%
-  \else
-    \csname SET#1\endcsname
-  \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-% 
-% To get the special treatment we need for `@end ifset,' we call
-% \makecond and then redefine.
-%
-\makecond{ifset}
-\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
-\def\doifset#1#2{%
-  {%
-    \makevalueexpandable
-    \let\next=\empty
-    \expandafter\ifx\csname SET#2\endcsname\relax
-      #1% If not set, redefine \next.
-    \fi
-    \expandafter
-  }\next
-}
-\def\ifsetfail{\doignore{ifset}}
-
-% @ifclear VAR ... @end executes the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-% The `\else' inside the `\doifset' parameter is a trick to reuse the
-% above code: if the variable is not set, do nothing, if it is set,
-% then redefine \next to \ifclearfail.
-%
-\makecond{ifclear}
-\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
-\def\ifclearfail{\doignore{ifclear}}
-
-% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
-% without the @) is in fact defined.  We can only feasibly check at the
-% TeX level, so something like `mathcode' is going to considered
-% defined even though it is not a Texinfo command.
-% 
-\makecond{ifcommanddefined}
-\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
-%
-\def\doifcmddefined#1#2{{%
-    \makevalueexpandable
-    \let\next=\empty
-    \expandafter\ifx\csname #2\endcsname\relax
-      #1% If not defined, \let\next as above.
-    \fi
-    \expandafter
-  }\next
-}
-\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
-
-% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
-\makecond{ifcommandnotdefined}
-\def\ifcommandnotdefined{%
-  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
-\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
-
-% Set the `txicommandconditionals' variable, so documents have a way to
-% test if the @ifcommand...defined conditionals are available.
-\set txicommandconditionals
-
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory=\comment
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within macros and \if's.
-\edef\newwrite{\makecsname{ptexnewwrite}}
-
-% \newindex {foo} defines an index named foo.
-% 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 name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
-    \noexpand\doindex{#1}}
-}
-
-% @defindex foo  ==  \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%
-    \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar    makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar   similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
-  % Only do \closeout if we haven't already done it, else we'll end up
-  % closing the target index.
-  \expandafter \ifx\csname donesynindex#2\endcsname \relax
-    % The \closeout helps reduce unnecessary open files; the limit on the
-    % Acorn RISC OS is a mere 16 files.
-    \expandafter\closeout\csname#2indfile\endcsname
-    \expandafter\let\csname donesynindex#2\endcsname = 1
-  \fi
-  % redefine \fooindfile:
-  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
-  \expandafter\let\csname#2indfile\endcsname=\temp
-  % redefine \fooindex:
-  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
-  \escapechar = `\\     % use backslash in output files.
-  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
-  \def\ {\realbackslash\space }%
-  %
-  % Need these unexpandable (because we define \tt as a dummy)
-  % definitions when @{ or @} appear in index entry text.  Also, more
-  % complicated, when \tex is in effect and \{ is a \delimiter again.
-  % We can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.  Perhaps we
-  % should define @lbrace and @rbrace commands a la @comma.
-  \def\{{{\tt\char123}}%
-  \def\}{{\tt\char125}}%
-  %
-  % I don't entirely understand this, but when an index entry is
-  % generated from a macro call, the \endinput which \scanmacro inserts
-  % causes processing to be prematurely terminated.  This is,
-  % apparently, because \indexsorttmp is fully expanded, and \endinput
-  % is an expandable command.  The redefinition below makes \endinput
-  % disappear altogether for that purpose -- although logging shows that
-  % processing continues to some further point.  On the other hand, it
-  % seems \endinput does not hurt in the printed index arg, since that
-  % is still getting written without apparent harm.
-  %
-  % Sample source (mac-idx3.tex, reported by Graham Percival to
-  % help-texinfo, 22may06):
-  % @macro funindex {WORD}
-  % @findex xyz
-  % @end macro
-  % ...
-  % @funindex commtest
-  %
-  % The above is not enough to reproduce the bug, but it gives the flavor.
-  %
-  % Sample whatsit resulting:
-  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
-  %
-  % So:
-  \let\endinput = \empty
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% For the aux and toc files, @ is the escape character.  So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files).  When everything uses @,
-% this will be simpler.
-%
-\def\atdummies{%
-  \def\@{@@}%
-  \def\ {@ }%
-  \let\{ = \lbraceatcmd
-  \let\} = \rbraceatcmd
-  %
-  % Do the redefinitions.
-  \commondummies
-  \otherbackslash
-}
-
-% Called from \indexdummies and \atdummies.
-%
-\def\commondummies{%
-  %
-  % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control words,
-  % not control letters, because the \space would be incorrect for
-  % control characters, but is needed to separate the control word
-  % from whatever follows.
-  %
-  % For control letters, we have \definedummyletter, which omits the
-  % space.
-  %
-  % These can be used both for control words that take an argument and
-  % those that do not.  If it is followed by {arg} in the input, then
-  % that will dutifully get written to the index (or wherever).
-  %
-  \def\definedummyword  ##1{\def##1{\string##1\space}}%
-  \def\definedummyletter##1{\def##1{\string##1}}%
-  \let\definedummyaccent\definedummyletter
-  %
-  \commondummiesnofonts
-  %
-  \definedummyletter\_%
-  \definedummyletter\-%
-  %
-  % Non-English letters.
-  \definedummyword\AA
-  \definedummyword\AE
-  \definedummyword\DH
-  \definedummyword\L
-  \definedummyword\O
-  \definedummyword\OE
-  \definedummyword\TH
-  \definedummyword\aa
-  \definedummyword\ae
-  \definedummyword\dh
-  \definedummyword\exclamdown
-  \definedummyword\l
-  \definedummyword\o
-  \definedummyword\oe
-  \definedummyword\ordf
-  \definedummyword\ordm
-  \definedummyword\questiondown
-  \definedummyword\ss
-  \definedummyword\th
-  %
-  % Although these internal commands shouldn't show up, sometimes they do.
-  \definedummyword\bf
-  \definedummyword\gtr
-  \definedummyword\hat
-  \definedummyword\less
-  \definedummyword\sf
-  \definedummyword\sl
-  \definedummyword\tclose
-  \definedummyword\tt
-  %
-  \definedummyword\LaTeX
-  \definedummyword\TeX
-  %
-  % Assorted special characters.
-  \definedummyword\arrow
-  \definedummyword\bullet
-  \definedummyword\comma
-  \definedummyword\copyright
-  \definedummyword\registeredsymbol
-  \definedummyword\dots
-  \definedummyword\enddots
-  \definedummyword\entrybreak
-  \definedummyword\equiv
-  \definedummyword\error
-  \definedummyword\euro
-  \definedummyword\expansion
-  \definedummyword\geq
-  \definedummyword\guillemetleft
-  \definedummyword\guillemetright
-  \definedummyword\guilsinglleft
-  \definedummyword\guilsinglright
-  \definedummyword\lbracechar
-  \definedummyword\leq
-  \definedummyword\minus
-  \definedummyword\ogonek
-  \definedummyword\pounds
-  \definedummyword\point
-  \definedummyword\print
-  \definedummyword\quotedblbase
-  \definedummyword\quotedblleft
-  \definedummyword\quotedblright
-  \definedummyword\quoteleft
-  \definedummyword\quoteright
-  \definedummyword\quotesinglbase
-  \definedummyword\rbracechar
-  \definedummyword\result
-  \definedummyword\textdegree
-  %
-  % We want to disable all macros so that they are not expanded by \write.
-  \macrolist
-  %
-  \normalturnoffactive
-  %
-  % Handle some cases of @value -- where it does not contain any
-  % (non-fully-expandable) commands.
-  \makevalueexpandable
-}
-
-% \commondummiesnofonts: common to \commondummies and \indexnofonts.
-%
-\def\commondummiesnofonts{%
-  % Control letters and accents.
-  \definedummyletter\!%
-  \definedummyaccent\"%
-  \definedummyaccent\'%
-  \definedummyletter\*%
-  \definedummyaccent\,%
-  \definedummyletter\.%
-  \definedummyletter\/%
-  \definedummyletter\:%
-  \definedummyaccent\=%
-  \definedummyletter\?%
-  \definedummyaccent\^%
-  \definedummyaccent\`%
-  \definedummyaccent\~%
-  \definedummyword\u
-  \definedummyword\v
-  \definedummyword\H
-  \definedummyword\dotaccent
-  \definedummyword\ogonek
-  \definedummyword\ringaccent
-  \definedummyword\tieaccent
-  \definedummyword\ubaraccent
-  \definedummyword\udotaccent
-  \definedummyword\dotless
-  %
-  % Texinfo font commands.
-  \definedummyword\b
-  \definedummyword\i
-  \definedummyword\r
-  \definedummyword\sansserif
-  \definedummyword\sc
-  \definedummyword\slanted
-  \definedummyword\t
-  %
-  % Commands that take arguments.
-  \definedummyword\abbr
-  \definedummyword\acronym
-  \definedummyword\anchor
-  \definedummyword\cite
-  \definedummyword\code
-  \definedummyword\command
-  \definedummyword\dfn
-  \definedummyword\dmn
-  \definedummyword\email
-  \definedummyword\emph
-  \definedummyword\env
-  \definedummyword\file
-  \definedummyword\image
-  \definedummyword\indicateurl
-  \definedummyword\inforef
-  \definedummyword\kbd
-  \definedummyword\key
-  \definedummyword\math
-  \definedummyword\option
-  \definedummyword\pxref
-  \definedummyword\ref
-  \definedummyword\samp
-  \definedummyword\strong
-  \definedummyword\tie
-  \definedummyword\uref
-  \definedummyword\url
-  \definedummyword\var
-  \definedummyword\verb
-  \definedummyword\w
-  \definedummyword\xref
-}
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names.  It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexnofonts{%
-  % Accent commands should become @asis.
-  \def\definedummyaccent##1{\let##1\asis}%
-  % We can just ignore other control letters.
-  \def\definedummyletter##1{\let##1\empty}%
-  % All control words become @asis by default; overrides below.
-  \let\definedummyword\definedummyaccent
-  %
-  \commondummiesnofonts
-  %
-  % Don't no-op \tt, since it isn't a user-level command
-  % and is used in the definitions of the active chars like <, >, |, etc.
-  % Likewise with the other plain tex font commands.
-  %\let\tt=\asis
-  %
-  \def\ { }%
-  \def\@{@}%
-  \def\_{\normalunderscore}%
-  \def\-{}% @- shouldn't affect sorting
-  %
-  % Unfortunately, texindex is not prepared to handle braces in the
-  % content at all.  So for index sorting, we map @{ and @} to strings
-  % starting with |, since that ASCII character is between ASCII { and }.
-  \def\{{|a}%
-  \def\lbracechar{|a}%
-  %
-  \def\}{|b}%
-  \def\rbracechar{|b}%
-  %
-  % Non-English letters.
-  \def\AA{AA}%
-  \def\AE{AE}%
-  \def\DH{DZZ}%
-  \def\L{L}%
-  \def\OE{OE}%
-  \def\O{O}%
-  \def\TH{ZZZ}%
-  \def\aa{aa}%
-  \def\ae{ae}%
-  \def\dh{dzz}%
-  \def\exclamdown{!}%
-  \def\l{l}%
-  \def\oe{oe}%
-  \def\ordf{a}%
-  \def\ordm{o}%
-  \def\o{o}%
-  \def\questiondown{?}%
-  \def\ss{ss}%
-  \def\th{zzz}%
-  %
-  \def\LaTeX{LaTeX}%
-  \def\TeX{TeX}%
-  %
-  % Assorted special characters.
-  % (The following {} will end up in the sort string, but that's ok.)
-  \def\arrow{->}%
-  \def\bullet{bullet}%
-  \def\comma{,}%
-  \def\copyright{copyright}%
-  \def\dots{...}%
-  \def\enddots{...}%
-  \def\equiv{==}%
-  \def\error{error}%
-  \def\euro{euro}%
-  \def\expansion{==>}%
-  \def\geq{>=}%
-  \def\guillemetleft{<<}%
-  \def\guillemetright{>>}%
-  \def\guilsinglleft{<}%
-  \def\guilsinglright{>}%
-  \def\leq{<=}%
-  \def\minus{-}%
-  \def\point{.}%
-  \def\pounds{pounds}%
-  \def\print{-|}%
-  \def\quotedblbase{"}%
-  \def\quotedblleft{"}%
-  \def\quotedblright{"}%
-  \def\quoteleft{`}%
-  \def\quoteright{'}%
-  \def\quotesinglbase{,}%
-  \def\registeredsymbol{R}%
-  \def\result{=>}%
-  \def\textdegree{o}%
-  %
-  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
-  \else \indexlquoteignore \fi
-  %
-  % We need to get rid of all macros, leaving only the arguments (if present).
-  % Of course this is not nearly correct, but it is the best we can do for now.
-  % makeinfo does not expand macros in the argument to @deffn, which ends up
-  % writing an index entry, and texindex isn't prepared for an index sort entry
-  % that starts with \.
-  %
-  % Since macro invocations are followed by braces, we can just redefine them
-  % to take a single TeX argument.  The case of a macro invocation that
-  % goes to end-of-line is not handled.
-  %
-  \macrolist
-}
-
-% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
-% ignore left quotes in the sort term.
-{\catcode`\`=\active
- \gdef\indexlquoteignore{\let`=\empty}}
-
-\let\indexbackslash=0  %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% Most index entries go through here, but \dosubind is the general case.
-% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
-  \iflinks
-  {%
-    % Store the main index entry text (including the third arg).
-    \toks0 = {#2}%
-    % If third arg is present, precede it with a space.
-    \def\thirdarg{#3}%
-    \ifx\thirdarg\empty \else
-      \toks0 = \expandafter{\the\toks0 \space #3}%
-    \fi
-    %
-    \edef\writeto{\csname#1indfile\endcsname}%
-    %
-    \safewhatsit\dosubindwrite
-  }%
-  \fi
-}
-
-% Write the entry in \toks0 to the index file:
-%
-\def\dosubindwrite{%
-  % Put the index entry in the margin if desired.
-  \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
-  \fi
-  %
-  % Remember, we are within a group.
-  \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
-  {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
-  }%
-  %
-  % Set up the complete index entry, with both the sort key and
-  % the original text, including any font commands.  We write
-  % three arguments to \entry to the .?? file (four in the
-  % subentry case), texindex reduces to two when writing the .??s
-  % sorted result.
-  \edef\temp{%
-    \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
-  }%
-  \temp
-}
-
-% Take care of unwanted page breaks/skips around a whatsit:
-%
-% If a skip is the last thing on the list now, preserve it
-% by backing up by \lastskip, doing the \write, then inserting
-% the skip again.  Otherwise, the whatsit generated by the
-% \write or \pdfdest will make \lastskip zero.  The result is that
-% sequences like this:
-% @end defun
-% @tindex whatever
-% @defun ...
-% will have extra space inserted, because the \medbreak in the
-% start of the @defun won't see the skip inserted by the @end of
-% the previous defun.
-%
-% But don't do any of this if we're not in vertical mode.  We
-% don't want to do a \vskip and prematurely end a paragraph.
-%
-% Avoid page breaks due to these extra skips, too.
-%
-% But wait, there is a catch there:
-% We'll have to check whether \lastskip is zero skip.  \ifdim is not
-% sufficient for this purpose, as it ignores stretch and shrink parts
-% of the skip.  The only way seems to be to check the textual
-% representation of the skip.
-%
-% The following is almost like \def\zeroskipmacro{0.0pt} except that
-% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
-%
-\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
-%
-\newskip\whatsitskip
-\newcount\whatsitpenalty
-%
-% ..., ready, GO:
-%
-\def\safewhatsit#1{\ifhmode
-  #1%
- \else
-  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \whatsitskip = \lastskip
-  \edef\lastskipmacro{\the\lastskip}%
-  \whatsitpenalty = \lastpenalty
-  %
-  % If \lastskip is nonzero, that means the last item was a
-  % skip.  And since a skip is discardable, that means this
-  % -\whatsitskip glue we're inserting is preceded by a
-  % non-discardable item, therefore it is not a potential
-  % breakpoint, therefore no \nobreak needed.
-  \ifx\lastskipmacro\zeroskipmacro
-  \else
-    \vskip-\whatsitskip
-  \fi
-  %
-  #1%
-  %
-  \ifx\lastskipmacro\zeroskipmacro
-    % If \lastskip was zero, perhaps the last item was a penalty, and
-    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
-    % to re-insert the same penalty (values >10000 are used for various
-    % signals); since we just inserted a non-discardable item, any
-    % following glue (such as a \parskip) would be a breakpoint.  For example:
-    %   @deffn deffn-whatever
-    %   @vindex index-whatever
-    %   Description.
-    % would allow a break between the index-whatever whatsit
-    % and the "Description." paragraph.
-    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
-  \else
-    % On the other hand, if we had a nonzero \lastskip,
-    % this make-up glue would be preceded by a non-discardable item
-    % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\whatsitskip
-  \fi
-\fi}
-
-% The index entry written in the file actually looks like
-%  \entry {sortstring}{page}{topic}
-% or
-%  \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-%  \initial {c}
-%     before the first topic whose initial is c
-%  \entry {topic}{pagelist}
-%     for a topic that is used without subtopics
-%  \primary {topic}
-%     for the beginning of a topic that is used with subtopics
-%  \secondary {subtopic}{pagelist}
-%     for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\parseargdef\printindex{\begingroup
-  \dobreak \chapheadingskip{10000}%
-  %
-  \smallfonts \rm
-  \tolerance = 9500
-  \plainfrenchspacing
-  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
-  %
-  % See if the index file exists and is nonempty.
-  % Change catcode of @ here so that if the index file contains
-  % \initial {@}
-  % as its first line, TeX doesn't complain about mismatched braces
-  % (because it thinks @} is a control sequence).
-  \catcode`\@ = 11
-  \openin 1 \jobname.#1s
-  \ifeof 1
-    % \enddoublecolumns gets confused if there is no text in the index,
-    % and it loses the chapter title and the aux file entries for the
-    % index.  The easiest way to prevent this problem is to make sure
-    % there is some text.
-    \putwordIndexNonexistent
-  \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
-    % it can discover if there is anything in it.
-    \read 1 to \temp
-    \ifeof 1
-      \putwordIndexIsEmpty
-    \else
-      % 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.
-      \def\indexbackslash{\backslashcurfont}%
-      \catcode`\\ = 0
-      \escapechar = `\\
-      \begindoublecolumns
-      \input \jobname.#1s
-      \enddoublecolumns
-    \fi
-  \fi
-  \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
-  % Some minor font changes for the special characters.
-  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-  %
-  % Remove any glue we may have, we'll be inserting our own.
-  \removelastskip
-  %
-  % We like breaks before the index initials, so insert a bonus.
-  \nobreak
-  \vskip 0pt plus 3\baselineskip
-  \penalty 0
-  \vskip 0pt plus -3\baselineskip
-  %
-  % Typeset the initial.  Making this add up to a whole number of
-  % baselineskips increases the chance of the dots lining up from column
-  % to column.  It still won't often be perfect, because of the stretch
-  % we need before each entry, but it's better.
-  %
-  % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
-  % Do our best not to break after the initial.
-  \nobreak
-  \vskip .33\baselineskip plus .1\baselineskip
-}}
-
-% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
-% then page number (#2) flushed to the right margin.  It is used for index
-% and table of contents entries.  The paragraph is indented by \leftskip.
-%
-% A straightforward implementation would start like this:
-%      \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
-\def\entry{%
-  \begingroup
-    %
-    % Start a new paragraph if necessary, so our assignments below can't
-    % affect previous text.
-    \par
-    %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
-    % No extra space above this paragraph.
-    \parskip = 0in
-    %
-    % Do not prefer a separate line ending with a hyphen to fewer lines.
-    \finalhyphendemerits = 0
-    %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
-    %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
-    %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
-    %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
-    % When reading the text of entry, convert explicit line breaks
-    % from @* into spaces.  The user might give these in long section
-    % titles, for instance.
-    \def\*{\unskip\space\ignorespaces}%
-    \def\entrybreak{\hfil\break}%
-    %
-    % Swallow the left brace of the text (first parameter):
-    \afterassignment\doentry
-    \let\temp =
-}
-\def\entrybreak{\unskip\space\ignorespaces}%
-\def\doentry{%
-    \bgroup % Instead of the swallowed brace.
-      \noindent
-      \aftergroup\finishentry
-      % And now comes the text of the entry.
-}
-\def\finishentry#1{%
-    % #1 is the page number.
-    %
-    % 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.
-    \setbox\boxA = \hbox{#1}%
-    \ifdim\wd\boxA = 0pt
-      \ %
-    \else
-      %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
-      \null\nobreak\indexdotfill % Have leaders before the page number.
-      %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
-      \ifpdf
-       \pdfgettoks#1.%
-       \ \the\toksA
-      \else
-       \ #1%
-      \fi
-    \fi
-    \par
-  \endgroup
-}
-
-% Like plain.tex's \dotfill, except uses up at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
-  \parfillskip=0in
-  \parskip=0in
-  \hangindent=1in
-  \hangafter=1
-  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
-  \ifpdf
-    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
-  \else
-    #2
-  \fi
-  \par
-}}
-
-% 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 % ended by \enddoublecolumns
-  % Grab any single-column material above us.
-  \output = {%
-    %
-    % Here is a possibility not foreseen in manmac: if we accumulate a
-    % whole lot of material, we might end up calling this \output
-    % routine twice in a row (see the doublecol-lose test, which is
-    % essentially a couple of indexes with @setchapternewpage off).  In
-    % that case we just ship out what is in \partialpage with the normal
-    % output routine.  Generally, \partialpage will be empty when this
-    % runs and this will be a no-op.  See the indexspread.tex test case.
-    \ifvoid\partialpage \else
-      \onepageout{\pagecontents\partialpage}%
-    \fi
-    %
-    \global\setbox\partialpage = \vbox{%
-      % Unvbox the main output page.
-      \unvbox\PAGE
-      \kern-\topskip \kern\baselineskip
-    }%
-  }%
-  \eject % run that output routine to set \partialpage
-  %
-  % Use the double-column output routine for subsequent pages.
-  \output = {\doublecolumnout}%
-  %
-  % Change the page size parameters.  We could do this once outside this
-  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
-  % format, but then we repeat the same computation.  Repeating a couple
-  % of assignments once per index is clearly meaningless for the
-  % execution time, so we may as well do it in one place.
-  %
-  % First we halve the line length, less a little for the gutter between
-  % the columns.  We compute the gutter based on the line length, so it
-  % changes automatically with the paper format.  The magic constant
-  % below is chosen so that the gutter has the same value (well, +-<1pt)
-  % as it did when we hard-coded it.
-  %
-  % We put the result in a separate register, \doublecolumhsize, so we
-  % can restore it in \pagesofar, after \hsize itself has (potentially)
-  % been clobbered.
-  %
-  \doublecolumnhsize = \hsize
-    \advance\doublecolumnhsize by -.04154\hsize
-    \divide\doublecolumnhsize by 2
-  \hsize = \doublecolumnhsize
-  %
-  % Double the \vsize as well.  (We don't need a separate register here,
-  % since nobody clobbers \vsize.)
-  \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\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@ = \vsize
-  \divide\dimen@ by 2
-  \advance\dimen@ by -\ht\partialpage
-  %
-  % box0 will be the left-hand column, box2 the right.
-  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
-  \onepageout\pagesofar
-  \unvbox255
-  \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
-  \unvbox\partialpage
-  %
-  \hsize = \doublecolumnhsize
-  \wd0=\hsize \wd2=\hsize
-  \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
-  % The following penalty ensures that the page builder is exercised
-  % _before_ we change the output routine.  This is necessary in the
-  % following situation:
-  %
-  % The last section of the index consists only of a single entry.
-  % Before this section, \pagetotal is less than \pagegoal, so no
-  % break occurs before the last section starts.  However, the last
-  % section, consisting of \initial and the single \entry, does not
-  % fit on the page and has to be broken off.  Without the following
-  % penalty the page builder will not be exercised until \eject
-  % below, and by that time we'll already have changed the output
-  % routine to the \balancecolumns version, so the next-to-last
-  % double-column page will be processed with \balancecolumns, which
-  % is wrong:  The two columns will go to the main vertical list, with
-  % the broken-off section in the recent contributions.  As soon as
-  % the output routine finishes, TeX starts reconsidering the page
-  % break.  The two columns and the broken-off section both fit on the
-  % page, because the two columns now take up only half of the page
-  % goal.  When TeX sees \eject from below which follows the final
-  % section, it invokes the new output routine that we've set after
-  % \balancecolumns below; \onepageout will try to fit the two columns
-  % and the final section into the vbox of \pageheight (see
-  % \pagebody), causing an overfull box.
-  %
-  % Note that glue won't work here, because glue does not exercise the
-  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
-  \penalty0
-  %
-  \output = {%
-    % Split the last of the double-column material.  Leave it on the
-    % current page, no automatic page break.
-    \balancecolumns
-    %
-    % If we end up splitting too much material for the current page,
-    % though, there will be another page break right after this \output
-    % invocation ends.  Having called \balancecolumns once, we do not
-    % want to call it again.  Therefore, reset \output to its normal
-    % definition right away.  (We hope \balancecolumns will never be
-    % called on to balance too much material, but if it is, this makes
-    % the output somewhat more palatable.)
-    \global\output = {\onepageout{\pagecontents\PAGE}}%
-  }%
-  \eject
-  \endgroup % started in \begindoublecolumns
-  %
-  % \pagegoal was set to the doubled \vsize above, since we restarted
-  % the current page.  We're now back to normal single-column
-  % typesetting, so reset \pagegoal to the normal \vsize (after the
-  % \endgroup where \vsize got restored).
-  \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
-  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
-  \dimen@ = \ht0
-  \advance\dimen@ by \topskip
-  \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \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@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
-  %
-  \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-% Let's start with @part.
-\outer\parseargdef\part{\partzzz{#1}}
-\def\partzzz#1{%
-  \chapoddpage
-  \null
-  \vskip.3\vsize  % move it down on the page a bit
-  \begingroup
-    \noindent \titlefonts\rmisbold #1\par % the text
-    \let\lastnode=\empty      % no node to associate with
-    \writetocentry{part}{#1}{}% but put it in the toc
-    \headingsoff              % no headline or footline on the part page
-    \chapoddpage
-  \endgroup
-}
-
-% \unnumberedno is an oxymoron.  But we count the unnumbered
-% sections so that we can refer to them unambiguously in the pdf
-% outlines by their "section number".  We avoid collisions with chapter
-% numbers by starting them at 10000.  (If a document ever has 10000
-% chapters, we're in trouble anyway, I'm sure.)
-\newcount\unnumberedno \unnumberedno = 10000
-\newcount\chapno
-\newcount\secno        \secno=0
-\newcount\subsecno     \subsecno=0
-\newcount\subsubsecno  \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno  \appendixno = `\@
-%
-% \def\appendixletter{\char\the\appendixno}
-% We do the following ugly conditional instead of the above simple
-% construct for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-%
-\def\appendixletter{%
-  \ifnum\appendixno=`A A%
-  \else\ifnum\appendixno=`B B%
-  \else\ifnum\appendixno=`C C%
-  \else\ifnum\appendixno=`D D%
-  \else\ifnum\appendixno=`E E%
-  \else\ifnum\appendixno=`F F%
-  \else\ifnum\appendixno=`G G%
-  \else\ifnum\appendixno=`H H%
-  \else\ifnum\appendixno=`I I%
-  \else\ifnum\appendixno=`J J%
-  \else\ifnum\appendixno=`K K%
-  \else\ifnum\appendixno=`L L%
-  \else\ifnum\appendixno=`M M%
-  \else\ifnum\appendixno=`N N%
-  \else\ifnum\appendixno=`O O%
-  \else\ifnum\appendixno=`P P%
-  \else\ifnum\appendixno=`Q Q%
-  \else\ifnum\appendixno=`R R%
-  \else\ifnum\appendixno=`S S%
-  \else\ifnum\appendixno=`T T%
-  \else\ifnum\appendixno=`U U%
-  \else\ifnum\appendixno=`V V%
-  \else\ifnum\appendixno=`W W%
-  \else\ifnum\appendixno=`X X%
-  \else\ifnum\appendixno=`Y Y%
-  \else\ifnum\appendixno=`Z Z%
-  % The \the is necessary, despite appearances, because \appendixletter is
-  % expanded while writing the .toc file.  \char\appendixno is not
-  % expandable, thus it is written literally, thus all appendixes come out
-  % with the same letter (or @) in the toc without it.
-  \else\char\the\appendixno
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines these (using marks) as the number+name, number
-% and name of the chapter.  Page headings and footings can use
-% these.  @section does likewise.
-\def\thischapter{}
-\def\thischapternum{}
-\def\thischaptername{}
-\def\thissection{}
-\def\thissectionnum{}
-\def\thissectionname{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% we only have subsub.
-\chardef\maxseclevel = 3
-%
-% A numbered section within an unnumbered changes to unnumbered too.
-% To achieve this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unnlevel = \maxseclevel
-%
-% Trace whether the current chapter is an appendix or not:
-% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
-\def\chapheadtype{N}
-
-% Choose a heading macro
-% #1 is heading type
-% #2 is heading level
-% #3 is text for heading
-\def\genhead#1#2#3{%
-  % Compute the abs. sec. level:
-  \absseclevel=#2
-  \advance\absseclevel by \secbase
-  % Make sure \absseclevel doesn't fall outside the range:
-  \ifnum \absseclevel < 0
-    \absseclevel = 0
-  \else
-    \ifnum \absseclevel > 3
-      \absseclevel = 3
-    \fi
-  \fi
-  % The heading type:
-  \def\headtype{#1}%
-  \if \headtype U%
-    \ifnum \absseclevel < \unnlevel
-      \chardef\unnlevel = \absseclevel
-    \fi
-  \else
-    % Check for appendix sections:
-    \ifnum \absseclevel = 0
-      \edef\chapheadtype{\headtype}%
-    \else
-      \if \headtype A\if \chapheadtype N%
-       \errmessage{@appendix... within a non-appendix chapter}%
-      \fi\fi
-    \fi
-    % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unnlevel
-      \def\headtype{U}%
-    \else
-      \chardef\unnlevel = 3
-    \fi
-  \fi
-  % Now print the heading:
-  \if \headtype U%
-    \ifcase\absseclevel
-       \unnumberedzzz{#3}%
-    \or \unnumberedseczzz{#3}%
-    \or \unnumberedsubseczzz{#3}%
-    \or \unnumberedsubsubseczzz{#3}%
-    \fi
-  \else
-    \if \headtype A%
-      \ifcase\absseclevel
-         \appendixzzz{#3}%
-      \or \appendixsectionzzz{#3}%
-      \or \appendixsubseczzz{#3}%
-      \or \appendixsubsubseczzz{#3}%
-      \fi
-    \else
-      \ifcase\absseclevel
-         \chapterzzz{#3}%
-      \or \seczzz{#3}%
-      \or \numberedsubseczzz{#3}%
-      \or \numberedsubsubseczzz{#3}%
-      \fi
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% an interface:
-\def\numhead{\genhead N}
-\def\apphead{\genhead A}
-\def\unnmhead{\genhead U}
-
-% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
-% all lower-level sectioning counters to zero.
-%
-% Also set \chaplevelprefix, which we prepend to @float sequence numbers
-% (e.g., figures), q.v.  By default (before any chapter), that is empty.
-\let\chaplevelprefix = \empty
-%
-\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz#1{%
-  % section resetting is \global in case the chapter is in a group, such
-  % as an @include file.
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\chapno by 1
-  %
-  % Used for \float.
-  \gdef\chaplevelprefix{\the\chapno.}%
-  \resetallfloatnos
-  %
-  % \putwordChapter can contain complex things in translations.
-  \toks0=\expandafter{\putwordChapter}%
-  \message{\the\toks0 \space \the\chapno}%
-  %
-  % Write the actual heading.
-  \chapmacro{#1}{Ynumbered}{\the\chapno}%
-  %
-  % So @section and the like are numbered underneath this chapter.
-  \global\let\section = \numberedsec
-  \global\let\subsection = \numberedsubsec
-  \global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
-%
-\def\appendixzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\appendixno by 1
-  \gdef\chaplevelprefix{\appendixletter.}%
-  \resetallfloatnos
-  %
-  % \putwordAppendix can contain complex things in translations.
-  \toks0=\expandafter{\putwordAppendix}%
-  \message{\the\toks0 \space \appendixletter}%
-  %
-  \chapmacro{#1}{Yappendix}{\appendixletter}%
-  %
-  \global\let\section = \appendixsec
-  \global\let\subsection = \appendixsubsec
-  \global\let\subsubsection = \appendixsubsubsec
-}
-
-% normally unnmhead0 calls unnumberedzzz:
-\outer\parseargdef\unnumbered{\unnmhead0{#1}}
-\def\unnumberedzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\unnumberedno by 1
-  %
-  % Since an unnumbered has no number, no prefix for figures.
-  \global\let\chaplevelprefix = \empty
-  \resetallfloatnos
-  %
-  % This used to be simply \message{#1}, but TeX fully expands the
-  % argument to \message.  Therefore, if #1 contained @-commands, TeX
-  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
-  % expanded @cite (which turns out to cause errors because \cite is meant
-  % to be executed, not expanded).
-  %
-  % Anyway, we don't want the fully-expanded definition of @cite to appear
-  % as a result of the \message, we just want `@cite' itself.  We use
-  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
-  % simply yielding the contents of <toks register>.  (We also do this for
-  % the toc entries.)
-  \toks0 = {#1}%
-  \message{(\the\toks0)}%
-  %
-  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
-  %
-  \global\let\section = \unnumberedsec
-  \global\let\subsection = \unnumberedsubsec
-  \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\parseargdef\centerchap{%
-  % Well, we could do the following in a group, but that would break
-  % an assumption that \chapmacro is called at the outermost level.
-  % Thus we are safer this way:                --kasal, 24feb04
-  \let\centerparametersmaybe = \centerparameters
-  \unnmhead0{#1}%
-  \let\centerparametersmaybe = \relax
-}
-
-% @top is like @unnumbered.
-\let\top\unnumbered
-
-% Sections.
-% 
-\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
-\def\seczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
-}
-
-% normally calls appendixsectionzzz:
-\outer\parseargdef\appendixsection{\apphead1{#1}}
-\def\appendixsectionzzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
-}
-\let\appendixsec\appendixsection
-
-% normally calls unnumberedseczzz:
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
-\def\unnumberedseczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
-}
-
-% Subsections.
-% 
-% normally calls numberedsubseczzz:
-\outer\parseargdef\numberedsubsec{\numhead2{#1}}
-\def\numberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
-}
-
-% normally calls appendixsubseczzz:
-\outer\parseargdef\appendixsubsec{\apphead2{#1}}
-\def\appendixsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno}%
-}
-
-% normally calls unnumberedsubseczzz:
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
-\def\unnumberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno}%
-}
-
-% Subsubsections.
-% 
-% normally numberedsubsubseczzz:
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
-\def\numberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynumbered}%
-                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally appendixsubsubseczzz:
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
-\def\appendixsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally unnumberedsubsubseczzz:
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
-\def\unnumberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\let\section = \numberedsec
-\let\subsection = \numberedsubsec
-\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-\def\majorheading{%
-  {\advance\chapheadingskip by 10pt \chapbreak }%
-  \parsearg\chapheadingzzz
-}
-
-\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-\def\chapheadingzzz#1{%
-  \vbox{\chapfonts \raggedtitlesettings #1\par}%
-  \nobreak\bigskip \nobreak
-  \suppressfirstparagraphindent
-}
-
-% @heading, @subheading, @subsubheading.
-\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-% Parameter controlling skip before chapter headings (if needed)
-\newskip\chapheadingskip
-
-% Define plain chapter starts, and page on/off switching for it.
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-% Because \domark is called before \chapoddpage, the filler page will
-% get the headings for the next chapter, which is wrong.  But we don't
-% care -- we just disable all headings on the filler page.
-\def\chapoddpage{%
-  \chappager
-  \ifodd\pageno \else
-    \begingroup
-      \headingsoff
-      \null
-      \chappager
-    \endgroup
-  \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}}
-
-\CHAPPAGon
-
-% Chapter opening.
-%
-% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
-% Yappendix, Yomitfromtoc), #3 the chapter number.
-%
-% To test against our argument.
-\def\Ynothingkeyword{Ynothing}
-\def\Yomitfromtockeyword{Yomitfromtoc}
-\def\Yappendixkeyword{Yappendix}
-%
-\def\chapmacro#1#2#3{%
-  % Insert the first mark before the heading break (see notes for \domark).
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
-                        \gdef\thissection{}}%
-  %
-  \def\temptype{#2}%
-  \ifx\temptype\Ynothingkeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{\thischaptername}}%
-  \else\ifx\temptype\Yomitfromtockeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{}}%
-  \else\ifx\temptype\Yappendixkeyword
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\appendixletter}%
-      % \noexpand\putwordAppendix avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \else
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\the\chapno}%
-      % \noexpand\putwordChapter avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \fi\fi\fi
-  %
-  % Output the mark.  Pass it through \safewhatsit, to take care of
-  % the preceding space.
-  \safewhatsit\domark
-  %
-  % Insert the chapter heading break.
-  \pchapsepmacro
-  %
-  % Now the second mark, after the heading break.  No break points
-  % between here and the heading.
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \domark
-  %
-  {%
-    \chapfonts \rmisbold
-    %
-    % Have to define \lastsection before calling \donoderef, because the
-    % xref code eventually uses it.  On the other hand, it has to be called
-    % after \pchapsepmacro, or the headline will change too soon.
-    \gdef\lastsection{#1}%
-    %
-    % Only insert the separating space if we have a chapter/appendix
-    % number, and don't print the unnumbered ``number''.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unnchap}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
-      \def\toctype{omit}%
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
-      \def\toctype{app}%
-    \else
-      \setbox0 = \hbox{#3\enspace}%
-      \def\toctype{numchap}%
-    \fi\fi\fi
-    %
-    % Write the toc entry for this chapter.  Must come before the
-    % \donoderef, because we include the current node name in the toc
-    % entry, and \donoderef resets it to empty.
-    \writetocentry{\toctype}{#1}{#3}%
-    %
-    % For pdftex, we have to write out the node definition (aka, make
-    % the pdfdest) after any page break, but before the actual text has
-    % been typeset.  If the destination for the pdf outline is after the
-    % text, then jumping from the outline may wind up with the text not
-    % being visible, for instance under high magnification.
-    \donoderef{#2}%
-    %
-    % Typeset the actual heading.
-    \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
-          \unhbox0 #1\par}%
-  }%
-  \nobreak\bigskip % no page break after a chapter title
-  \nobreak
-}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerparameters{%
-  \advance\rightskip by 3\rightskip
-  \leftskip = \rightskip
-  \parfillskip = 0pt
-}
-
-
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
-%
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-%
-\def\unnchfopen #1{%
-  \chapoddpage
-  \vbox{\chapfonts \raggedtitlesettings #1\par}%
-  \nobreak\bigskip\nobreak
-}
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-\def\centerchfopen #1{%
-  \chapoddpage
-  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
-  \nobreak\bigskip \nobreak
-}
-\def\CHAPFopen{%
-  \global\let\chapmacro=\chfopen
-  \global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.  These macros combine the section number parts and
-% call the generic \sectionheading to do the printing.
-%
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
-% Subsection titles.
-\newskip\subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
-% Subsubsection titles.
-\def\subsubsecheadingskip{\subsecheadingskip}
-\def\subsubsecheadingbreak{\subsecheadingbreak}
-
-
-% Print any size, any type, section title.
-%
-% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
-% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
-% section number.
-%
-\def\seckeyword{sec}
-%
-\def\sectionheading#1#2#3#4{%
-  {%
-    \checkenv{}% should not be in an environment.
-    %
-    % Switch to the right set of fonts.
-    \csname #2fonts\endcsname \rmisbold
-    %
-    \def\sectionlevel{#2}%
-    \def\temptype{#3}%
-    %
-    % Insert first mark before the heading break (see notes for \domark).
-    \let\prevsectiondefs=\lastsectiondefs
-    \ifx\temptype\Ynothingkeyword
-      \ifx\sectionlevel\seckeyword
-        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
-                              \gdef\thissection{\thissectionname}}%
-      \fi
-    \else\ifx\temptype\Yomitfromtockeyword
-      % Don't redefine \thissection.
-    \else\ifx\temptype\Yappendixkeyword
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \else
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \fi\fi\fi
-    %
-    % Go into vertical mode.  Usually we'll already be there, but we
-    % don't want the following whatsit to end up in a preceding paragraph
-    % if the document didn't happen to have a blank line.
-    \par
-    %
-    % Output the mark.  Pass it through \safewhatsit, to take care of
-    % the preceding space.
-    \safewhatsit\domark
-    %
-    % Insert space above the heading.
-    \csname #2headingbreak\endcsname
-    %
-    % Now the second mark, after the heading break.  No break points
-    % between here and the heading.
-    \global\let\prevsectiondefs=\lastsectiondefs
-    \domark
-    %
-    % Only insert the space after the number if we have a section number.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unn}%
-      \gdef\lastsection{#1}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      % for @headings -- no section number, don't include in toc,
-      % and don't redefine \lastsection.
-      \setbox0 = \hbox{}%
-      \def\toctype{omit}%
-      \let\sectionlevel=\empty
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{app}%
-      \gdef\lastsection{#1}%
-    \else
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{num}%
-      \gdef\lastsection{#1}%
-    \fi\fi\fi
-    %
-    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
-    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
-    %
-    % Write the node reference (= pdf destination for pdftex).
-    % Again, see comments in \chapmacro.
-    \donoderef{#3}%
-    %
-    % Interline glue will be inserted when the vbox is completed.
-    % That glue will be a valid breakpoint for the page, since it'll be
-    % preceded by a whatsit (usually from the \donoderef, or from the
-    % \writetocentry if there was no node).  We don't want to allow that
-    % break, since then the whatsits could end up on page n while the
-    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
-    \nobreak
-    %
-    % Output the actual section heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0  % zero if no section number
-          \unhbox0 #1}%
-  }%
-  % Add extra space after the heading -- half of whatever came above it.
-  % Don't allow stretch, though.
-  \kern .5 \csname #2headingskip\endcsname
-  %
-  % Do not let the kern be a potential breakpoint, as it would be if it
-  % was followed by glue.
-  \nobreak
-  %
-  % We'll almost certainly start a paragraph next, so don't let that
-  % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)  However, when a paragraph is not started next
-  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
-  % or the negative glue will cause weirdly wrong output, typically
-  % obscuring the section heading with something else.
-  \vskip-\parskip
-  %
-  % This is so the last item on the main vertical list is a known
-  % \penalty > 10000, so \startdefun, etc., can recognize the situation
-  % and do the needful.
-  \penalty 10001
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.
-%
-% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
-% We append the current node name (if any) and page number as additional
-% arguments for the \{chap,sec,...}entry macros which will eventually
-% read this.  The node name is used in the pdf outlines as the
-% destination to jump to.
-%
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-% But if #1 is `omit', then we don't do anything.  This is used for the
-% table of contents chapter openings themselves.
-%
-\newif\iftocfileopened
-\def\omitkeyword{omit}%
-%
-\def\writetocentry#1#2#3{%
-  \edef\writetoctype{#1}%
-  \ifx\writetoctype\omitkeyword \else
-    \iftocfileopened\else
-      \immediate\openout\tocfile = \jobname.toc
-      \global\tocfileopenedtrue
-    \fi
-    %
-    \iflinks
-      {\atdummies
-       \edef\temp{%
-         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
-       \temp
-      }%
-    \fi
-  \fi
-  %
-  % Tell \shipout to create a pdf destination on each page, if we're
-  % writing pdf.  These are used in the table of contents.  We can't
-  % just write one on every page because the title pages are numbered
-  % 1 and 2 (the page numbers aren't printed), and so are the first
-  % two pages of the document.  Thus, we'd have two destinations named
-  % `1', and two named `2'.
-  \ifpdf \global\pdfmakepagedesttrue \fi
-}
-
-
-% These characters do not print properly in the Computer Modern roman
-% fonts, so we must take special care.  This is more or less redundant
-% with the Texinfo input format setup at the end of this file.
-%
-\def\activecatcodes{%
-  \catcode`\"=\active
-  \catcode`\$=\active
-  \catcode`\<=\active
-  \catcode`\>=\active
-  \catcode`\\=\active
-  \catcode`\^=\active
-  \catcode`\_=\active
-  \catcode`\|=\active
-  \catcode`\~=\active
-}
-
-
-% Read the toc file, which is essentially Texinfo input.
-\def\readtocfile{%
-  \setupdatafile
-  \activecatcodes
-  \input \tocreadfilename
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Prepare to read what we've written to \tocfile.
-%
-\def\startcontents#1{%
-  % 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\tocfile
-  %
-  % Don't need to put `Contents' or `Short Contents' in the headline.
-  % It is abundantly clear what they are.
-  \chapmacro{#1}{Yomitfromtoc}{}%
-  %
-  \savepageno = \pageno
-  \begingroup                  % Set up to handle contents files properly.
-    \raggedbottom              % Worry more about breakpoints than the bottom.
-    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-    %
-    % Roman numerals for page numbers.
-    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-% redefined for the two-volume lispref.  We always output on
-% \jobname.toc even if this is redefined.
-%
-\def\tocreadfilename{\jobname.toc}
-
-% Normal (long) toc.
-%
-\def\contents{%
-  \startcontents{\putwordTOC}%
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-    \ifeof 1 \else
-      \pdfmakeoutlines
-    \fi
-    \closein 1
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
-  \startcontents{\putwordShortTOC}%
-    %
-    \let\partentry = \shortpartentry
-    \let\numchapentry = \shortchapentry
-    \let\appentry = \shortchapentry
-    \let\unnchapentry = \shortunnchapentry
-    % We want a true roman here for the page numbers.
-    \secfonts
-    \let\rm=\shortcontrm \let\bf=\shortcontbf
-    \let\sl=\shortcontsl \let\tt=\shortconttt
-    \rm
-    \hyphenpenalty = 10000
-    \advance\baselineskip by 1pt % Open it up a little.
-    \def\numsecentry##1##2##3##4{}
-    \let\appsecentry = \numsecentry
-    \let\unnsecentry = \numsecentry
-    \let\numsubsecentry = \numsecentry
-    \let\appsubsecentry = \numsecentry
-    \let\unnsubsecentry = \numsecentry
-    \let\numsubsubsecentry = \numsecentry
-    \let\appsubsubsecentry = \numsecentry
-    \let\unnsubsubsecentry = \numsecentry
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \closein 1
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
-%
-\def\shortchaplabel#1{%
-  % This space should be enough, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % But use \hss just in case.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in by \shortchapentry above.)
-  %
-  % We'd like to right-justify chapter numbers, but that looks strange
-  % with appendix letters.  And right-justifying numbers and
-  % left-justifying letters looks strange when there is less than 10
-  % chapters.  Have to read the whole toc once to know how many chapters
-  % there are before deciding ...
-  \hbox to 1em{#1\hss}%
-}
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Parts, in the main contents.  Replace the part number, which doesn't
-% exist, with an empty box.  Let's hope all the numbers have the same width.
-% Also ignore the page number, which is conventionally not printed.
-\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
-\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
-%
-% Parts, in the short toc.
-\def\shortpartentry#1#2#3#4{%
-  \penalty-300
-  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
-  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
-}
-
-% Chapters, in the main contents.
-\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3#4{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
-}
-
-% Appendices, in the main contents.
-% Need the word Appendix, and a fixed-size box.
-%
-\def\appendixbox#1{%
-  % We use M since it's probably the widest letter.
-  \setbox0 = \hbox{\putwordAppendix{} M}%
-  \hbox to \wd0{\putwordAppendix{} #1\hss}}
-%
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
-% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
-
-% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
-\let\appsecentry=\numsecentry
-\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsecentry=\numsubsecentry
-\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
-
-% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
-
-% This parameter controls the indentation of the various levels.
-% Same as \defaultparindent.
-\newdimen\tocindent \tocindent = 15pt
-
-% 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 want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
-   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
-   \begingroup
-     \chapentryfonts
-     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-   \endgroup
-   \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
-  \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
-  \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
-  \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% We use the same \entry macro as for the index entries.
-\let\tocentry = \entry
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\def\subsecentryfonts{\textfonts}
-\def\subsubsecentryfonts{\textfonts}
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @tex ... @end tex    escapes into raw TeX temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain @ character.
-
-\envdef\tex{%
-  \setupmarkupstyle{tex}%
-  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
-  \catcode `\%=14
-  \catcode `\+=\other
-  \catcode `\"=\other
-  \catcode `\|=\other
-  \catcode `\<=\other
-  \catcode `\>=\other
-  \catcode `\`=\other
-  \catcode `\'=\other
-  \escapechar=`\\
-  %
-  % ' is active in math mode (mathcode"8000).  So reset it, and all our
-  % other math active characters (just in case), to plain's definitions.
-  \mathactive
-  %
-  \let\b=\ptexb
-  \let\bullet=\ptexbullet
-  \let\c=\ptexc
-  \let\,=\ptexcomma
-  \let\.=\ptexdot
-  \let\dots=\ptexdots
-  \let\equiv=\ptexequiv
-  \let\!=\ptexexclam
-  \let\i=\ptexi
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \let\{=\ptexlbrace
-  \let\+=\tabalign
-  \let\}=\ptexrbrace
-  \let\/=\ptexslash
-  \let\*=\ptexstar
-  \let\t=\ptext
-  \expandafter \let\csname top\endcsname=\ptextop  % we've made it outer
-  \let\frenchspacing=\plainfrenchspacing
-  %
-  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-  \def\@{@}%
-}
-% There is no need to define \Etex.
-
-% Define @lisp ... @end lisp.
-% @lisp environment forms a group so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments.  \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical.  We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz and
-  % \sectionheading, q.v.
-  \ifnum \lastpenalty=10000 \else
-    \advance\envskipamount by \parskip
-    \endgraf
-    \ifdim\lastskip<\envskipamount
-      \removelastskip
-      % it's not a good place to break if the last penalty was \nobreak
-      % or better ...
-      \ifnum\lastpenalty<10000 \penalty-50 \fi
-      \vskip\envskipamount
-    \fi
-  \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
-% also clear it, so that its embedded environments do the narrowing again.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\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}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
-        \cbl\leaders\hrule height\circthick\hfil\cbr
-        \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\envdef\cartouche{%
-  \ifhmode\par\fi  % can't be in the midst of a paragraph.
-  \startsavinginserts
-  \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 18.4pt % allow for 3pt kerns on either
-                               % side, and for 6pt waste from
-                               % each corner char, and rule thickness
-  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-  % Flag to tell @lisp, etc., not to narrow margin.
-  \let\nonarrowing = t%
-  %
-  % If this cartouche directly follows a sectioning command, we need the
-  % \parskip glue (backspaced over by default) or the cartouche can
-  % collide with the section heading.
-  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
-  %
-  \vbox\bgroup
-      \baselineskip=0pt\parskip=0pt\lineskip=0pt
-      \carttop
-      \hbox\bgroup
-         \hskip\lskip
-         \vrule\kern3pt
-         \vbox\bgroup
-             \kern3pt
-             \hsize=\cartinner
-             \baselineskip=\normbskip
-             \lineskip=\normlskip
-             \parskip=\normpskip
-             \vskip -\parskip
-             \comment % For explanation, see the end of def\group.
-}
-\def\Ecartouche{%
-              \ifhmode\par\fi
-             \kern3pt
-         \egroup
-         \kern3pt\vrule
-         \hskip\rskip
-      \egroup
-      \cartbot
-  \egroup
-  \checkinserts
-}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\newdimen\nonfillparindent
-\def\nonfillstart{%
-  \aboveenvbreak
-  \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy
-  \sepspaces % Make spaces be word-separators rather than space tokens.
-  \let\par = \lisppar % don't ignore blank lines
-  \obeylines % each line of input is a line of output
-  \parskip = 0pt
-  % Turn off paragraph indentation but redefine \indent to emulate
-  % the normal \indent.
-  \nonfillparindent=\parindent
-  \parindent = 0pt
-  \let\indent\nonfillindent
-  %
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-  \let\exdent=\nofillexdent
-}
-
-\begingroup
-\obeyspaces
-% We want to swallow spaces (but not other tokens) after the fake
-% @indent in our nonfill-environments, where spaces are normally
-% active and set to @tie, resulting in them not being ignored after
-% @indent.
-\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
-\gdef\nonfillindentcheck{%
-\ifx\temp %
-\expandafter\nonfillindentgobble%
-\else%
-\leavevmode\nonfillindentbox%
-\fi%
-}%
-\endgroup
-\def\nonfillindentgobble#1{\nonfillindent}
-\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
-
-% If you want all examples etc. small: @set dispenvsize small.
-% If you want even small examples the full size: @set dispenvsize nosmall.
-% This affects the following displayed environments:
-%    @example, @display, @format, @lisp
-%
-\def\smallword{small}
-\def\nosmallword{nosmall}
-\let\SETdispenvsize\relax
-\def\setnormaldispenv{%
-  \ifx\SETdispenvsize\smallword
-    % end paragraph for sake of leading, in case document has no blank
-    % line.  This is redundant with what happens in \aboveenvbreak, but
-    % we need to do it before changing the fonts, and it's inconvenient
-    % to change the fonts afterward.
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-\def\setsmalldispenv{%
-  \ifx\SETdispenvsize\nosmallword
-  \else
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-
-% We often define two environments, @foo and @smallfoo.
-% Let's do it in one command.  #1 is the env name, #2 the definition.
-\def\makedispenvdef#1#2{%
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
-  \expandafter\let\csname E#1\endcsname \afterenvbreak
-  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
-}
-
-% Define two environment synonyms (#1 and #2) for an environment.
-\def\maketwodispenvdef#1#2#3{%
-  \makedispenvdef{#1}{#3}%
-  \makedispenvdef{#2}{#3}%
-}
-%
-% @lisp: indented, narrowed, typewriter font;
-% @example: same as @lisp.
-%
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-%
-\maketwodispenvdef{lisp}{example}{%
-  \nonfillstart
-  \tt\setupmarkupstyle{example}%
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble % eat return
-}
-% @display/@smalldisplay: same as @lisp except keep current font.
-%
-\makedispenvdef{display}{%
-  \nonfillstart
-  \gobble
-}
-
-% @format/@smallformat: same as @display except don't narrow margins.
-%
-\makedispenvdef{format}{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-
-% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
-\envdef\flushleft{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-\let\Eflushleft = \afterenvbreak
-
-% @flushright.
-%
-\envdef\flushright{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \advance\leftskip by 0pt plus 1fill\relax
-  \gobble
-}
-\let\Eflushright = \afterenvbreak
-
-
-% @raggedright does more-or-less normal line breaking but no right
-% justification.  From plain.tex.
-\envdef\raggedright{%
-  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
-}
-\let\Eraggedright\par
-
-\envdef\raggedleft{%
-  \parindent=0pt \leftskip0pt plus2em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedleft\par
-
-\envdef\raggedcenter{%
-  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedcenter\par
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.  We keep \parskip nonzero in general, since
-% we're doing normal filling.  So, when using \aboveenvbreak and
-% \afterenvbreak, temporarily make \parskip 0.
-%
-\makedispenvdef{quotation}{\quotationstart}
-%
-\def\quotationstart{%
-  \indentedblockstart % same as \indentedblock, but increase right margin too.
-  \ifx\nonarrowing\relax
-    \advance\rightskip by \lispnarrowing
-  \fi
-  \parsearg\quotationlabel
-}
-
-% We have retained a nonzero parskip for the environment, since we're
-% doing normal filling.
-%
-\def\Equotation{%
-  \par
-  \ifx\quotationauthor\thisisundefined\else
-    % indent a bit.
-    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
-  \fi
-  {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallquotation{\Equotation}
-
-% If we're given an argument, typeset it in bold with a colon after.
-\def\quotationlabel#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty \else
-    {\bf #1: }%
-  \fi
-}
-
-% @indentedblock is like @quotation, but indents only on the left and
-% has no optional argument.
-% 
-\makedispenvdef{indentedblock}{\indentedblockstart}
-%
-\def\indentedblockstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-}
-
-% Keep a nonzero parskip for the environment, since we're doing normal filling.
-%
-\def\Eindentedblock{%
-  \par
-  {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallindentedblock{\Eindentedblock}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too.  Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
-  \do\ \do\\\do\{\do\}\do\$\do\&%
-  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
-  \do\<\do\>\do\|\do\@\do+\do\"%
-  % Don't do the quotes -- if we do, @set txicodequoteundirected and
-  % @set txicodequotebacktick will not have effect on @verb and
-  % @verbatim, and ?` and !` ligatures won't get disabled.
-  %\do\`\do\'%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=\other}\dospecials}
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
-  \tt  % easiest (and conventionally used) font for verbatim
-  \def\par{\leavevmode\endgraf}%
-  \setupmarkupstyle{verb}%
-  \tabeightspaces
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion.
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-% We typeset each line of the verbatim in an \hbox, so we can handle
-% tabs.  The \global is in case the verbatim line starts with an accent,
-% or some other command that starts with a begin-group.  Otherwise, the
-% entire \verbbox would disappear at the corresponding end-group, before
-% it is typeset.  Meanwhile, we can't have nested verbatim commands
-% (can we?), so the \global won't be overwriting itself.
-\newbox\verbbox
-\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
-%
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabexpand{%
-    \catcode`\^^I=\active
-    \def^^I{\leavevmode\egroup
-      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
-      \divide\dimen\verbbox by\tabw
-      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
-      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
-      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
-    }%
-  }
-\endgroup
-
-% start the verbatim environment.
-\def\setupverbatim{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \tt % easiest (and conventionally used) font for verbatim
-  % The \leavevmode here is for blank lines.  Otherwise, we would
-  % never \starttabox and the \egroup would end verbatim mode.
-  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
-  \tabexpand
-  \setupmarkupstyle{verbatim}%
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count.
-  % Must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-  \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters.  Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-%    \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
-  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-%     \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%
-\begingroup
-  \catcode`\ =\active
-  \obeylines %
-  % ignore everything up to the first ^^M, that's the newline at the end
-  % of the @verbatim input line itself.  Otherwise we get an extra blank
-  % line in the output.
-  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
-  % We really want {...\end verbatim} in the body of the macro, but
-  % without the active space; thus we have to use \xdef and \gobble.
-\endgroup
-%
-\envdef\verbatim{%
-    \setupverbatim\doverbatim
-}
-\let\Everbatim = \afterenvbreak
-
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-%
-\def\doverbatiminclude#1{%
-  {%
-    \makevalueexpandable
-    \setupverbatim
-    \indexnofonts       % Allow `@@' and other weird things in file names.
-    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
-    \input #1
-    \afterenvbreak
-  }%
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
-\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
-%
-\def\insertcopying{%
-  \begingroup
-    \parindent = 0pt  % paragraph indentation looks wrong on title page
-    \scanexp\copyingtext
-  \endgroup
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-\newcount\defunpenalty
-
-% Start the processing of @deffn:
-\def\startdefun{%
-  \ifnum\lastpenalty<10000
-    \medbreak
-    \defunpenalty=10003 % Will keep this @deffn together with the
-                        % following @def command, see below.
-  \else
-    % If there are two @def commands in a row, we'll have a \nobreak,
-    % which is there to keep the function description together with its
-    % header.  But if there's nothing but headers, we need to allow a
-    % break somewhere.  Check specifically for penalty 10002, inserted
-    % by \printdefunline, instead of 10000, since the sectioning
-    % commands also insert a nobreak penalty, and we don't want to allow
-    % a break between a section heading and a defun.
-    %
-    % As a further refinement, we avoid "club" headers by signalling
-    % with penalty of 10003 after the very first @deffn in the
-    % sequence (see above), and penalty of 10002 after any following
-    % @def command.
-    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
-    %
-    % Similarly, after a section heading, do not allow a break.
-    % But do insert the glue.
-    \medskip  % preceded by discardable penalty, so not a breakpoint
-  \fi
-  %
-  \parindent=0in
-  \advance\leftskip by \defbodyindent
-  \exdentamount=\defbodyindent
-}
-
-\def\dodefunx#1{%
-  % First, check whether we are in the right environment:
-  \checkenv#1%
-  %
-  % As above, allow line break if we have multiple x headers in a row.
-  % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
-  %
-  % And now, it's time to reuse the body of the original defun:
-  \expandafter\gobbledefun#1%
-}
-\def\gobbledefun#1\startdefun{}
-
-% \printdefunline \deffnheader{text}
-%
-\def\printdefunline#1#2{%
-  \begingroup
-    % call \deffnheader:
-    #1#2 \endheader
-    % common ending:
-    \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil\relax
-    \endgraf
-    \nobreak\vskip -\parskip
-    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
-    % Some of the @defun-type tags do not enable magic parentheses,
-    % rendering the following check redundant.  But we don't optimize.
-    \checkparencounts
-  \endgroup
-}
-
-\def\Edefun{\endgraf\medbreak}
-
-% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remaining is to define \deffnheader.
-%
-\def\makedefun#1{%
-  \expandafter\let\csname E#1\endcsname = \Edefun
-  \edef\temp{\noexpand\domakedefun
-    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
-  \temp
-}
-
-% \domakedefun \deffn \deffnx \deffnheader
-%
-% Define \deffn and \deffnx, without parameters.
-% \deffnheader has to be defined explicitly.
-%
-\def\domakedefun#1#2#3{%
-  \envdef#1{%
-    \startdefun
-    \doingtypefnfalse    % distinguish typed functions from all else
-    \parseargusing\activeparens{\printdefunline#3}%
-  }%
-  \def#2{\dodefunx#1}%
-  \def#3%
-}
-
-\newif\ifdoingtypefn       % doing typed function?
-\newif\ifrettypeownline    % typeset return type on its own line?
-
-% @deftypefnnewline on|off says whether the return type of typed functions
-% are printed on their own line.  This affects @deftypefn, @deftypefun,
-% @deftypeop, and @deftypemethod.
-% 
-\parseargdef\deftypefnnewline{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxideftypefnnl\endcsname
-      = \empty
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxideftypefnnl\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @txideftypefnnl value `\temp',
-                must be on|off}%
-  \fi\fi
-}
-
-% Untyped functions:
-
-% @deffn category name args
-\makedefun{deffn}{\deffngeneral{}}
-
-% @deffn category class name args
-\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
-
-% \defopon {category on}class name args
-\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deffngeneral {subind}category name args
-%
-\def\deffngeneral#1#2 #3 #4\endheader{%
-  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
-  \dosubind{fn}{\code{#3}}{#1}%
-  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
-}
-
-% Typed functions:
-
-% @deftypefn category type name args
-\makedefun{deftypefn}{\deftypefngeneral{}}
-
-% @deftypeop category class type name args
-\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
-
-% \deftypeopon {category on}class type name args
-\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypefngeneral {subind}category type name args
-%
-\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{fn}{\code{#4}}{#1}%
-  \doingtypefntrue
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Typed variables:
-
-% @deftypevr category type var args
-\makedefun{deftypevr}{\deftypecvgeneral{}}
-
-% @deftypecv category class type var args
-\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
-
-% \deftypecvof {category of}class type var args
-\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypecvgeneral {subind}category type var args
-%
-\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{vr}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Untyped variables:
-
-% @defvr category var args
-\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
-
-% @defcv category class var args
-\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
-
-% \defcvof {category of}class var args
-\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-
-% Types:
-
-% @deftp category name args
-\makedefun{deftp}#1 #2 #3\endheader{%
-  \doind{tp}{\code{#2}}%
-  \defname{#1}{}{#2}\defunargs{#3\unskip}%
-}
-
-% Remaining @defun-like shortcuts:
-\makedefun{defun}{\deffnheader{\putwordDeffunc} }
-\makedefun{defmac}{\deffnheader{\putwordDefmac} }
-\makedefun{defspec}{\deffnheader{\putwordDefspec} }
-\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
-\makedefun{defvar}{\defvrheader{\putwordDefvar} }
-\makedefun{defopt}{\defvrheader{\putwordDefopt} }
-\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod}{\defopon\putwordMethodon}
-\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
-\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
-\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the category, such as "Function".
-% #2 is the return type, if any.
-% #3 is the function name.
-%
-% We are followed by (but not passed) the arguments, if any.
-%
-\def\defname#1#2#3{%
-  \par
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \advance\leftskip by -\defbodyindent
-  %
-  % Determine if we are typesetting the return type of a typed function
-  % on a line by itself.
-  \rettypeownlinefalse
-  \ifdoingtypefn  % doing a typed function specifically?
-    % then check user option for putting return type on its own line:
-    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
-      \rettypeownlinetrue
-    \fi
-  \fi
-  %
-  % How we'll format the category name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \def\temp{#1}%
-  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
-  %
-  % Figure out line sizes for the paragraph shape.  We'll always have at
-  % least two.
-  \tempnum = 2
-  %
-  % The first line needs space for \box0; but if \rightskip is nonzero,
-  % we need only space for the part of \box0 which exceeds it:
-  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
-  %
-  % If doing a return type on its own line, we'll have another line.
-  \ifrettypeownline
-    \advance\tempnum by 1
-    \def\maybeshapeline{0in \hsize}%
-  \else
-    \def\maybeshapeline{}%
-  \fi
-  %
-  % The continuations:
-  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  %
-  % The final paragraph shape:
-  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
-  %
-  % Put the category name at the right margin.
-  \noindent
-  \hbox to 0pt{%
-    \hfil\box0 \kern-\hsize
-    % \hsize has to be shortened this way:
-    \kern\leftskip
-    % Intentionally do not respect \rightskip, since we need the space.
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \exdentamount=\defbodyindent
-  {%
-    % defun fonts. We use typewriter by default (used to be bold) because:
-    % . we're printing identifiers, they should be in tt in principle.
-    % . in languages with many accents, such as Czech or French, it's
-    %   common to leave accents off identifiers.  The result looks ok in
-    %   tt, but exceedingly strange in rm.
-    % . we don't want -- and --- to be treated as ligatures.
-    % . this still does not fix the ?` and !` ligatures, but so far no
-    %   one has made identifiers using them :).
-    \df \tt
-    \def\temp{#2}% text of the return type
-    \ifx\temp\empty\else
-      \tclose{\temp}% typeset the return type
-      \ifrettypeownline
-        % put return type on its own line; prohibit line break following:
-        \hfil\vadjust{\nobreak}\break  
-      \else
-        \space  % type on same line, so just followed by a space
-      \fi
-    \fi           % no return type
-    #3% output function name
-  }%
-  {\rm\enskip}% hskip 0.5 em of \tenrm
-  %
-  \boldbrax
-  % arguments will be output next, if any.
-}
-
-% Print arguments in slanted roman (not ttsl), inconsistently with using
-% tt for the name.  This is because literal text is sometimes needed in
-% the argument list (groff manual), and ttsl and tt are not very
-% distinguishable.  Prevent hyphenation at `-' chars.
-%
-\def\defunargs#1{%
-  % use sl by default (not ttsl),
-  % tt for the names.
-  \df \sl \hyphenchar\font=0
-  %
-  % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  We used to recommend @var for that, so
-  % leave the code in, but it's strange for @var to lead to typewriter.
-  % Nowadays we recommend @code, since the difference between a ttsl hyphen
-  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
-  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
-  #1%
-  \sl\hyphenchar\font=45
-}
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
-  \catcode`\(=\active \catcode`\)=\active
-  \catcode`\[=\active \catcode`\]=\active
-  \catcode`\&=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-% Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-{
-  \activeparens
-  \global\let(=\lparen \global\let)=\rparen
-  \global\let[=\lbrack \global\let]=\rbrack
-  \global\let& = \&
-
-  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-  \gdef\magicamp{\let&=\amprm}
-}
-
-\newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
-
-\def\parenfont{%
-  \ifampseen
-    % At the first level, print parens in roman,
-    % otherwise use the default font.
-    \ifnum \parencount=1 \rm \fi
-  \else
-    % The \sf parens (in \boldbrax) actually are a little bolder than
-    % the contained text.  This is especially needed for [ and ] .
-    \sf
-  \fi
-}
-\def\infirstlevel#1{%
-  \ifampseen
-    \ifnum\parencount=1
-      #1%
-    \fi
-  \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
-\def\opnr{%
-  \global\advance\parencount by 1
-  {\parenfont(}%
-  \infirstlevel \bfafterword
-}
-\def\clnr{%
-  {\parenfont)}%
-  \infirstlevel \sl
-  \global\advance\parencount by -1
-}
-
-\newcount\brackcount
-\def\lbrb{%
-  \global\advance\brackcount by 1
-  {\bf[}%
-}
-\def\rbrb{%
-  {\bf]}%
-  \global\advance\brackcount by -1
-}
-
-\def\checkparencounts{%
-  \ifnum\parencount=0 \else \badparencount \fi
-  \ifnum\brackcount=0 \else \badbrackcount \fi
-}
-% these should not use \errmessage; the glibc manual, at least, actually
-% has such constructs (when documenting function pointers).
-\def\badparencount{%
-  \message{Warning: unbalanced parentheses in @def...}%
-  \global\parencount=0
-}
-\def\badbrackcount{%
-  \message{Warning: unbalanced square brackets in @def...}%
-  \global\brackcount=0
-}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\thisisundefined
-  \newwrite\macscribble
-  \def\scantokens#1{%
-    \toks0={#1}%
-    \immediate\openout\macscribble=\jobname.tmp
-    \immediate\write\macscribble{\the\toks0}%
-    \immediate\closeout\macscribble
-    \input \jobname.tmp
-  }
-\fi
-
-\def\scanmacro#1{\begingroup
-  \newlinechar`\^^M
-  \let\xeatspaces\eatspaces
-  %
-  % Undo catcode changes of \startcontents and \doprintindex
-  % When called from @insertcopying or (short)caption, we need active
-  % backslash to get it printed correctly.  Previously, we had
-  % \catcode`\\=\other instead.  We'll see whether a problem appears
-  % with macro expansion.                              --kasal, 19aug04
-  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-  %
-  % ... and for \example:
-  \spaceisspace
-  %
-  % The \empty here causes a following catcode 5 newline to be eaten as
-  % part of reading whitespace after a control sequence.  It does not
-  % eat a catcode 13 newline.  There's no good way to handle the two
-  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
-  % would then have different behavior).  See the Macro Details node in
-  % the manual for the workaround we recommend for macros and
-  % line-oriented commands.
-  % 
-  \scantokens{#1\empty}%
-\endgroup}
-
-\def\scanexp#1{%
-  \edef\temp{\noexpand\scanmacro{#1}}%
-  \temp
-}
-
-\newcount\paramno   % Count of parameters
-\newtoks\macname    % Macro name
-\newif\ifrecursive  % Is it recursive?
-
-% List of all defined macros in the form
-%    \definedummyword\macro1\definedummyword\macro2...
-% Currently is also contains all @aliases; the list can be split
-% if there is a need.
-\def\macrolist{}
-
-% Add the macro to \macrolist
-\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
-\def\addtomacrolistxxx#1{%
-     \toks0 = \expandafter{\macrolist\definedummyword#1}%
-     \xdef\macrolist{\the\toks0}%
-}
-
-% Utility routines.
-% This does \let #1 = #2, with \csnames; that is,
-%   \let \csname#1\endcsname = \csname#2\endcsname
-% (except of course we have to play expansion games).
-%
-\def\cslet#1#2{%
-  \expandafter\let
-  \csname#1\expandafter\endcsname
-  \csname#2\endcsname
-}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \
-% to recognize macro arguments; this is the job of \mbodybackslash.
-%
-% Non-ASCII encodings make 8-bit characters active, so un-activate
-% them to avoid their expansion.  Must do this non-globally, to
-% confine the change to the current group.
-%
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-%
-\def\scanctxt{% used as subroutine
-  \catcode`\"=\other
-  \catcode`\+=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\@=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\~=\other
-  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
-}
-
-\def\scanargctxt{% used for copying and captions, not macros.
-  \scanctxt
-  \catcode`\\=\other
-  \catcode`\^^M=\other
-}
-
-\def\macrobodyctxt{% used for @macro definitions
-  \scanctxt
-  \catcode`\{=\other
-  \catcode`\}=\other
-  \catcode`\^^M=\other
-  \usembodybackslash
-}
-
-\def\macroargctxt{% used when scanning invocations
-  \scanctxt
-  \catcode`\\=0
-}
-% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
-% for the single characters \ { }.  Thus, we end up with the "commands"
-% that would be written @\ @{ @} in a Texinfo document.
-% 
-% We already have @{ and @}.  For @\, we define it here, and only for
-% this purpose, to produce a typewriter backslash (so, the @\ that we
-% define for @math can't be used with @macro calls):
-%
-\def\\{\normalbackslash}%
-% 
-% We would like to do this for \, too, since that is what makeinfo does.
-% But it is not possible, because Texinfo already has a command @, for a
-% cedilla accent.  Documents must use @comma{} instead.
-%
-% \anythingelse will almost certainly be an error of some kind.
-
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-%
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\margbackslash#1{\char`\#1 }
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
-  \getargs{#1}% now \macname is the macname and \argl the arglist
-  \ifx\argl\empty       % no arguments
-     \paramno=0\relax
-  \else
-     \expandafter\parsemargdef \argl;%
-     \if\paramno>256\relax
-       \ifx\eTeXversion\thisisundefined
-         \errhelp = \EMsimple
-         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
-       \fi
-     \fi
-  \fi
-  \if1\csname ismacro.\the\macname\endcsname
-     \message{Warning: redefining \the\macname}%
-  \else
-     \expandafter\ifx\csname \the\macname\endcsname \relax
-     \else \errmessage{Macro name \the\macname\space already defined}\fi
-     \global\cslet{macsave.\the\macname}{\the\macname}%
-     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
-     \addtomacrolist{\the\macname}%
-  \fi
-  \begingroup \macrobodyctxt
-  \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody
-  \fi}
-
-\parseargdef\unmacro{%
-  \if1\csname ismacro.#1\endcsname
-    \global\cslet{#1}{macsave.#1}%
-    \global\expandafter\let \csname ismacro.#1\endcsname=0%
-    % Remove the macro name from \macrolist:
-    \begingroup
-      \expandafter\let\csname#1\endcsname \relax
-      \let\definedummyword\unmacrodo
-      \xdef\macrolist{\macrolist}%
-    \endgroup
-  \else
-    \errmessage{Macro #1 not defined}%
-  \fi
-}
-
-% Called by \do from \dounmacro on each macro.  The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
-  \ifx #1\relax
-    % remove this
-  \else
-    \noexpand\definedummyword \noexpand#1%
-  \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname#1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% For macro processing make @ a letter so that we can make Texinfo private macro names.
-\edef\texiatcatcode{\the\catcode`\@}
-\catcode `@=11\relax
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
-% in the params list to some hook where the argument si to be expanded.  If
-% there are less than 10 arguments that hook is to be replaced by ##N where N
-% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.  
-%
-% That gets used by \mbodybackslash (above).
-%
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-%
-% If there are 10 or more arguments, a different technique is used, where the
-% hook remains in the body, and when macro is to be expanded the body is
-% processed again to replace the arguments.
-%
-% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
-% argument N value and then \edef  the body (nothing else will expand because of
-% the catcode regime underwhich the body was input).
-%
-% If you compile with TeX (not eTeX), and you have macros with 10 or more
-% arguments, you need that no macro has more than 256 arguments, otherwise an
-% error is produced.
-\def\parsemargdef#1;{%
-  \paramno=0\def\paramlist{}%
-  \let\hash\relax
-  \let\xeatspaces\relax
-  \parsemargdefxxx#1,;,%
-  % In case that there are 10 or more arguments we parse again the arguments
-  % list to set new definitions for the \macarg.BLAH macros corresponding to
-  % each BLAH argument. It was anyhow needed to parse already once this list
-  % in order to count the arguments, and as macros with at most 9 arguments
-  % are by far more frequent than macro with 10 or more arguments, defining
-  % twice the \macarg.BLAH macros does not cost too much processing power.
-  \ifnum\paramno<10\relax\else
-    \paramno0\relax
-    \parsemmanyargdef@@#1,;,% 10 or more arguments
-  \fi
-}
-\def\parsemargdefxxx#1,{%
-  \if#1;\let\next=\relax
-  \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1
-    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
-    \edef\paramlist{\paramlist\hash\the\paramno,}%
-  \fi\next}
-
-\def\parsemmanyargdef@@#1,{%
-  \if#1;\let\next=\relax
-  \else 
-    \let\next=\parsemmanyargdef@@
-    \edef\tempb{\eatspaces{#1}}%
-    \expandafter\def\expandafter\tempa
-       \expandafter{\csname macarg.\tempb\endcsname}%
-    % Note that we need some extra \noexpand\noexpand, this is because we
-    % don't want \the  to be expanded in the \parsermacbody  as it uses an
-    % \xdef .
-    \expandafter\edef\tempa
-      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
-    \advance\paramno by 1\relax
-  \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-%
-
-\catcode `\@\texiatcatcode
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\catcode `\@=11\relax
-
-\let\endargs@\relax
-\let\nil@\relax
-\def\nilm@{\nil@}%
-\long\def\nillm@{\nil@}%
-
-% This macro is expanded during the Texinfo macro expansion, not during its
-% definition.  It gets all the arguments values and assigns them to macros
-% macarg.ARGNAME
-%
-% #1 is the macro name
-% #2 is the list of argument names
-% #3 is the list of argument values
-\def\getargvals@#1#2#3{%
-  \def\macargdeflist@{}%
-  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
-  \def\paramlist{#2,\nil@}%
-  \def\macroname{#1}%
-  \begingroup
-  \macroargctxt
-  \def\argvaluelist{#3,\nil@}%
-  \def\@tempa{#3}%
-  \ifx\@tempa\empty
-    \setemptyargvalues@
-  \else
-    \getargvals@@
-  \fi
-}
-
-% 
-\def\getargvals@@{%
-  \ifx\paramlist\nilm@
-      % Some sanity check needed here that \argvaluelist is also empty.
-      \ifx\argvaluelist\nillm@
-      \else
-        \errhelp = \EMsimple
-        \errmessage{Too many arguments in macro `\macroname'!}%
-      \fi
-      \let\next\macargexpandinbody@
-  \else
-    \ifx\argvaluelist\nillm@
-       % No more arguments values passed to macro.  Set remaining named-arg
-       % macros to empty.
-       \let\next\setemptyargvalues@
-    \else
-      % pop current arg name into \@tempb
-      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
-      \expandafter\@tempa\expandafter{\paramlist}%
-       % pop current argument value into \@tempc
-      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
-      \expandafter\@tempa\expandafter{\argvaluelist}%
-       % Here \@tempb is the current arg name and \@tempc is the current arg value.
-       % First place the new argument macro definition into \@tempd
-       \expandafter\macname\expandafter{\@tempc}%
-       \expandafter\let\csname macarg.\@tempb\endcsname\relax
-       \expandafter\def\expandafter\@tempe\expandafter{%
-         \csname macarg.\@tempb\endcsname}%
-       \edef\@tempd{\long\def\@tempe{\the\macname}}%
-       \push@\@tempd\macargdeflist@
-       \let\next\getargvals@@
-    \fi
-  \fi
-  \next
-}
-
-\def\push@#1#2{%
-  \expandafter\expandafter\expandafter\def
-  \expandafter\expandafter\expandafter#2%
-  \expandafter\expandafter\expandafter{%
-  \expandafter#1#2}%
-}
-
-% Replace arguments by their values in the macro body, and place the result
-% in macro \@tempa
-\def\macvalstoargs@{%
-  %  To do this we use the property that token registers that are \the'ed
-  % within an \edef  expand only once. So we are going to place all argument
-  % values into respective token registers.
-  %
-  % First we save the token context, and initialize argument numbering.
-  \begingroup
-    \paramno0\relax
-    % Then, for each argument number #N, we place the corresponding argument
-    % value into a new token list register \toks#N
-    \expandafter\putargsintokens@\saveparamlist@,;,%
-    % Then, we expand the body so that argument are replaced by their
-    % values. The trick for values not to be expanded themselves is that they
-    % are within tokens and that tokens expand only once in an \edef .
-    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
-    % Now we restore the token stack pointer to free the token list registers
-    % which we have used, but we make sure that expanded body is saved after
-    % group.
-    \expandafter
-  \endgroup
-  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
-  }
-
-\def\macargexpandinbody@{% 
-  %% Define the named-macro outside of this group and then close this group. 
-  \expandafter
-  \endgroup
-  \macargdeflist@
-  % First the replace in body the macro arguments by their values, the result
-  % is in \@tempa .
-  \macvalstoargs@
-  % Then we point at the \norecurse or \gobble (for recursive) macro value
-  % with \@tempb .
-  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
-  % Depending on whether it is recursive or not, we need some tailing
-  % \egroup .
-  \ifx\@tempb\gobble
-     \let\@tempc\relax
-  \else
-     \let\@tempc\egroup
-  \fi
-  % And now we do the real job:
-  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
-  \@tempd
-}
-
-\def\putargsintokens@#1,{%
-  \if#1;\let\next\relax
-  \else
-    \let\next\putargsintokens@
-    % First we allocate the new token list register, and give it a temporary
-    % alias \@tempb .
-    \toksdef\@tempb\the\paramno
-    % Then we place the argument value into that token list register.
-    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
-    \expandafter\@tempb\expandafter{\@tempa}%
-    \advance\paramno by 1\relax
-  \fi
-  \next
-}
-
-% Save the token stack pointer into macro #1
-\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
-% Restore the token stack pointer from number in macro #1
-\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
-% newtoks that can be used non \outer .
-\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-
-% Tailing missing arguments are set to empty
-\def\setemptyargvalues@{%
-  \ifx\paramlist\nilm@
-    \let\next\macargexpandinbody@
-  \else
-    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
-    \let\next\setemptyargvalues@
-  \fi
-  \next
-}
-
-\def\setemptyargvaluesparser@#1,#2\endargs@{%
-  \expandafter\def\expandafter\@tempa\expandafter{%
-    \expandafter\def\csname macarg.#1\endcsname{}}%
-  \push@\@tempa\macargdeflist@
-  \def\paramlist{#2}%
-}
-
-% #1 is the element target macro
-% #2 is the list macro
-% #3,#4\endargs@ is the list value
-\def\pop@#1#2#3,#4\endargs@{%
-   \def#1{#3}%
-   \def#2{#4}%
-}
-\long\def\longpop@#1#2#3,#4\endargs@{%
-   \long\def#1{#3}%
-   \long\def#2{#4}%
-}
-
-% This defines a Texinfo @macro. There are eight cases: recursive and
-% nonrecursive macros of zero, one, up to nine, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-%
-\def\defmacro{%
-  \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
-    \else
-      \ifnum\paramno<10\relax % at most 9
-        \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-        \expandafter\expandafter
-        \expandafter\xdef
-        \expandafter\expandafter
-          \csname\the\macname xxx\endcsname
-            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
-      \else % 10 or more
-        \expandafter\xdef\csname\the\macname\endcsname{%
-          \noexpand\getargvals@{\the\macname}{\argl}%
-        }%    
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
-        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
-      \fi
-    \fi
-  \else
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-        \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \else % at most 9
-      \ifnum\paramno<10\relax
-        \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \expandafter\noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-        \expandafter\expandafter
-        \expandafter\xdef
-        \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-        \paramlist{%
-            \egroup
-            \noexpand\norecurse{\the\macname}%
-            \noexpand\scanmacro{\temp}\egroup}%
-      \else % 10 or more:
-        \expandafter\xdef\csname\the\macname\endcsname{%
-          \noexpand\getargvals@{\the\macname}{\argl}%
-        }%
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
-        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
-      \fi
-    \fi
-  \fi}
-
-\catcode `\@\texiatcatcode\relax
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {.  If so it reads up to the closing }, if not, it reads the whole
-% line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg).
-% 
-\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
-  \ifx\nchar\bgroup\else
-    \expandafter\parsearg
-  \fi \macnamexxx}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign.  Make them active and then expand them all to nothing.
-%
-\def\alias{\parseargusing\obeyspaces\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{%
-  {%
-    \expandafter\let\obeyedspace=\empty
-    \addtomacrolist{#1}%
-    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
-  }%
-  \next
-}
-
-
-\message{cross references,}
-
-\newwrite\auxfile
-\newif\ifhavexrefs    % True if xref values are known.
-\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{%
-  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
-
-% @node's only job in TeX is to define \lastnode, which is used in
-% cross-references.  The @node line might or might not have commas, and
-% might or might not have spaces before the first comma, like:
-% @node foo , bar , ...
-% We don't want such trailing spaces in the node name.
-%
-\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
-%
-% also remove a trailing comma, in case of something like this:
-% @node Help-Cross,  ,  , Cross-refs
-\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
-
-\let\nwnode=\node
-\let\lastnode=\empty
-
-% Write a cross-reference definition for the current node.  #1 is the
-% type (Ynumbered, Yappendix, Ynothing).
-%
-\def\donoderef#1{%
-  \ifx\lastnode\empty\else
-    \setref{\lastnode}{#1}%
-    \global\let\lastnode=\empty
-  \fi
-}
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-%
-\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
-%                 or the anchor name.
-% 2) NAME-snt   - section number and type, passed as the SNT arg, or
-%                 empty for anchors.
-% 3) NAME-pg    - the page number.
-%
-% This is called from \donoderef, \anchor, and \dofloat.  In the case of
-% floats, there is an additional part, which is not written here:
-% 4) NAME-lof   - the text as it should appear in a @listoffloats.
-%
-\def\setref#1#2{%
-  \pdfmkdest{#1}%
-  \iflinks
-    {%
-      \atdummies  % preserve commands, but don't expand them
-      \edef\writexrdef##1##2{%
-       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
-         ##1}{##2}}% these are parameters of \writexrdef
-      }%
-      \toks0 = \expandafter{\lastsection}%
-      \immediate \writexrdef{title}{\the\toks0 }%
-      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
-    }%
-  \fi
-}
-
-% @xrefautosectiontitle on|off says whether @section(ing) names are used
-% automatically in xrefs, if the third arg is not explicitly specified.
-% This was provided as a "secret" @set xref-automatic-section-title
-% variable, now it's official.
-% 
-\parseargdef\xrefautomaticsectiontitle{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETxref-automatic-section-title\endcsname
-      = \empty
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETxref-automatic-section-title\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
-                must be on|off}%
-  \fi\fi
-}
-
-% \f
-% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual.  All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-%
-\newbox\toprefbox
-\newbox\printedrefnamebox
-\newbox\infofilenamebox
-\newbox\printedmanualbox
-%
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
-  \unsepspaces
-  %
-  % Get args without leading/trailing spaces.
-  \def\printedrefname{\ignorespaces #3}%
-  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
-  %
-  \def\infofilename{\ignorespaces #4}%
-  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
-  %
-  \def\printedmanual{\ignorespaces #5}%
-  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
-  %
-  % If the printed reference name (arg #3) was not explicitly given in
-  % the @xref, figure out what we want to use.
-  \ifdim \wd\printedrefnamebox = 0pt
-    % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
-      % Not auto section-title: use node name inside the square brackets.
-      \def\printedrefname{\ignorespaces #1}%
-    \else
-      % Auto section-title: use chapter/section title inside
-      % the square brackets if we have it.
-      \ifdim \wd\printedmanualbox > 0pt
-        % It is in another manual, so we don't have it; use node name.
-        \def\printedrefname{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We (should) know the real title if we have the xref values.
-          \def\printedrefname{\refx{#1-title}{}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printedrefname{\ignorespaces #1}%
-        \fi%
-      \fi
-    \fi
-  \fi
-  %
-  % Make link in pdf output.
-  \ifpdf
-    {\indexnofonts
-     \turnoffactive
-     \makevalueexpandable
-     % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.  This ignores all spaces in
-     % #4, including (wrongly) those in the middle of the filename.
-     \getfilename{#4}%
-     %
-     % This (wrongly) does not take account of leading or trailing
-     % spaces in #1, which should be ignored.
-     \edef\pdfxrefdest{#1}%
-     \ifx\pdfxrefdest\empty
-       \def\pdfxrefdest{Top}% no empty targets
-     \else
-       \txiescapepdf\pdfxrefdest  % escape PDF special chars
-     \fi
-     %
-     \leavevmode
-     \startlink attr{/Border [0 0 0]}%
-     \ifnum\filenamelength>0
-       goto file{\the\filename.pdf} name{\pdfxrefdest}%
-     \else
-       goto name{\pdfmkpgn{\pdfxrefdest}}%
-     \fi
-    }%
-    \setcolor{\linkcolor}%
-  \fi
-  %
-  % Float references are printed completely differently: "Figure 1.2"
-  % instead of "[somenode], p.3".  We distinguish them by the
-  % LABEL-title being set to a magic string.
-  {%
-    % Have to otherify everything special to allow the \csname to
-    % include an _ in the xref name, etc.
-    \indexnofonts
-    \turnoffactive
-    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
-      \csname XR#1-title\endcsname
-  }%
-  \iffloat\Xthisreftitle
-    % If the user specified the print name (third arg) to the ref,
-    % print it instead of our usual "Figure 1.2".
-    \ifdim\wd\printedrefnamebox = 0pt
-      \refx{#1-snt}{}%
-    \else
-      \printedrefname
-    \fi
-    %
-    % If the user also gave the printed manual name (fifth arg), append
-    % "in MANUALNAME".
-    \ifdim \wd\printedmanualbox > 0pt
-      \space \putwordin{} \cite{\printedmanual}%
-    \fi
-  \else
-    % node/anchor (non-float) references.
-    % 
-    % If we use \unhbox to print the node names, TeX does not insert
-    % empty discretionaries after hyphens, which means that it will not
-    % find a line break at a hyphen in a node names.  Since some manuals
-    % are best written with fairly long node names, containing hyphens,
-    % this is a loss.  Therefore, we give the text of the node name
-    % again, so it is as if TeX is seeing it for the first time.
-    % 
-    \ifdim \wd\printedmanualbox > 0pt
-      % Cross-manual reference with a printed manual name.
-      % 
-      \crossmanualxref{\cite{\printedmanual\unskip}}%
-    %
-    \else\ifdim \wd\infofilenamebox > 0pt
-      % Cross-manual reference with only an info filename (arg 4), no
-      % printed manual name (arg 5).  This is essentially the same as
-      % the case above; we output the filename, since we have nothing else.
-      % 
-      \crossmanualxref{\code{\infofilename\unskip}}%
-    %
-    \else
-      % Reference within this manual.
-      %
-      % _ (for example) has to be the character _ for the purposes of the
-      % control sequence corresponding to the node, but it has to expand
-      % into the usual \leavevmode...\vrule stuff for purposes of
-      % printing. So we \turnoffactive for the \refx-snt, back on for the
-      % printing, back off for the \refx-pg.
-      {\turnoffactive
-       % Only output a following space if the -snt ref is nonempty; for
-       % @unnumbered and @anchor, it won't be.
-       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
-       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
-      }%
-      % output the `[mynode]' via the macro below so it can be overridden.
-      \xrefprintnodename\printedrefname
-      %
-      % But we always want a comma and a space:
-      ,\space
-      %
-      % output the `page 3'.
-      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi\fi
-  \fi
-  \endlink
-\endgroup}
-
-% Output a cross-manual xref to #1.  Used just above (twice).
-% 
-% Only include the text "Section ``foo'' in" if the foo is neither
-% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
-% "see The Foo Manual", the idea being to refer to the whole manual.
-% 
-% But, this being TeX, we can't easily compare our node name against the
-% string "Top" while ignoring the possible spaces before and after in
-% the input.  By adding the arbitrary 7sp below, we make it much less
-% likely that a real node name would have the same width as "Top" (e.g.,
-% in a monospaced font).  Hopefully it will never happen in practice.
-% 
-% For the same basic reason, we retypeset the "Top" at every
-% reference, since the current font is indeterminate.
-% 
-\def\crossmanualxref#1{%
-  \setbox\toprefbox = \hbox{Top\kern7sp}%
-  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
-  \ifdim \wd2 > 7sp  % nonempty?
-    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
-      \putwordSection{} ``\printedrefname'' \putwordin{}\space
-    \fi
-  \fi
-  #1%
-}
-
-% This macro is called from \xrefX for the `[nodename]' part of xref
-% output.  It's a separate macro only so it can be changed more easily,
-% since square brackets don't work well in some documents.  Particularly
-% one that Bob is working on :).
-%
-\def\xrefprintnodename#1{[#1]}
-
-% Things referred to by \setref.
-%
-\def\Ynothing{}
-\def\Yomitfromtoc{}
-\def\Ynumbered{%
-  \ifnum\secno=0
-    \putwordChapter@tie \the\chapno
-  \else \ifnum\subsecno=0
-    \putwordSection@tie \the\chapno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-\def\Yappendix{%
-  \ifnum\secno=0
-     \putwordAppendix@tie @char\the\appendixno{}%
-  \else \ifnum\subsecno=0
-     \putwordSection@tie @char\the\appendixno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie
-      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
-  {%
-    \indexnofonts
-    \otherbackslash
-    \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname XR#1\endcsname
-  }%
-  \ifx\thisrefX\relax
-    % If not defined, say something at least.
-    \angleleft un\-de\-fined\angleright
-    \iflinks
-      \ifhavexrefs
-        {\toks0 = {#1}% avoid expansion of possibly-complex value
-         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
-      \else
-        \ifwarnedxrefs\else
-          \global\warnedxrefstrue
-          \message{Cross reference values unknown; you must run TeX again.}%
-        \fi
-      \fi
-    \fi
-  \else
-    % It's defined, so just use it.
-    \thisrefX
-  \fi
-  #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.  Usually it's
-% just a \def (we prepend XR to the control sequence name to avoid
-% collisions).  But if this is a float type, we have more work to do.
-%
-\def\xrdef#1#2{%
-  {% The node name might contain 8-bit characters, which in our current
-   % implementation are changed to commands like @'e.  Don't let these
-   % mess up the control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safexrefname{#1}%
-  }%
-  %
-  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
-  %
-  % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR\safexrefname\endcsname
-    % it was a float, and we have the (safe) float type in \iffloattype.
-    \expandafter\let\expandafter\floatlist
-      \csname floatlist\iffloattype\endcsname
-    %
-    % Is this the first time we've seen this float type?
-    \expandafter\ifx\floatlist\relax
-      \toks0 = {\do}% yes, so just \do
-    \else
-      % had it before, so preserve previous elements in list.
-      \toks0 = \expandafter{\floatlist\do}%
-    \fi
-    %
-    % Remember this xref in the control sequence \floatlistFLOATTYPE,
-    % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
-      {\safexrefname}}%
-  \fi
-}
-
-% Read the last existing aux file, if any.  No error if none exists.
-%
-\def\tryauxfile{%
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \readdatafile{aux}%
-    \global\havexrefstrue
-  \fi
-  \closein 1
-}
-
-\def\setupdatafile{%
-  \catcode`\^^@=\other
-  \catcode`\^^A=\other
-  \catcode`\^^B=\other
-  \catcode`\^^C=\other
-  \catcode`\^^D=\other
-  \catcode`\^^E=\other
-  \catcode`\^^F=\other
-  \catcode`\^^G=\other
-  \catcode`\^^H=\other
-  \catcode`\^^K=\other
-  \catcode`\^^L=\other
-  \catcode`\^^N=\other
-  \catcode`\^^P=\other
-  \catcode`\^^Q=\other
-  \catcode`\^^R=\other
-  \catcode`\^^S=\other
-  \catcode`\^^T=\other
-  \catcode`\^^U=\other
-  \catcode`\^^V=\other
-  \catcode`\^^W=\other
-  \catcode`\^^X=\other
-  \catcode`\^^Z=\other
-  \catcode`\^^[=\other
-  \catcode`\^^\=\other
-  \catcode`\^^]=\other
-  \catcode`\^^^=\other
-  \catcode`\^^_=\other
-  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
-  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
-  % supported in the main text, it doesn't seem desirable.  Furthermore,
-  % that is not enough: for node names that actually contain a ^
-  % character, we would end up writing a line like this: 'xrdef {'hat
-  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
-  % argument, and \hat is not an expandable control sequence.  It could
-  % all be worked out, but why?  Either we support ^^ or we don't.
-  %
-  % The other change necessary for this was to define \auxhat:
-  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
-  % and then to call \auxhat in \setq.
-  %
-  \catcode`\^=\other
-  %
-  % Special characters.  Should be turned off anyway, but...
-  \catcode`\~=\other
-  \catcode`\[=\other
-  \catcode`\]=\other
-  \catcode`\"=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\$=\other
-  \catcode`\#=\other
-  \catcode`\&=\other
-  \catcode`\%=\other
-  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
-  %
-  % This is to support \ in node names and titles, since the \
-  % characters end up in a \csname.  It's easier than
-  % leaving it active and making its active definition an actual \
-  % character.  What I don't understand is why it works in the *value*
-  % of the xrdef.  Seems like it should be a catcode12 \, and that
-  % should not typeset properly.  But it works, so I'm moving on for
-  % now.  --karl, 15jan04.
-  \catcode`\\=\other
-  %
-  % Make the characters 128-255 be printing characters.
-  {%
-    \count1=128
-    \def\loop{%
-      \catcode\count1=\other
-      \advance\count1 by 1
-      \ifnum \count1<256 \loop \fi
-    }%
-  }%
-  %
-  % @ is our escape character in .aux files, and we need braces.
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\@=0
-}
-
-\def\readdatafile#1{%
-\begingroup
-  \setupdatafile
-  \input\jobname.#1
-\endgroup}
-
-
-\message{insertions,}
-% including footnotes.
-
-\newcount \footnoteno
-
-% 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. (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.
-\let\footnotestyle=\comment
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \global\advance\footnoteno by \@ne
-  \edef\thisfootno{$^{\the\footnoteno}$}%
-  %
-  % In case the footnote comes at the end of a sentence, preserve the
-  % extra spacing after we do the footnote number.
-  \let\@sf\empty
-  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
-  %
-  % Remove inadvertent blank space before typesetting the footnote number.
-  \unskip
-  \thisfootno\@sf
-  \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter.  Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset (and anything else that uses
-% \parseargline) fails inside footnotes because the tokens are fixed when
-% the footnote is read.  --karl, 16nov96.
-%
-\gdef\dofootnote{%
-  \insert\footins\bgroup
-  % We want to typeset this text as a normal paragraph, even if the
-  % footnote reference occurs in (for example) a display environment.
-  % So reset some parameters.
-  \hsize=\pagewidth
-  \interlinepenalty\interfootnotelinepenalty
-  \splittopskip\ht\strutbox % top baseline for broken footnotes
-  \splitmaxdepth\dp\strutbox
-  \floatingpenalty\@MM
-  \leftskip\z@skip
-  \rightskip\z@skip
-  \spaceskip\z@skip
-  \xspaceskip\z@skip
-  \parindent\defaultparindent
-  %
-  \smallfonts \rm
-  %
-  % Because we use hanging indentation in footnotes, a @noindent appears
-  % to exdent this text, so make it be a no-op.  makeinfo does not use
-  % hanging indentation so @noindent can still be needed within footnote
-  % text after an @example or the like (not that this is good style).
-  \let\noindent = \relax
-  %
-  % Hang the footnote text off the number.  Use \everypar in case the
-  % footnote extends for more than one paragraph.
-  \everypar = {\hang}%
-  \textindent{\thisfootno}%
-  %
-  % Don't crash into the line above the footnote text.  Since this
-  % expands into a box, it must come within the paragraph, lest it
-  % provide a place where TeX can split the footnote.
-  \footstrut
-  %
-  % Invoke rest of plain TeX footnote routine.
-  \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% In case a @footnote appears in a vbox, save the footnote text and create
-% the real \insert just after the vbox finished.  Otherwise, the insertion
-% would be lost.
-% Similarly, if a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is finished.
-% And the same can be done for other insert classes.  --kasal, 16nov03.
-
-% Replace the \insert primitive by a cheating macro.
-% Deeper inside, just make sure that the saved insertions are not spilled
-% out prematurely.
-%
-\def\startsavinginserts{%
-  \ifx \insert\ptexinsert
-    \let\insert\saveinsert
-  \else
-    \let\checkinserts\relax
-  \fi
-}
-
-% This \insert replacement works for both \insert\footins{foo} and
-% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
-%
-\def\saveinsert#1{%
-  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
-  \afterassignment\next
-  % swallow the left brace
-  \let\temp =
-}
-\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
-\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
-
-\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
-
-\def\placesaveins#1{%
-  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
-    {\box#1}%
-}
-
-% eat @SAVE -- beware, all of them have catcode \other:
-{
-  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
-  \gdef\gobblesave @SAVE{}
-}
-
-% initialization:
-\def\newsaveins #1{%
-  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
-  \next
-}
-\def\newsaveinsX #1{%
-  \csname newbox\endcsname #1%
-  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
-    \checksaveins #1}%
-}
-
-% initialize:
-\let\checkinserts\empty
-\newsaveins\footins
-\newsaveins\margin
-
-
-% @image.  We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front.  If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
-  % Do not bother showing banner with epsf.tex v2.7k (available in
-  % doc/epsf.tex and on ctan).
-  \def\epsfannounce{\toks0 = }%
-  \input epsf.tex
-\fi
-\closein 1
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
-  work.  It is also included in the Texinfo distribution, or you can get
-  it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
-  \ifx\epsfbox\thisisundefined
-    \ifwarnednoepsf \else
-      \errhelp = \noepsfhelp
-      \errmessage{epsf.tex not found, images will be ignored}%
-      \global\warnednoepsftrue
-    \fi
-  \else
-    \imagexxx #1,,,,,\finish
-  \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
-  \catcode`\^^M = 5     % in case we're inside an example
-  \normalturnoffactive  % allow _ et al. in names
-  % If the image is by itself, center it.
-  \ifvmode
-    \imagevmodetrue
-  \else \ifx\centersub\centerV
-    % for @center @image, we need a vbox so we can have our vertical space
-    \imagevmodetrue
-    \vbox\bgroup % vbox has better behavior than vtop herev
-  \fi\fi
-  %
-  \ifimagevmode
-    \nobreak\medskip
-    % Usually we'll have text after the image which will insert
-    % \parskip glue, so insert it here too to equalize the space
-    % above and below.
-    \nobreak\vskip\parskip
-    \nobreak
-  \fi
-  %
-  % Leave vertical mode so that indentation from an enclosing
-  %  environment such as @quotation is respected.
-  % However, if we're at the top level, we don't want the
-  %  normal paragraph indentation.
-  % On the other hand, if we are in the case of @center @image, we don't
-  %  want to start a paragraph, which will create a hsize-width box and
-  %  eradicate the centering.
-  \ifx\centersub\centerV\else \noindent \fi
-  %
-  % Output the image.
-  \ifpdf
-    \dopdfimage{#1}{#2}{#3}%
-  \else
-    % \epsfbox itself resets \epsf?size at each figure.
-    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
-    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
-    \epsfbox{#1.eps}%
-  \fi
-  %
-  \ifimagevmode
-    \medskip  % space after a standalone image
-  \fi  
-  \ifx\centersub\centerV \egroup \fi
-\endgroup}
-
-
-% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
-% etc.  We don't actually implement floating yet, we always include the
-% float "here".  But it seemed the best name for the future.
-%
-\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
-
-% There may be a space before second and/or third parameter; delete it.
-\def\eatcommaspace#1, {#1,}
-
-% #1 is the optional FLOATTYPE, the text label for this float, typically
-% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
-% this float will not be numbered and cannot be referred to.
-%
-% #2 is the optional xref label.  Also must be present for the float to
-% be referable.
-%
-% #3 is the optional positioning argument; for now, it is ignored.  It
-% will somehow specify the positions allowed to float to (here, top, bottom).
-%
-% We keep a separate counter for each FLOATTYPE, which we reset at each
-% chapter-level command.
-\let\resetallfloatnos=\empty
-%
-\def\dofloat#1,#2,#3,#4\finish{%
-  \let\thiscaption=\empty
-  \let\thisshortcaption=\empty
-  %
-  % don't lose footnotes inside @float.
-  %
-  % BEWARE: when the floats start float, we have to issue warning whenever an
-  % insert appears inside a float which could possibly float. --kasal, 26may04
-  %
-  \startsavinginserts
-  %
-  % We can't be used inside a paragraph.
-  \par
-  %
-  \vtop\bgroup
-    \def\floattype{#1}%
-    \def\floatlabel{#2}%
-    \def\floatloc{#3}% we do nothing with this yet.
-    %
-    \ifx\floattype\empty
-      \let\safefloattype=\empty
-    \else
-      {%
-        % the floattype might have accents or other special characters,
-        % but we need to use it in a control sequence name.
-        \indexnofonts
-        \turnoffactive
-        \xdef\safefloattype{\floattype}%
-      }%
-    \fi
-    %
-    % If label is given but no type, we handle that as the empty type.
-    \ifx\floatlabel\empty \else
-      % We want each FLOATTYPE to be numbered separately (Figure 1,
-      % Table 1, Figure 2, ...).  (And if no label, no number.)
-      %
-      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
-      \global\advance\floatno by 1
-      %
-      {%
-        % This magic value for \lastsection is output by \setref as the
-        % XREFLABEL-title value.  \xrefX uses it to distinguish float
-        % labels (which have a completely different output format) from
-        % node and anchor labels.  And \xrdef uses it to construct the
-        % lists of floats.
-        %
-        \edef\lastsection{\floatmagic=\safefloattype}%
-        \setref{\floatlabel}{Yfloat}%
-      }%
-    \fi
-    %
-    % start with \parskip glue, I guess.
-    \vskip\parskip
-    %
-    % Don't suppress indentation if a float happens to start a section.
-    \restorefirstparagraphindent
-}
-
-% we have these possibilities:
-% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
-% @float Foo,lbl & no caption:    Foo 1.1
-% @float Foo & @caption{Cap}:     Foo: Cap
-% @float Foo & no caption:        Foo
-% @float ,lbl & Caption{Cap}:     1.1: Cap
-% @float ,lbl & no caption:       1.1
-% @float & @caption{Cap}:         Cap
-% @float & no caption:
-%
-\def\Efloat{%
-    \let\floatident = \empty
-    %
-    % In all cases, if we have a float type, it comes first.
-    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
-    %
-    % If we have an xref label, the number comes next.
-    \ifx\floatlabel\empty \else
-      \ifx\floattype\empty \else % if also had float type, need tie first.
-        \appendtomacro\floatident{\tie}%
-      \fi
-      % the number.
-      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
-    \fi
-    %
-    % Start the printed caption with what we've constructed in
-    % \floatident, but keep it separate; we need \floatident again.
-    \let\captionline = \floatident
-    %
-    \ifx\thiscaption\empty \else
-      \ifx\floatident\empty \else
-       \appendtomacro\captionline{: }% had ident, so need a colon between
-      \fi
-      %
-      % caption text.
-      \appendtomacro\captionline{\scanexp\thiscaption}%
-    \fi
-    %
-    % If we have anything to print, print it, with space before.
-    % Eventually this needs to become an \insert.
-    \ifx\captionline\empty \else
-      \vskip.5\parskip
-      \captionline
-      %
-      % Space below caption.
-      \vskip\parskip
-    \fi
-    %
-    % If have an xref label, write the list of floats info.  Do this
-    % after the caption, to avoid chance of it being a breakpoint.
-    \ifx\floatlabel\empty \else
-      % Write the text that goes in the lof to the aux file as
-      % \floatlabel-lof.  Besides \floatident, we include the short
-      % caption if specified, else the full caption if specified, else nothing.
-      {%
-        \atdummies
-        %
-        % since we read the caption text in the macro world, where ^^M
-        % is turned into a normal character, we have to scan it back, so
-        % we don't write the literal three characters "^^M" into the aux file.
-       \scanexp{%
-         \xdef\noexpand\gtemp{%
-           \ifx\thisshortcaption\empty
-             \thiscaption
-           \else
-             \thisshortcaption
-           \fi
-         }%
-       }%
-        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
-         \ifx\gtemp\empty \else : \gtemp \fi}}%
-      }%
-    \fi
-  \egroup  % end of \vtop
-  %
-  % place the captured inserts
-  %
-  % BEWARE: when the floats start floating, we have to issue warning
-  % whenever an insert appears inside a float which could possibly
-  % float. --kasal, 26may04
-  %
-  \checkinserts
-}
-
-% Append the tokens #2 to the definition of macro #1, not expanding either.
-%
-\def\appendtomacro#1#2{%
-  \expandafter\def\expandafter#1\expandafter{#1#2}%
-}
-
-% @caption, @shortcaption
-%
-\def\caption{\docaption\thiscaption}
-\def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
-
-% The parameter is the control sequence identifying the counter we are
-% going to use.  Create it if it doesn't exist and assign it to \floatno.
-\def\getfloatno#1{%
-  \ifx#1\relax
-      % Haven't seen this figure type before.
-      \csname newcount\endcsname #1%
-      %
-      % Remember to reset this floatno at the next chap.
-      \expandafter\gdef\expandafter\resetallfloatnos
-        \expandafter{\resetallfloatnos #1=0 }%
-  \fi
-  \let\floatno#1%
-}
-
-% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
-% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
-% first read the @float command.
-%
-\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
-
-% Magic string used for the XREFLABEL-title value, so \xrefX can
-% distinguish floats from other xref types.
-\def\floatmagic{!!float!!}
-
-% #1 is the control sequence we are passed; we expand into a conditional
-% which is true if #1 represents a float ref.  That is, the magic
-% \lastsection value which we \setref above.
-%
-\def\iffloat#1{\expandafter\doiffloat#1==\finish}
-%
-% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
-% (safe) float type for this float.  We set \iffloattype to #2.
-%
-\def\doiffloat#1=#2=#3\finish{%
-  \def\temp{#1}%
-  \def\iffloattype{#2}%
-  \ifx\temp\floatmagic
-}
-
-% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-%
-\parseargdef\listoffloats{%
-  \def\floattype{#1}% floattype
-  {%
-    % the floattype might have accents or other special characters,
-    % but we need to use it in a control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safefloattype{\floattype}%
-  }%
-  %
-  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
-  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
-    \ifhavexrefs
-      % if the user said @listoffloats foo but never @float foo.
-      \message{\linenumber No `\safefloattype' floats to list.}%
-    \fi
-  \else
-    \begingroup
-      \leftskip=\tocindent  % indent these entries like a toc
-      \let\do=\listoffloatsdo
-      \csname floatlist\safefloattype\endcsname
-    \endgroup
-  \fi
-}
-
-% This is called on each entry in a list of floats.  We're passed the
-% xref label, in the form LABEL-title, which is how we save it in the
-% aux file.  We strip off the -title and look up \XRLABEL-lof, which
-% has the text we're supposed to typeset here.
-%
-% Figures without xref labels will not be included in the list (since
-% they won't appear in the aux file).
-%
-\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
-\def\listoffloatsdoentry#1-title\finish{{%
-  % Can't fully expand XR#1-lof because it can contain anything.  Just
-  % pass the control sequence.  On the other hand, XR#1-pg is just the
-  % page number, and we want to fully expand that so we can get a link
-  % in pdf output.
-  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
-  %
-  % use the same \entry macro we use to generate the TOC and index.
-  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
-  \writeentry
-}}
-
-
-\message{localization,}
-
-% For single-language documents, @documentlanguage is usually given very
-% early, just after @documentencoding.  Single argument is the language
-% (de) or locale (de_DE) abbreviation.
-%
-{
-  \catcode`\_ = \active
-  \globaldefs=1
-\parseargdef\documentlanguage{\begingroup
-  \let_=\normalunderscore  % normal _ character for filenames
-  \tex % read txi-??.tex file in plain TeX.
-    % Read the file by the name they passed if it exists.
-    \openin 1 txi-#1.tex
-    \ifeof 1
-      \documentlanguagetrywithoutunderscore{#1_\finish}%
-    \else
-      \globaldefs = 1  % everything in the txi-LL files needs to persist
-      \input txi-#1.tex
-    \fi
-    \closein 1
-  \endgroup % end raw TeX
-\endgroup}
-%
-% If they passed de_DE, and txi-de_DE.tex doesn't exist,
-% try txi-de.tex.
-%
-\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
-  \openin 1 txi-#1.tex
-  \ifeof 1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-  \else
-    \globaldefs = 1  % everything in the txi-LL files needs to persist
-    \input txi-#1.tex
-  \fi
-  \closein 1
-}
-}% end of special _ catcode
-%
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  Putting it in the current
-directory should work if nowhere else does.}
-
-% This macro is called from txi-??.tex files; the first argument is the
-% \language name to set (without the "\lang@" prefix), the second and
-% third args are \{left,right}hyphenmin.
-%
-% The language names to pass are determined when the format is built.
-% See the etex.log file created at that time, e.g.,
-% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
-%
-% With TeX Live 2008, etex now includes hyphenation patterns for all
-% available languages.  This means we can support hyphenation in
-% Texinfo, at least to some extent.  (This still doesn't solve the
-% accented characters problem.)
-%
-\catcode`@=11
-\def\txisetlanguage#1#2#3{%
-  % do not set the language if the name is undefined in the current TeX.
-  \expandafter\ifx\csname lang@#1\endcsname \relax
-    \message{no patterns for #1}%
-  \else
-    \global\language = \csname lang@#1\endcsname
-  \fi
-  % but there is no harm in adjusting the hyphenmin values regardless.
-  \global\lefthyphenmin = #2\relax
-  \global\righthyphenmin = #3\relax
-}
-
-% Helpers for encodings.
-% Set the catcode of characters 128 through 255 to the specified number.
-%
-\def\setnonasciicharscatcode#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \global\catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-\def\setnonasciicharscatcodenonglobal#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-% @documentencoding sets the definition of non-ASCII characters
-% according to the specified encoding.
-%
-\parseargdef\documentencoding{%
-  % Encoding being declared for the document.
-  \def\declaredencoding{\csname #1.enc\endcsname}%
-  %
-  % Supported encodings: names converted to tokens in order to be able
-  % to compare them with \ifx.
-  \def\ascii{\csname US-ASCII.enc\endcsname}%
-  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
-  \def\latone{\csname ISO-8859-1.enc\endcsname}%
-  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
-  \def\utfeight{\csname UTF-8.enc\endcsname}%
-  %
-  \ifx \declaredencoding \ascii
-     \asciichardefs
-  %
-  \else \ifx \declaredencoding \lattwo
-     \setnonasciicharscatcode\active
-     \lattwochardefs
-  %
-  \else \ifx \declaredencoding \latone
-     \setnonasciicharscatcode\active
-     \latonechardefs
-  %
-  \else \ifx \declaredencoding \latnine
-     \setnonasciicharscatcode\active
-     \latninechardefs
-  %
-  \else \ifx \declaredencoding \utfeight
-     \setnonasciicharscatcode\active
-     \utfeightchardefs
-  %
-  \else
-    \message{Unknown document encoding #1, ignoring.}%
-  %
-  \fi % utfeight
-  \fi % latnine
-  \fi % latone
-  \fi % lattwo
-  \fi % ascii
-}
-
-% A message to be logged when using a character that isn't available
-% the default font encoding (OT1).
-%
-\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
-
-% Take account of \c (plain) vs. \, (Texinfo) difference.
-\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
-
-% First, make active non-ASCII characters in order for them to be
-% correctly categorized when TeX reads the replacement text of
-% macros containing the character definitions.
-\setnonasciicharscatcode\active
-%
-% Latin1 (ISO-8859-1) character definitions.
-\def\latonechardefs{%
-  \gdef^^a0{\tie}
-  \gdef^^a1{\exclamdown}
-  \gdef^^a2{\missingcharmsg{CENT SIGN}}
-  \gdef^^a3{{\pounds}}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\missingcharmsg{YEN SIGN}}
-  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}}
-  \gdef^^a9{\copyright}
-  \gdef^^aa{\ordf}
-  \gdef^^ab{\guillemetleft}
-  \gdef^^ac{$\lnot$}
-  \gdef^^ad{\-}
-  \gdef^^ae{\registeredsymbol}
-  \gdef^^af{\={}}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{$\pm$}
-  \gdef^^b2{$^2$}
-  \gdef^^b3{$^3$}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{$\mu$}
-  \gdef^^b6{\P}
-  %
-  \gdef^^b7{$^.$}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{$^1$}
-  \gdef^^ba{\ordm}
-  %
-  \gdef^^bb{\guillemetright}
-  \gdef^^bc{$1\over4$}
-  \gdef^^bd{$1\over2$}
-  \gdef^^be{$3\over4$}
-  \gdef^^bf{\questiondown}
-  %
-  \gdef^^c0{\`A}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\~A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\ringaccent A}
-  \gdef^^c6{\AE}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\`E}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\^E}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\`I}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\"I}
-  %
-  \gdef^^d0{\DH}
-  \gdef^^d1{\~N}
-  \gdef^^d2{\`O}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\~O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\O}
-  \gdef^^d9{\`U}
-  \gdef^^da{\'U}
-  \gdef^^db{\^U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\TH}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\`a}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\~a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\ringaccent a}
-  \gdef^^e6{\ae}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\`e}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\^e}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\`{\dotless i}}
-  \gdef^^ed{\'{\dotless i}}
-  \gdef^^ee{\^{\dotless i}}
-  \gdef^^ef{\"{\dotless i}}
-  %
-  \gdef^^f0{\dh}
-  \gdef^^f1{\~n}
-  \gdef^^f2{\`o}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\~o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\o}
-  \gdef^^f9{\`u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\^u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\th}
-  \gdef^^ff{\"y}
-}
-
-% Latin9 (ISO-8859-15) encoding character definitions.
-\def\latninechardefs{%
-  % Encoding is almost identical to Latin1.
-  \latonechardefs
-  %
-  \gdef^^a4{\euro}
-  \gdef^^a6{\v S}
-  \gdef^^a8{\v s}
-  \gdef^^b4{\v Z}
-  \gdef^^b8{\v z}
-  \gdef^^bc{\OE}
-  \gdef^^bd{\oe}
-  \gdef^^be{\"Y}
-}
-
-% Latin2 (ISO-8859-2) character definitions.
-\def\lattwochardefs{%
-  \gdef^^a0{\tie}
-  \gdef^^a1{\ogonek{A}}
-  \gdef^^a2{\u{}}
-  \gdef^^a3{\L}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\v L}
-  \gdef^^a6{\'S}
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}}
-  \gdef^^a9{\v S}
-  \gdef^^aa{\cedilla S}
-  \gdef^^ab{\v T}
-  \gdef^^ac{\'Z}
-  \gdef^^ad{\-}
-  \gdef^^ae{\v Z}
-  \gdef^^af{\dotaccent Z}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{\ogonek{a}}
-  \gdef^^b2{\ogonek{ }}
-  \gdef^^b3{\l}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{\v l}
-  \gdef^^b6{\'s}
-  \gdef^^b7{\v{}}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{\v s}
-  \gdef^^ba{\cedilla s}
-  \gdef^^bb{\v t}
-  \gdef^^bc{\'z}
-  \gdef^^bd{\H{}}
-  \gdef^^be{\v z}
-  \gdef^^bf{\dotaccent z}
-  %
-  \gdef^^c0{\'R}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\u A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\'L}
-  \gdef^^c6{\'C}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\v C}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\ogonek{E}}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\v E}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\v D}
-  %
-  \gdef^^d0{\DH}
-  \gdef^^d1{\'N}
-  \gdef^^d2{\v N}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\H O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\v R}
-  \gdef^^d9{\ringaccent U}
-  \gdef^^da{\'U}
-  \gdef^^db{\H U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\cedilla T}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\'r}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\u a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\'l}
-  \gdef^^e6{\'c}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\v c}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\ogonek{e}}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\v e}
-  \gdef^^ed{\'{\dotless{i}}}
-  \gdef^^ee{\^{\dotless{i}}}
-  \gdef^^ef{\v d}
-  %
-  \gdef^^f0{\dh}
-  \gdef^^f1{\'n}
-  \gdef^^f2{\v n}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\H o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\v r}
-  \gdef^^f9{\ringaccent u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\H u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\cedilla t}
-  \gdef^^ff{\dotaccent{}}
-}
-
-% UTF-8 character definitions.
-%
-% This code to support UTF-8 is based on LaTeX's utf8.def, with some
-% changes for Texinfo conventions.  It is included here under the GPL by
-% permission from Frank Mittelbach and the LaTeX team.
-%
-\newcount\countUTFx
-\newcount\countUTFy
-\newcount\countUTFz
-
-\gdef\UTFviiiTwoOctets#1#2{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
-%
-\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
-%
-\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
-
-\gdef\UTFviiiDefined#1{%
-  \ifx #1\relax
-    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
-  \else
-    \expandafter #1%
-  \fi
-}
-
-\begingroup
-  \catcode`\~13
-  \catcode`\"12
-
-  \def\UTFviiiLoop{%
-    \global\catcode\countUTFx\active
-    \uccode`\~\countUTFx
-    \uppercase\expandafter{\UTFviiiTmp}%
-    \advance\countUTFx by 1
-    \ifnum\countUTFx < \countUTFy
-      \expandafter\UTFviiiLoop
-    \fi}
-
-  \countUTFx = "C2
-  \countUTFy = "E0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "E0
-  \countUTFy = "F0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "F0
-  \countUTFy = "F4
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
-  \UTFviiiLoop
-\endgroup
-
-\begingroup
-  \catcode`\"=12
-  \catcode`\<=12
-  \catcode`\.=12
-  \catcode`\,=12
-  \catcode`\;=12
-  \catcode`\!=12
-  \catcode`\~=13
-
-  \gdef\DeclareUnicodeCharacter#1#2{%
-    \countUTFz = "#1\relax
-    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
-    \begingroup
-      \parseXMLCharref
-      \def\UTFviiiTwoOctets##1##2{%
-        \csname u8:##1\string ##2\endcsname}%
-      \def\UTFviiiThreeOctets##1##2##3{%
-        \csname u8:##1\string ##2\string ##3\endcsname}%
-      \def\UTFviiiFourOctets##1##2##3##4{%
-        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
-      \expandafter\expandafter\expandafter\expandafter
-       \expandafter\expandafter\expandafter
-       \gdef\UTFviiiTmp{#2}%
-    \endgroup}
-
-  \gdef\parseXMLCharref{%
-    \ifnum\countUTFz < "A0\relax
-      \errhelp = \EMsimple
-      \errmessage{Cannot define Unicode char value < 00A0}%
-    \else\ifnum\countUTFz < "800\relax
-      \parseUTFviiiA,%
-      \parseUTFviiiB C\UTFviiiTwoOctets.,%
-    \else\ifnum\countUTFz < "10000\relax
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
-    \else
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiA!%
-      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
-    \fi\fi\fi
-  }
-
-  \gdef\parseUTFviiiA#1{%
-    \countUTFx = \countUTFz
-    \divide\countUTFz by 64
-    \countUTFy = \countUTFz
-    \multiply\countUTFz by 64
-    \advance\countUTFx by -\countUTFz
-    \advance\countUTFx by 128
-    \uccode `#1\countUTFx
-    \countUTFz = \countUTFy}
-
-  \gdef\parseUTFviiiB#1#2#3#4{%
-    \advance\countUTFz by "#10\relax
-    \uccode `#3\countUTFz
-    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-\endgroup
-
-\def\utfeightchardefs{%
-  \DeclareUnicodeCharacter{00A0}{\tie}
-  \DeclareUnicodeCharacter{00A1}{\exclamdown}
-  \DeclareUnicodeCharacter{00A3}{\pounds}
-  \DeclareUnicodeCharacter{00A8}{\"{ }}
-  \DeclareUnicodeCharacter{00A9}{\copyright}
-  \DeclareUnicodeCharacter{00AA}{\ordf}
-  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
-  \DeclareUnicodeCharacter{00AD}{\-}
-  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
-  \DeclareUnicodeCharacter{00AF}{\={ }}
-
-  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
-  \DeclareUnicodeCharacter{00B4}{\'{ }}
-  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
-  \DeclareUnicodeCharacter{00BA}{\ordm}
-  \DeclareUnicodeCharacter{00BB}{\guillemetright}
-  \DeclareUnicodeCharacter{00BF}{\questiondown}
-
-  \DeclareUnicodeCharacter{00C0}{\`A}
-  \DeclareUnicodeCharacter{00C1}{\'A}
-  \DeclareUnicodeCharacter{00C2}{\^A}
-  \DeclareUnicodeCharacter{00C3}{\~A}
-  \DeclareUnicodeCharacter{00C4}{\"A}
-  \DeclareUnicodeCharacter{00C5}{\AA}
-  \DeclareUnicodeCharacter{00C6}{\AE}
-  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
-  \DeclareUnicodeCharacter{00C8}{\`E}
-  \DeclareUnicodeCharacter{00C9}{\'E}
-  \DeclareUnicodeCharacter{00CA}{\^E}
-  \DeclareUnicodeCharacter{00CB}{\"E}
-  \DeclareUnicodeCharacter{00CC}{\`I}
-  \DeclareUnicodeCharacter{00CD}{\'I}
-  \DeclareUnicodeCharacter{00CE}{\^I}
-  \DeclareUnicodeCharacter{00CF}{\"I}
-
-  \DeclareUnicodeCharacter{00D0}{\DH}
-  \DeclareUnicodeCharacter{00D1}{\~N}
-  \DeclareUnicodeCharacter{00D2}{\`O}
-  \DeclareUnicodeCharacter{00D3}{\'O}
-  \DeclareUnicodeCharacter{00D4}{\^O}
-  \DeclareUnicodeCharacter{00D5}{\~O}
-  \DeclareUnicodeCharacter{00D6}{\"O}
-  \DeclareUnicodeCharacter{00D8}{\O}
-  \DeclareUnicodeCharacter{00D9}{\`U}
-  \DeclareUnicodeCharacter{00DA}{\'U}
-  \DeclareUnicodeCharacter{00DB}{\^U}
-  \DeclareUnicodeCharacter{00DC}{\"U}
-  \DeclareUnicodeCharacter{00DD}{\'Y}
-  \DeclareUnicodeCharacter{00DE}{\TH}
-  \DeclareUnicodeCharacter{00DF}{\ss}
-
-  \DeclareUnicodeCharacter{00E0}{\`a}
-  \DeclareUnicodeCharacter{00E1}{\'a}
-  \DeclareUnicodeCharacter{00E2}{\^a}
-  \DeclareUnicodeCharacter{00E3}{\~a}
-  \DeclareUnicodeCharacter{00E4}{\"a}
-  \DeclareUnicodeCharacter{00E5}{\aa}
-  \DeclareUnicodeCharacter{00E6}{\ae}
-  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
-  \DeclareUnicodeCharacter{00E8}{\`e}
-  \DeclareUnicodeCharacter{00E9}{\'e}
-  \DeclareUnicodeCharacter{00EA}{\^e}
-  \DeclareUnicodeCharacter{00EB}{\"e}
-  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
-  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{00F0}{\dh}
-  \DeclareUnicodeCharacter{00F1}{\~n}
-  \DeclareUnicodeCharacter{00F2}{\`o}
-  \DeclareUnicodeCharacter{00F3}{\'o}
-  \DeclareUnicodeCharacter{00F4}{\^o}
-  \DeclareUnicodeCharacter{00F5}{\~o}
-  \DeclareUnicodeCharacter{00F6}{\"o}
-  \DeclareUnicodeCharacter{00F8}{\o}
-  \DeclareUnicodeCharacter{00F9}{\`u}
-  \DeclareUnicodeCharacter{00FA}{\'u}
-  \DeclareUnicodeCharacter{00FB}{\^u}
-  \DeclareUnicodeCharacter{00FC}{\"u}
-  \DeclareUnicodeCharacter{00FD}{\'y}
-  \DeclareUnicodeCharacter{00FE}{\th}
-  \DeclareUnicodeCharacter{00FF}{\"y}
-
-  \DeclareUnicodeCharacter{0100}{\=A}
-  \DeclareUnicodeCharacter{0101}{\=a}
-  \DeclareUnicodeCharacter{0102}{\u{A}}
-  \DeclareUnicodeCharacter{0103}{\u{a}}
-  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
-  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
-  \DeclareUnicodeCharacter{0106}{\'C}
-  \DeclareUnicodeCharacter{0107}{\'c}
-  \DeclareUnicodeCharacter{0108}{\^C}
-  \DeclareUnicodeCharacter{0109}{\^c}
-  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
-  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
-  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
-  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
-  \DeclareUnicodeCharacter{010C}{\v{C}}
-  \DeclareUnicodeCharacter{010D}{\v{c}}
-  \DeclareUnicodeCharacter{010E}{\v{D}}
-
-  \DeclareUnicodeCharacter{0112}{\=E}
-  \DeclareUnicodeCharacter{0113}{\=e}
-  \DeclareUnicodeCharacter{0114}{\u{E}}
-  \DeclareUnicodeCharacter{0115}{\u{e}}
-  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
-  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
-  \DeclareUnicodeCharacter{011A}{\v{E}}
-  \DeclareUnicodeCharacter{011B}{\v{e}}
-  \DeclareUnicodeCharacter{011C}{\^G}
-  \DeclareUnicodeCharacter{011D}{\^g}
-  \DeclareUnicodeCharacter{011E}{\u{G}}
-  \DeclareUnicodeCharacter{011F}{\u{g}}
-
-  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
-  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
-  \DeclareUnicodeCharacter{0124}{\^H}
-  \DeclareUnicodeCharacter{0125}{\^h}
-  \DeclareUnicodeCharacter{0128}{\~I}
-  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
-  \DeclareUnicodeCharacter{012A}{\=I}
-  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
-  \DeclareUnicodeCharacter{012C}{\u{I}}
-  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
-  \DeclareUnicodeCharacter{0131}{\dotless{i}}
-  \DeclareUnicodeCharacter{0132}{IJ}
-  \DeclareUnicodeCharacter{0133}{ij}
-  \DeclareUnicodeCharacter{0134}{\^J}
-  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
-  \DeclareUnicodeCharacter{0139}{\'L}
-  \DeclareUnicodeCharacter{013A}{\'l}
-
-  \DeclareUnicodeCharacter{0141}{\L}
-  \DeclareUnicodeCharacter{0142}{\l}
-  \DeclareUnicodeCharacter{0143}{\'N}
-  \DeclareUnicodeCharacter{0144}{\'n}
-  \DeclareUnicodeCharacter{0147}{\v{N}}
-  \DeclareUnicodeCharacter{0148}{\v{n}}
-  \DeclareUnicodeCharacter{014C}{\=O}
-  \DeclareUnicodeCharacter{014D}{\=o}
-  \DeclareUnicodeCharacter{014E}{\u{O}}
-  \DeclareUnicodeCharacter{014F}{\u{o}}
-
-  \DeclareUnicodeCharacter{0150}{\H{O}}
-  \DeclareUnicodeCharacter{0151}{\H{o}}
-  \DeclareUnicodeCharacter{0152}{\OE}
-  \DeclareUnicodeCharacter{0153}{\oe}
-  \DeclareUnicodeCharacter{0154}{\'R}
-  \DeclareUnicodeCharacter{0155}{\'r}
-  \DeclareUnicodeCharacter{0158}{\v{R}}
-  \DeclareUnicodeCharacter{0159}{\v{r}}
-  \DeclareUnicodeCharacter{015A}{\'S}
-  \DeclareUnicodeCharacter{015B}{\'s}
-  \DeclareUnicodeCharacter{015C}{\^S}
-  \DeclareUnicodeCharacter{015D}{\^s}
-  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
-  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
-
-  \DeclareUnicodeCharacter{0160}{\v{S}}
-  \DeclareUnicodeCharacter{0161}{\v{s}}
-  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
-  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
-  \DeclareUnicodeCharacter{0164}{\v{T}}
-
-  \DeclareUnicodeCharacter{0168}{\~U}
-  \DeclareUnicodeCharacter{0169}{\~u}
-  \DeclareUnicodeCharacter{016A}{\=U}
-  \DeclareUnicodeCharacter{016B}{\=u}
-  \DeclareUnicodeCharacter{016C}{\u{U}}
-  \DeclareUnicodeCharacter{016D}{\u{u}}
-  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
-  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
-
-  \DeclareUnicodeCharacter{0170}{\H{U}}
-  \DeclareUnicodeCharacter{0171}{\H{u}}
-  \DeclareUnicodeCharacter{0174}{\^W}
-  \DeclareUnicodeCharacter{0175}{\^w}
-  \DeclareUnicodeCharacter{0176}{\^Y}
-  \DeclareUnicodeCharacter{0177}{\^y}
-  \DeclareUnicodeCharacter{0178}{\"Y}
-  \DeclareUnicodeCharacter{0179}{\'Z}
-  \DeclareUnicodeCharacter{017A}{\'z}
-  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
-  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
-  \DeclareUnicodeCharacter{017D}{\v{Z}}
-  \DeclareUnicodeCharacter{017E}{\v{z}}
-
-  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
-  \DeclareUnicodeCharacter{01C5}{D\v{z}}
-  \DeclareUnicodeCharacter{01C6}{d\v{z}}
-  \DeclareUnicodeCharacter{01C7}{LJ}
-  \DeclareUnicodeCharacter{01C8}{Lj}
-  \DeclareUnicodeCharacter{01C9}{lj}
-  \DeclareUnicodeCharacter{01CA}{NJ}
-  \DeclareUnicodeCharacter{01CB}{Nj}
-  \DeclareUnicodeCharacter{01CC}{nj}
-  \DeclareUnicodeCharacter{01CD}{\v{A}}
-  \DeclareUnicodeCharacter{01CE}{\v{a}}
-  \DeclareUnicodeCharacter{01CF}{\v{I}}
-
-  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
-  \DeclareUnicodeCharacter{01D1}{\v{O}}
-  \DeclareUnicodeCharacter{01D2}{\v{o}}
-  \DeclareUnicodeCharacter{01D3}{\v{U}}
-  \DeclareUnicodeCharacter{01D4}{\v{u}}
-
-  \DeclareUnicodeCharacter{01E2}{\={\AE}}
-  \DeclareUnicodeCharacter{01E3}{\={\ae}}
-  \DeclareUnicodeCharacter{01E6}{\v{G}}
-  \DeclareUnicodeCharacter{01E7}{\v{g}}
-  \DeclareUnicodeCharacter{01E8}{\v{K}}
-  \DeclareUnicodeCharacter{01E9}{\v{k}}
-
-  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
-  \DeclareUnicodeCharacter{01F1}{DZ}
-  \DeclareUnicodeCharacter{01F2}{Dz}
-  \DeclareUnicodeCharacter{01F3}{dz}
-  \DeclareUnicodeCharacter{01F4}{\'G}
-  \DeclareUnicodeCharacter{01F5}{\'g}
-  \DeclareUnicodeCharacter{01F8}{\`N}
-  \DeclareUnicodeCharacter{01F9}{\`n}
-  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
-  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
-  \DeclareUnicodeCharacter{01FE}{\'{\O}}
-  \DeclareUnicodeCharacter{01FF}{\'{\o}}
-
-  \DeclareUnicodeCharacter{021E}{\v{H}}
-  \DeclareUnicodeCharacter{021F}{\v{h}}
-
-  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
-  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
-  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
-  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
-  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
-  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
-
-  \DeclareUnicodeCharacter{0232}{\=Y}
-  \DeclareUnicodeCharacter{0233}{\=y}
-  \DeclareUnicodeCharacter{0237}{\dotless{j}}
-
-  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
-
-  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
-  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
-  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
-  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
-  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
-  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
-  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
-  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
-  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
-  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
-  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
-  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
-
-  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
-  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
-
-  \DeclareUnicodeCharacter{1E20}{\=G}
-  \DeclareUnicodeCharacter{1E21}{\=g}
-  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
-  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
-  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
-  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
-  \DeclareUnicodeCharacter{1E26}{\"H}
-  \DeclareUnicodeCharacter{1E27}{\"h}
-
-  \DeclareUnicodeCharacter{1E30}{\'K}
-  \DeclareUnicodeCharacter{1E31}{\'k}
-  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
-  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
-  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
-  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
-  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
-  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
-  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
-  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
-  \DeclareUnicodeCharacter{1E3E}{\'M}
-  \DeclareUnicodeCharacter{1E3F}{\'m}
-
-  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
-  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
-  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
-  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
-  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
-  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
-  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
-  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
-  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
-  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
-
-  \DeclareUnicodeCharacter{1E54}{\'P}
-  \DeclareUnicodeCharacter{1E55}{\'p}
-  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
-  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
-  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
-  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
-  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
-  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
-  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
-  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
-
-  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
-  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
-  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
-  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
-  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
-  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
-  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
-  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
-  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
-  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
-
-  \DeclareUnicodeCharacter{1E7C}{\~V}
-  \DeclareUnicodeCharacter{1E7D}{\~v}
-  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
-  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
-
-  \DeclareUnicodeCharacter{1E80}{\`W}
-  \DeclareUnicodeCharacter{1E81}{\`w}
-  \DeclareUnicodeCharacter{1E82}{\'W}
-  \DeclareUnicodeCharacter{1E83}{\'w}
-  \DeclareUnicodeCharacter{1E84}{\"W}
-  \DeclareUnicodeCharacter{1E85}{\"w}
-  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
-  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
-  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
-  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
-  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
-  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
-  \DeclareUnicodeCharacter{1E8C}{\"X}
-  \DeclareUnicodeCharacter{1E8D}{\"x}
-  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
-  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
-
-  \DeclareUnicodeCharacter{1E90}{\^Z}
-  \DeclareUnicodeCharacter{1E91}{\^z}
-  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
-  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
-  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
-  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
-  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
-  \DeclareUnicodeCharacter{1E97}{\"t}
-  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
-  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
-
-  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
-  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
-
-  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
-  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
-  \DeclareUnicodeCharacter{1EBC}{\~E}
-  \DeclareUnicodeCharacter{1EBD}{\~e}
-
-  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
-  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
-  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
-  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
-
-  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
-  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
-
-  \DeclareUnicodeCharacter{1EF2}{\`Y}
-  \DeclareUnicodeCharacter{1EF3}{\`y}
-  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
-
-  \DeclareUnicodeCharacter{1EF8}{\~Y}
-  \DeclareUnicodeCharacter{1EF9}{\~y}
-
-  \DeclareUnicodeCharacter{2013}{--}
-  \DeclareUnicodeCharacter{2014}{---}
-  \DeclareUnicodeCharacter{2018}{\quoteleft}
-  \DeclareUnicodeCharacter{2019}{\quoteright}
-  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
-  \DeclareUnicodeCharacter{201C}{\quotedblleft}
-  \DeclareUnicodeCharacter{201D}{\quotedblright}
-  \DeclareUnicodeCharacter{201E}{\quotedblbase}
-  \DeclareUnicodeCharacter{2022}{\bullet}
-  \DeclareUnicodeCharacter{2026}{\dots}
-  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
-  \DeclareUnicodeCharacter{203A}{\guilsinglright}
-  \DeclareUnicodeCharacter{20AC}{\euro}
-
-  \DeclareUnicodeCharacter{2192}{\expansion}
-  \DeclareUnicodeCharacter{21D2}{\result}
-
-  \DeclareUnicodeCharacter{2212}{\minus}
-  \DeclareUnicodeCharacter{2217}{\point}
-  \DeclareUnicodeCharacter{2261}{\equiv}
-}% end of \utfeightchardefs
-
-
-% US-ASCII character definitions.
-\def\asciichardefs{% nothing need be done
-   \relax
-}
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
-\message{formatting,}
-
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\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
-
-% Don't be very finicky about underfull hboxes, either.
-\hbadness = 6666
-
-% Following George Bush, get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything.  We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize.  We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
-  \ifx\emergencystretch\thisisundefined
-    % Allow us to assign to \emergencystretch anyway.
-    \def\emergencystretch{\dimen0}%
-  \else
-    \emergencystretch = .15\hsize
-  \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth;
-% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-% 7) physical page height; 8) physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading.  The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
-  \voffset = #3\relax
-  \topskip = #6\relax
-  \splittopskip = \topskip
-  %
-  \vsize = #1\relax
-  \advance\vsize by \topskip
-  \outervsize = \vsize
-  \advance\outervsize by 2\topandbottommargin
-  \pageheight = \vsize
-  %
-  \hsize = #2\relax
-  \outerhsize = \hsize
-  \advance\outerhsize by 0.5in
-  \pagewidth = \hsize
-  %
-  \normaloffset = #4\relax
-  \bindingoffset = #5\relax
-  %
-  \ifpdf
-    \pdfpageheight #7\relax
-    \pdfpagewidth #8\relax
-    % if we don't reset these, they will remain at "1 true in" of
-    % whatever layout pdftex was dumped with.
-    \pdfhorigin = 1 true in
-    \pdfvorigin = 1 true in
-  \fi
-  %
-  \setleading{\textleading}
-  %
-  \parindent = \defaultparindent
-  \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % If page is nothing but text, make it come out even.
-  \internalpagesizes{607.2pt}{6in}% that's 46 lines
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{36pt}%
-                    {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.25 trim size.
-\def\smallbook{{\globaldefs = 1
-  \parskip = 2pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.5in}{5in}%
-                    {-.2in}{0in}%
-                    {\bindingoffset}{16pt}%
-                    {9.25in}{7in}%
-  %
-  \lispnarrowing = 0.3in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .5cm
-}}
-
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
-  \parskip = 1.5pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.4in}{4.8in}%
-                    {-.2in}{-.4in}%
-                    {0pt}{14pt}%
-                    {9in}{6in}%
-  %
-  \lispnarrowing = 0.25in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .4cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % Double-side printing via postscript on Laserjet 4050
-  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
-  % To change the settings for a different printer or situation, adjust
-  % \normaloffset until the front-side and back-side texts align.  Then
-  % do the same for \bindingoffset.  You can set these for testing in
-  % your texinfo source file like this:
-  % @tex
-  % \global\normaloffset = -6mm
-  % \global\bindingoffset = 10mm
-  % @end tex
-  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{44pt}%
-                    {297mm}{210mm}%
-  %
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
-  \parskip = 2pt plus 1pt minus 0.1pt
-  \textleading = 12.5pt
-  %
-  \internalpagesizes{160mm}{120mm}%
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{8pt}%
-                    {210mm}{148mm}%
-  %
-  \lispnarrowing = 0.2in
-  \tolerance = 800
-  \hfuzz = 1.2pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 2mm
-  \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{237mm}{150mm}%
-                    {\voffset}{4.6mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  %
-  % Must explicitly reset to 0 because we call \afourpaper.
-  \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{241mm}{165mm}%
-                    {\voffset}{-2.95mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
-  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
-  \globaldefs = 1
-  %
-  \parskip = 3pt plus 2pt minus 1pt
-  \setleading{\textleading}%
-  %
-  \dimen0 = #1\relax
-  \advance\dimen0 by \voffset
-  %
-  \dimen2 = \hsize
-  \advance\dimen2 by \normaloffset
-  %
-  \internalpagesizes{#1}{\hsize}%
-                    {\voffset}{\normaloffset}%
-                    {\bindingoffset}{44pt}%
-                    {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-\def^^L{\par} % remove \outer, so ^L can appear in an @comment
-
-% DEL is a comment character, in case @c does not suffice.
-\catcode`\^^? = 14
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other \def\normaldoublequote{"}
-\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
-\catcode`\+=\other \def\normalplus{+}
-\catcode`\<=\other \def\normalless{<}
-\catcode`\>=\other \def\normalgreater{>}
-\catcode`\^=\other \def\normalcaret{^}
-\catcode`\_=\other \def\normalunderscore{_}
-\catcode`\|=\other \def\normalverticalbar{|}
-\catcode`\~=\other \def\normaltilde{~}
-
-% This macro is used to make a character print one way in \tt
-% (where it can probably be output as-is), and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise.  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, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
-\chardef\hat=`\^
-\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-
-\chardef \less=`\<
-\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
-\chardef \gtr=`\>
-\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
-\catcode`\+=\active \def+{{\tt \char 43}}
-\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% used for headline/footline in the output routine, in case the page
-% breaks in the middle of an @tex block.
-\def\texinfochars{%
-  \let< = \activeless
-  \let> = \activegtr
-  \let~ = \activetilde 
-  \let^ = \activehat
-  \markupsetuplqdefault \markupsetuprqdefault 
-  \let\b = \strong
-  \let\i = \smartitalic
-  % in principle, all other definitions in \tex have to be undone too.
-}
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-% Used sometimes to turn off (effectively) the active characters even after
-% parsing them.
-\def\turnoffactive{%
-  \normalturnoffactive
-  \otherbackslash
-}
-
-\catcode`\@=0
-
-% \backslashcurfont outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
-
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-
-% In texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
-\catcode`\\=\active  % @ for escape char from now on.
-
-% The story here is that in math mode, the \char of \backslashcurfont
-% ends up printing the roman \ from the math symbol font (because \char
-% in math mode uses the \mathcode, and plain.tex sets
-% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
-% print a typewriter backslash, hence we use an explicit \mathchar,
-% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
-% ignored family value; char position "5C).  We can't use " for the
-% usual hex value because it has already been made active.
-@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
-
-% On startup, @fixbackslash assigns:
-%  @let \ = @normalbackslash
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.  We switch back and forth between these.
-@gdef@rawbackslash{@let\=@backslashcurfont}
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  Also revert - to its normal character, in
-% case the active - from code has slipped in.
-%
-{@catcode`- = @active
- @gdef@normalturnoffactive{%
-   @let-=@normaldash
-   @let"=@normaldoublequote
-   @let$=@normaldollar %$ font-lock fix
-   @let+=@normalplus
-   @let<=@normalless
-   @let>=@normalgreater
-   @let\=@normalbackslash
-   @let^=@normalcaret
-   @let_=@normalunderscore
-   @let|=@normalverticalbar
-   @let~=@normaltilde
-   @markupsetuplqdefault
-   @markupsetuprqdefault
-   @unsepspaces
- }
-}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
-  @catcode`+=@active
-  @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These (along with & and #) are made active for url-breaking, so need
-% active definitions as the normal characters.
-@def@normaldot{.}
-@def@normalquest{?}
-@def@normalslash{/}
-
-% These look ok in all fonts, so just make them not special.
-% @hashchar{} gets its own user-level command, because of #line.
-@catcode`@& = @other @def@normalamp{&}
-@catcode`@# = @other @def@normalhash{#}
-@catcode`@% = @other @def@normalpercent{%}
-
-@let @hashchar = @normalhash
-
-@c Finally, make ` and ' active, so that txicodequoteundirected and
-@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
-@c don't make ` and ' active, @code will not get them as active chars.
-@c Do this last of all since we use ` in the previous @catcode assignments.
-@catcode`@'=@active
-@catcode`@`=@active
-@markupsetuplqdefault
-@markupsetuprqdefault
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
-
-@c vim:sw=2:
-
-@ignore
-   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
diff --git a/examples/complete/bash-completion-2.5.tar.xz b/examples/complete/bash-completion-2.5.tar.xz
deleted file mode 100644 (file)
index f5b9079..0000000
Binary files a/examples/complete/bash-completion-2.5.tar.xz and /dev/null differ
diff --git a/examples/loadables/bsdos.glue.c b/examples/loadables/bsdos.glue.c
deleted file mode 100644 (file)
index 9df731b..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-#include <stdio.h>
-#include <limits.h>
-#include <locale.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdarg.h>
-#include "bashansi.h"
-#include "shell.h"
-#include "builtins.h"
-#include "stdc.h"
-#include "common.h"
-#include "bashgetopt.h"
-
-char *this_command_name = (char *)NULL;
-
-void
-builtin_error (const char *format, ...)
-{
-  va_list args;
-  char *name;
-
-  name = get_name_for_error ();
-  fprintf (stderr, "%s: ", name);
-
-  if (this_command_name && *this_command_name)
-    fprintf (stderr, "%s: ", this_command_name);
-
-  va_start (args, format);
-
-  vfprintf (stderr, format, args);
-  va_end (args);
-  fprintf (stderr, "\n");
-}
-
-int
-no_options(list)
-WORD_LIST *list;
-{
-  reset_internal_getopt ();
-  if (internal_getopt (list, "") != -1)
-    {
-      builtin_usage ();
-      return (1);
-    }
-  return (0);
-}
-
-int
-legal_number (string, result)
-     char *string;
-     long *result;
-{
-  long value;
-  char *ep;
-
-  if (result)
-    *result = 0;
-
-  value = strtol (string, &ep, 10);
-
-  /* If *string is not '\0' but *ep is '\0' on return, the entire string
-     is valid. */
-  if (string && *string && *ep == '\0')
-    {
-      if (result)
-        *result = value;
-      /* The SunOS4 implementation of strtol() will happily ignore
-         overflow conditions, so this cannot do overflow correctly
-         on those systems. */
-      return 1;
-    }
-    
-  return (0);
-}
-
-/* Return the number of elements in LIST, a generic list. */
-int
-list_length (list)
-     GENERIC_LIST *list;
-{
-  register int i;
-
-  for (i = 0; list; list = list->next, i++);
-  return (i);
-}
-
-GENERIC_LIST *
-reverse_list (list)
-     GENERIC_LIST *list;
-{
-  register GENERIC_LIST *next, *prev;
-
-  for (prev = (GENERIC_LIST *)NULL; list; )
-    {
-      next = list->next;
-      list->next = prev;
-      prev = list;
-      list = next;
-    }
-  return (prev);
-}
-
-WORD_DESC *
-make_bare_word (string)
-     char *string;
-{
-  WORD_DESC *temp;
-
-  temp = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
-  if (*string)
-    temp->word = savestring (string);
-  else
-    {
-      temp->word = xmalloc (1);
-      temp->word[0] = '\0';
-    }
-
-  temp->flags = 0;
-  return (temp);
-}
-WORD_LIST *
-make_word_list (word, link)
-     WORD_DESC *word;
-     WORD_LIST *link;
-{
-  WORD_LIST *temp;
-
-  temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-  temp->word = word;
-  temp->next = link;
-  return (temp);
-}
-
-void
-builtin_usage()
-{
-  if (this_command_name && *this_command_name)
-    fprintf (stderr, "%s: usage: %s args\n", this_command_name, this_command_name);
-  fflush (stderr);
-}
-
-char *
-xmalloc(s)
-     size_t s;
-{
-  return (malloc (s));
-}
-
-WORD_LIST *
-argv_to_word_list (array, copy, starting_index)
-     char **array;
-     int copy, starting_index;
-{
-  WORD_LIST *list;
-  WORD_DESC *w;
-  int i, count;
-
-  if (array == 0 || array[0] == 0)
-    return (WORD_LIST *)NULL;
-
-  for (count = 0; array[count]; count++)
-    ;
-
-  for (i = starting_index, list = (WORD_LIST *)NULL; i < count; i++)
-    {
-      w = make_bare_word (copy ? "" : array[i]);
-      if (copy)
-        {
-          free (w->word);
-          w->word = array[i];
-        }
-      list = make_word_list (w, list);
-    }
-  return (REVERSE_LIST(list, WORD_LIST *));
-}
-
-/* Convert a WORD_LIST into a C-style argv.  Return the number of elements
-   in the list in *IP, if IP is non-null.  A convenience function for
-   loadable builtins; also used by `test'. */
-char **
-make_builtin_argv (list, ip)
-     WORD_LIST *list;
-     int *ip;
-{
-  char **argv;
-
-  argv = strvec_from_word_list (list, 0, 1, ip);
-  argv[0] = this_command_name;
-  return argv;
-}
-                
diff --git a/lib/sh/strindex.c b/lib/sh/strindex.c
deleted file mode 100644 (file)
index 5cb80ad..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* strindex.c - Find if one string appears as a substring of another string,
-               without regard to case. */
-
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   Bash is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-
-#include <bashansi.h>
-#include <chartypes.h>
-
-#include <stdc.h>
-
-/* Determine if s2 occurs in s1.  If so, return a pointer to the
-   match in s1.  The compare is case insensitive.  This is a
-   case-insensitive strstr(3). */
-char *
-strindex (s1, s2)
-     const char *s1;
-     const char *s2;
-{
-  register int i, l, len, c;
-
-  c = TOLOWER ((unsigned char)s2[0]);
-  len = strlen (s1);
-  l = strlen (s2);
-  for (i = 0; (len - i) >= l; i++)
-    if ((TOLOWER ((unsigned char)s1[i]) == c) && (strncasecmp (s1 + i, s2, l) == 0))
-      return ((char *)s1 + i);
-  return ((char *)0);
-}
diff --git a/lib/sh/xstrchr.c b/lib/sh/xstrchr.c
deleted file mode 100644 (file)
index 6dd4d8e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* xstrchr.c - strchr(3) that handles multibyte characters. */
-
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   Bash is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-
-#ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-#endif
-
-#include "bashansi.h"
-#include "shmbutil.h"
-
-#undef xstrchr
-
-/* In some locales, the non-first byte of some multibyte characters have
-   the same value as some ascii character.  Faced with these strings, a
-   legacy strchr() might return the wrong value. */
-
-char *
-#if defined (PROTOTYPES)
-xstrchr (const char *s, int c)
-#else
-xstrchr (s, c)
-     const char *s;
-     int c;
-#endif
-{
-#if HANDLE_MULTIBYTE
-  char *pos;
-  mbstate_t state;
-  size_t strlength, mblength;
-
-  /* The locale encodings with said weird property are BIG5, BIG5-HKSCS,
-     GBK, GB18030, SHIFT_JIS, and JOHAB.  They exhibit the problem only
-     when c >= 0x30.  We can therefore use the faster bytewise search if
-     c <= 0x30. */
-  if ((unsigned char)c >= '0' && MB_CUR_MAX > 1)
-    {
-      pos = (char *)s;
-      memset (&state, '\0', sizeof(mbstate_t));
-      strlength = strlen (s);
-
-      while (strlength > 0)
-       {
-         mblength = mbrlen (pos, strlength, &state);
-         if (mblength == (size_t)-2 || mblength == (size_t)-1 || mblength == (size_t)0)
-           mblength = 1;
-
-         if (c == (unsigned char)*pos)
-           return pos;
-
-         strlength -= mblength;
-         pos += mblength;
-       }
-
-      return ((char *)NULL);
-    }
-  else
-#endif
-  return (strchr (s, c));
-}
diff --git a/support/config.guess.20120210 b/support/config.guess.20120210
deleted file mode 100755 (executable)
index d622a44..0000000
+++ /dev/null
@@ -1,1530 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-02-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit ;;
-    *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
-           "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
-           "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
-           "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
-               ;;
-           sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-       then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
-           then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-           else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-           fi
-       else
-           echo i586-dg-dgux${UNAME_RELEASE}
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
-       then
-           eval $set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH="hppa2.0w"
-           else
-               HP_ARCH="hppa64"
-           fi
-       fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
-           amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-       esac
-       exit ;;
-    i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
-       exit ;;
-    *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    i*:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
-       exit ;;
-    i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
-           x86)
-               echo i586-pc-interix${UNAME_RELEASE}
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-       esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
-    i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-       exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-       exit ;;
-    arm*:Linux:*:*)
-       eval $set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo ${UNAME_MACHINE}-unknown-linux-gnu
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-           else
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
-       exit ;;
-    crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
-       exit ;;
-    frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    i*86:Linux:*:*)
-       LIBC=gnu
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-       exit ;;
-    ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-       ;;
-    or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-gnu
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-gnu ;;
-         PA8*) echo hppa2.0-unknown-linux-gnu ;;
-         *)    echo hppa-unknown-linux-gnu ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux
-       exit ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-gnu
-       exit ;;
-    x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       case $UNAME_PROCESSOR in
-           i386)
-               eval $set_cc_for_build
-               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                     grep IS_64BIT_ARCH >/dev/null
-                 then
-                     UNAME_PROCESSOR="x86_64"
-                 fi
-               fi ;;
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = "386"; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo ${UNAME_MACHINE}-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
-       exit ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-       exit ;;
-    i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
-       exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20131216 b/support/config.guess.20131216
deleted file mode 100644 (file)
index 9afd676..0000000
+++ /dev/null
@@ -1,1568 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-11-29'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit ;;
-    *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
-           "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
-           "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
-           "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
-               ;;
-           sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-       then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
-           then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-           else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-           fi
-       else
-           echo i586-dg-dgux${UNAME_RELEASE}
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
-       then
-           eval $set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH="hppa2.0w"
-           else
-               HP_ARCH="hppa64"
-           fi
-       fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
-           amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-       esac
-       exit ;;
-    i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    i*:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
-       exit ;;
-    i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
-           x86)
-               echo i586-pc-interix${UNAME_RELEASE}
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-       esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
-    i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-       exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arm*:Linux:*:*)
-       eval $set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-           else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-       exit ;;
-    ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-       ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-       exit ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-       exit ;;
-    x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = "386"; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo ${UNAME_MACHINE}-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
-       exit ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-       exit ;;
-    i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
-       exit ;;
-esac
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20171221 b/support/config.guess.20171221
deleted file mode 100644 (file)
index 770cb5c..0000000
+++ /dev/null
@@ -1,1466 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2017 Free Software Foundation, Inc.
-
-timestamp='2017-12-17'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2017 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           /sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || \
-           echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-               endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine=${arch}${endian}-unknown
-               ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "${UNAME_MACHINE_ARCH}" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "${UNAME_MACHINE_ARCH}" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}${abi}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE}
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit ;;
-    *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:Sortix:*:*)
-       echo ${UNAME_MACHINE}-unknown-sortix
-       exit ;;
-    *:Redox:*:*)
-       echo ${UNAME_MACHINE}-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
-               ;;
-           sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-       then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
-           then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-           else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-           fi
-       else
-           echo i586-dg-dgux${UNAME_RELEASE}
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ ${HP_ARCH} = hppa2.0w ]
-       then
-           eval $set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
-           x86)
-               echo i586-pc-interix${UNAME_RELEASE}
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-       exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arm*:Linux:*:*)
-       eval $set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-           else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    e2k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-       exit ;;
-    ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    k1om:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-${LIBC}
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-       exit ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-       exit ;;
-    x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux${UNAME_RELEASE}
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_PPC >/dev/null
-               then
-                   UNAME_PROCESSOR=powerpc
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo ${UNAME_MACHINE}-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
-       exit ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
-       exit ;;
-    i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-esac
-
-echo "$0: unable to guess system type" >&2
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20180522 b/support/config.guess.20180522
deleted file mode 100755 (executable)
index 883a671..0000000
+++ /dev/null
@@ -1,1476 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-05-19'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
- ,,)    echo "int x;" > "$dummy.c" ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval "$set_cc_for_build"
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
-
-       # If ldd exists, use it to detect musl libc.
-       if command -v ldd >/dev/null && \
-               ldd --version 2>&1 | grep -q ^musl
-       then
-           LIBC=musl
-       fi
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown)`
-       case "$UNAME_MACHINE_ARCH" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-               endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval "$set_cc_for_build"
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval "$set_cc_for_build"
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval "$set_cc_for_build"
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
-       then
-           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-              [ "$TARGET_BINARY_INTERFACE"x = x ]
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval "$set_cc_for_build"
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "$HP_ARCH" = "" ]; then
-                   eval "$set_cc_for_build"
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ "$HP_ARCH" = hppa2.0w ]
-       then
-           eval "$set_cc_for_build"
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval "$set_cc_for_build"
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
-       exit ;;
-    i*86:Minix:*:*)
-       echo "$UNAME_MACHINE"-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       eval "$set_cc_for_build"
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval "$set_cc_for_build"
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
-       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval "$set_cc_for_build"
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
-           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_PPC >/dev/null
-               then
-                   UNAME_PROCESSOR=powerpc
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-esac
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20181116 b/support/config.guess.20181116
deleted file mode 100755 (executable)
index 18f8edc..0000000
+++ /dev/null
@@ -1,1486 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-08-29'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
-trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
-
-set_cc_for_build() {
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       set_cc_for_build
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
-
-       # If ldd exists, use it to detect musl libc.
-       if command -v ldd >/dev/null && \
-               ldd --version 2>&1 | grep -q ^musl
-       then
-           LIBC=musl
-       fi
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown)`
-       case "$UNAME_MACHINE_ARCH" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-               endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       case `isainfo -b` in
-           32)
-               echo i386-pc-solaris2"$UNAME_REL"
-               ;;
-           64)
-               echo x86_64-pc-solaris2"$UNAME_REL"
-               ;;
-       esac
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
-       then
-           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-              [ "$TARGET_BINARY_INTERFACE"x = x ]
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "$HP_ARCH" = "" ]; then
-                   set_cc_for_build
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ "$HP_ARCH" = hppa2.0w ]
-       then
-           set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=`uname -p`
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
-       fi
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
-       exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
-       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
-           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_PPC >/dev/null
-               then
-                   UNAME_PROCESSOR=powerpc
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       # shellcheck disable=SC2154
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-esac
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20200508 b/support/config.guess.20200508
deleted file mode 100755 (executable)
index 11fda52..0000000
+++ /dev/null
@@ -1,1674 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-04-26'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
-    # prevent multiple calls if $tmp is already set
-    test "$tmp" && return 0
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       set_cc_for_build
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
-
-       # If ldd exists, use it to detect musl libc.
-       if command -v ldd >/dev/null && \
-               ldd --version 2>&1 | grep -q ^musl
-       then
-           LIBC=musl
-       fi
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown)`
-       case "$UNAME_MACHINE_ARCH" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-               endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    *:OS108:*:*)
-       echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Twizzler:*:*)
-       echo "$UNAME_MACHINE"-unknown-twizzler
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-       echo mips-dec-osf1
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       set_cc_for_build
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
-       then
-           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-              [ "$TARGET_BINARY_INTERFACE"x = x ]
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "$HP_ARCH" = "" ]; then
-                   set_cc_for_build
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ "$HP_ARCH" = hppa2.0w ]
-       then
-           set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=`uname -p`
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
-       fi
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
-       exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       IS_GLIBC=0
-       test x"${LIBC}" = xgnu && IS_GLIBC=1
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #undef mips64
-       #undef mips64el
-       #if ${IS_GLIBC} && defined(_ABI64)
-       LIBCABI=gnuabi64
-       #else
-       #if ${IS_GLIBC} && defined(_ABIN32)
-       LIBCABI=gnuabin32
-       #else
-       LIBCABI=${LIBC}
-       #endif
-       #endif
-
-       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa64r6
-       #else
-       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa32r6
-       #else
-       #if defined(__mips64)
-       CPU=mips64
-       #else
-       CPU=mips
-       #endif
-       #endif
-       #endif
-
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       MIPS_ENDIAN=el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       MIPS_ENDIAN=
-       #else
-       MIPS_ENDIAN=
-       #endif
-       #endif
-EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
-       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p`
-       case $UNAME_PROCESSOR in
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       if command -v xcode-select > /dev/null 2> /dev/null && \
-               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
-           # Avoid executing cc if there is no toolchain installed as
-           # cc will be a stub that puts up a graphical alert
-           # prompting the user to install developer tools.
-           CC_FOR_BUILD=no_compiler_found
-       else
-           set_cc_for_build
-       fi
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
-           fi
-           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_PPC >/dev/null
-           then
-               UNAME_PROCESSOR=powerpc
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # uname -m returns i386 or x86_64
-           UNAME_PROCESSOR=$UNAME_MACHINE
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       # shellcheck disable=SC2154
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-    *:Unleashed:*:*)
-       echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-       exit ;;
-esac
-
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <<EOF
-#ifdef _SEQUENT_
-#include <sys/types.h>
-#include <sys/utsname.h>
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include <signal.h>
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include <sys/utsname.h>
-#endif
-#endif
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-  "4"
-#else
-  ""
-#endif
-  ); exit (0);
-#endif
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-  struct utsname un;
-
-  uname(&un);
-  if (strncmp(un.version, "V2", 2) == 0) {
-    printf ("i386-sequent-ptx2\n"); exit (0);
-  }
-  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-    printf ("i386-sequent-ptx1\n"); exit (0);
-  }
-  printf ("i386-sequent-ptx\n"); exit (0);
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-#include <sys/param.h>
-#if defined (BSD)
-#if BSD == 43
-  printf ("vax-dec-bsd4.3\n"); exit (0);
-#else
-#if BSD == 199006
-  printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#endif
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#else
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname un;
-  uname (&un);
-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname *un;
-  uname (&un);
-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-EOF
-
-year=`echo $timestamp | sed 's,-.*,,'`
-# shellcheck disable=SC2003
-if test "`expr "\`date +%Y\`" - "$year"`" -lt 3 ; then
-   cat >&2 <<EOF
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-fi
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.guess.20201107 b/support/config.guess.20201107
deleted file mode 100755 (executable)
index 0fc11ed..0000000
+++ /dev/null
@@ -1,1686 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
-    # prevent multiple calls if $tmp is already set
-    test "$tmp" && return 0
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
-UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
-UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
-UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       set_cc_for_build
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       #include <stdarg.h>
-       #ifdef __DEFINED_va_list
-       LIBC=musl
-       #else
-       LIBC=gnu
-       #endif
-       #endif
-       EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown))
-       case "$UNAME_MACHINE_ARCH" in
-           aarch64eb) machine=aarch64_be-unknown ;;
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
-               endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    *:OS108:*:*)
-       echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Twizzler:*:*)
-       echo "$UNAME_MACHINE"-unknown-twizzler
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-       echo mips-dec-osf1
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
-               ;;
-       *5.*)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "$( (/bin/universe) 2>/dev/null)" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case $(/usr/bin/uname -p) in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       set_cc_for_build
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "$(/usr/bin/arch -k)" in
-           Series*|S4*)
-               UNAME_RELEASE=$(uname -v)
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "$(/bin/arch)" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
-         SYSTEM_NAME=$("$dummy" "$dummyarg") &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
-       then
-           if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
-              test "$TARGET_BINARY_INTERFACE"x = x
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if test -x /usr/bin/oslevel ; then
-               IBM_REV=$(/usr/bin/oslevel)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if test -x /usr/bin/lslpp ; then
-               IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if test -x /usr/bin/getconf; then
-                   sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
-                   sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if test "$HP_ARCH" = ""; then
-                   set_cc_for_build
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if test "$HP_ARCH" = hppa2.0w
-       then
-           set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if test -x /usr/sbin/sysversion ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
-       fi
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
-       exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       IS_GLIBC=0
-       test x"${LIBC}" = xgnu && IS_GLIBC=1
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #undef mips64
-       #undef mips64el
-       #if ${IS_GLIBC} && defined(_ABI64)
-       LIBCABI=gnuabi64
-       #else
-       #if ${IS_GLIBC} && defined(_ABIN32)
-       LIBCABI=gnuabin32
-       #else
-       LIBCABI=${LIBC}
-       #endif
-       #endif
-
-       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa64r6
-       #else
-       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa32r6
-       #else
-       #if defined(__mips64)
-       CPU=mips64
-       #else
-       CPU=mips
-       #endif
-       #endif
-       #endif
-
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       MIPS_ENDIAN=el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       MIPS_ENDIAN=
-       #else
-       MIPS_ENDIAN=
-       #endif
-       #endif
-EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
-       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       set_cc_for_build
-       LIBCABI=$LIBC
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_X32 >/dev/null
-           then
-               LIBCABI="$LIBC"x32
-           fi
-       fi
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case $(/bin/uname -X | grep "^Machine") in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if test -d /usr/nec; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    arm64:Darwin:*:*)
-       echo aarch64-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       case $UNAME_PROCESSOR in
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       if command -v xcode-select > /dev/null 2> /dev/null && \
-               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
-           # Avoid executing cc if there is no toolchain installed as
-           # cc will be a stub that puts up a graphical alert
-           # prompting the user to install developer tools.
-           CC_FOR_BUILD=no_compiler_found
-       else
-           set_cc_for_build
-       fi
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
-           fi
-           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_PPC >/dev/null
-           then
-               UNAME_PROCESSOR=powerpc
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # uname -m returns i386 or x86_64
-           UNAME_PROCESSOR=$UNAME_MACHINE
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       # shellcheck disable=SC2154
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-    *:Unleashed:*:*)
-       echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-       exit ;;
-esac
-
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <<EOF
-#ifdef _SEQUENT_
-#include <sys/types.h>
-#include <sys/utsname.h>
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include <signal.h>
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include <sys/utsname.h>
-#endif
-#endif
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-  "4"
-#else
-  ""
-#endif
-  ); exit (0);
-#endif
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-  struct utsname un;
-
-  uname(&un);
-  if (strncmp(un.version, "V2", 2) == 0) {
-    printf ("i386-sequent-ptx2\n"); exit (0);
-  }
-  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-    printf ("i386-sequent-ptx1\n"); exit (0);
-  }
-  printf ("i386-sequent-ptx\n"); exit (0);
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-#include <sys/param.h>
-#if defined (BSD)
-#if BSD == 43
-  printf ("vax-dec-bsd4.3\n"); exit (0);
-#else
-#if BSD == 199006
-  printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#endif
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#else
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname un;
-  uname (&un);
-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname *un;
-  uname (&un);
-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-EOF
-
-year=$(echo $timestamp | sed 's,-.*,,')
-# shellcheck disable=SC2003
-if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
-   cat >&2 <<EOF
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = $( (uname -m) 2>/dev/null || echo unknown)
-uname -r = $( (uname -r) 2>/dev/null || echo unknown)
-uname -s = $( (uname -s) 2>/dev/null || echo unknown)
-uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-
-/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
-/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
-
-hostinfo               = $( (hostinfo) 2>/dev/null)
-/bin/universe          = $( (/bin/universe) 2>/dev/null)
-/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
-/bin/arch              = $( (/bin/arch) 2>/dev/null)
-/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
-/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-fi
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.rpath.20080813 b/support/config.rpath.20080813
deleted file mode 100755 (executable)
index b6c4d8f..0000000
+++ /dev/null
@@ -1,547 +0,0 @@
-#! /bin/sh
-# Output a system dependent set of variables, describing how to set the
-# run time search path of shared libraries in an executable.
-#
-#   Copyright 1996-2003 Free Software Foundation, Inc.
-#   Taken from GNU libtool, 2001
-#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-#   This program is free software: you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation, either version 3 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception to the GNU General Public License, if you
-#   distribute this file as part of a program that contains a
-#   configuration script generated by Autoconf, you may include it under
-#   the same distribution terms that you use for the rest of that program.
-#
-# The first argument passed to this file is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-# should be set by the caller.
-#
-# The set of defined variables is at the end of this script.
-
-# Known limitations:
-# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
-#   than 256 bytes, otherwise the compiler driver will dump core. The only
-#   known workaround is to choose shorter directory names for the build
-#   directory and/or the installation directory.
-
-# All known linkers require a `.a' archive for static linking (except M$VC,
-# which needs '.lib').
-libext=a
-shrext=.so
-
-host="$1"
-host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
-
-wl=
-if test "$GCC" = yes; then
-  wl='-Wl,'
-else
-  case "$host_os" in
-    aix*)
-      wl='-Wl,'
-      ;;
-    mingw* | pw32* | os2*)
-      ;;
-    hpux9* | hpux10* | hpux11*)
-      wl='-Wl,'
-      ;;
-    irix5* | irix6* | nonstopux*)
-      wl='-Wl,'
-      ;;
-    newsos6)
-      ;;
-    linux*)
-      case $CC in
-        icc|ecc)
-          wl='-Wl,'
-          ;;
-        ccc)
-          wl='-Wl,'
-          ;;
-      esac
-      ;;
-    osf3* | osf4* | osf5*)
-      wl='-Wl,'
-      ;;
-    sco3.2v5*)
-      ;;
-    solaris*)
-      wl='-Wl,'
-      ;;
-    sunos4*)
-      wl='-Qoption ld '
-      ;;
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-      wl='-Wl,'
-      ;;
-    sysv4*MP*)
-      ;;
-    uts4*)
-      ;;
-  esac
-fi
-
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
-
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-
-case "$host_os" in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
-  case "$host_os" in
-    aix3* | aix4* | aix5*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-        ld_shlibs=no
-      fi
-      ;;
-    amigaos*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can use
-      # them.
-      ld_shlibs=no
-      ;;
-    beos*)
-      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    cygwin* | mingw* | pw32*)
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    netbsd*)
-      ;;
-    solaris* | sysv5*)
-      if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-        ld_shlibs=no
-      elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    sunos4*)
-      hardcode_direct=yes
-      ;;
-    *)
-      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-  esac
-  if test "$ld_shlibs" = yes; then
-    # Unlike libtool, we use -rpath here, not --rpath, since the documented
-    # option of GNU ld is called -rpath, not --rpath.
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-  fi
-else
-  case "$host_os" in
-    aix3*)
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes; then
-        # Neither direct hardcoding nor static linking is supported with a
-        # broken collect2.
-        hardcode_direct=unsupported
-      fi
-      ;;
-    aix4* | aix5*)
-      if test "$host_cpu" = ia64; then
-        # On IA64, the linker does run time linking by default, so we don't
-        # have to do anything special.
-        aix_use_runtimelinking=no
-      else
-        aix_use_runtimelinking=no
-        # Test if we are trying to use run time linking or normal
-        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-        # need to do runtime linking.
-        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-          for ld_flag in $LDFLAGS; do
-            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-              aix_use_runtimelinking=yes
-              break
-            fi
-          done
-        esac
-      fi
-      hardcode_direct=yes
-      hardcode_libdir_separator=':'
-      if test "$GCC" = yes; then
-        case $host_os in aix4.[012]|aix4.[012].*)
-          collect2name=`${CC} -print-prog-name=collect2`
-          if test -f "$collect2name" && \
-            strings "$collect2name" | grep resolve_lib_name >/dev/null
-          then
-            # We have reworked collect2
-            hardcode_direct=yes
-          else
-            # We have old collect2
-            hardcode_direct=unsupported
-            hardcode_minus_L=yes
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_libdir_separator=
-          fi
-        esac
-      fi
-      # Begin _LT_AC_SYS_LIBPATH_AIX.
-      echo 'int main () { return 0; }' > conftest.c
-      ${CC} ${LDFLAGS} conftest.c -o conftest
-      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      if test -z "$aix_libpath"; then
-        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      fi
-      if test -z "$aix_libpath"; then
-        aix_libpath="/usr/lib:/lib"
-      fi
-      rm -f conftest.c conftest
-      # End _LT_AC_SYS_LIBPATH_AIX.
-      if test "$aix_use_runtimelinking" = yes; then
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-      else
-        if test "$host_cpu" = ia64; then
-          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-        else
-          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        fi
-      fi
-      ;;
-    amigaos*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs=no
-      ;;
-    bsdi4*)
-      ;;
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      libext=lib
-      ;;
-    darwin* | rhapsody*)
-      if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
-        hardcode_direct=no
-      fi
-      ;;
-    dgux*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-    freebsd2.2*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    freebsd2*)
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    freebsd*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    hpux9*)
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      ;;
-    hpux10* | hpux11*)
-      if test "$with_gnu_ld" = no; then
-        case "$host_cpu" in
-          hppa*64*)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
-            hardcode_direct=no
-            ;;
-          ia64*)
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_direct=no
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
-            ;;
-          *)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
-            hardcode_direct=yes
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
-            ;;
-        esac
-      fi
-      ;;
-    irix5* | irix6* | nonstopux*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    netbsd*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    newsos6)
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    openbsd*)
-      hardcode_direct=yes
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      else
-        case "$host_os" in
-          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-            hardcode_libdir_flag_spec='-R$libdir'
-            ;;
-          *)
-            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-            ;;
-        esac
-      fi
-      ;;
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      ;;
-    osf3*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    osf4* | osf5*)
-      if test "$GCC" = yes; then
-        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-        # Both cc and cxx compiler support -rpath directly
-        hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      hardcode_libdir_separator=:
-      ;;
-    sco3.2v5*)
-      ;;
-    solaris*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      ;;
-    sunos4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    sysv4)
-      case $host_vendor in
-        sni)
-          hardcode_direct=yes # is this really true???
-          ;;
-        siemens)
-          hardcode_direct=no
-          ;;
-        motorola)
-          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-          ;;
-      esac
-      ;;
-    sysv4.3*)
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-        ld_shlibs=yes
-      fi
-      ;;
-    sysv4.2uw2*)
-      hardcode_direct=yes
-      hardcode_minus_L=no
-      ;;
-    sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
-      ;;
-    sysv5*)
-      hardcode_libdir_flag_spec=
-      ;;
-    uts4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    *)
-      ld_shlibs=no
-      ;;
-  esac
-fi
-
-# Check dynamic linker characteristics
-# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
-libname_spec='lib$name'
-case "$host_os" in
-  aix3*)
-    ;;
-  aix4* | aix5*)
-    ;;
-  amigaos*)
-    ;;
-  beos*)
-    ;;
-  bsdi4*)
-    ;;
-  cygwin* | mingw* | pw32*)
-    shrext=.dll
-    ;;
-  darwin* | rhapsody*)
-    shrext=.dylib
-    ;;
-  dgux*)
-    ;;
-  freebsd1*)
-    ;;
-  freebsd*)
-    ;;
-  gnu*)
-    ;;
-  hpux9* | hpux10* | hpux11*)
-    case "$host_cpu" in
-      ia64*)
-        shrext=.so
-        ;;
-      hppa*64*)
-        shrext=.sl
-        ;;
-      *)
-        shrext=.sl
-        ;;
-    esac
-    ;;
-  irix5* | irix6* | nonstopux*)
-    case "$host_os" in
-      irix5* | nonstopux*)
-        libsuff= shlibsuff=
-        ;;
-      *)
-        case $LD in
-          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
-          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
-          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
-          *) libsuff= shlibsuff= ;;
-        esac
-        ;;
-    esac
-    ;;
-  linux*oldld* | linux*aout* | linux*coff*)
-    ;;
-  linux*)
-    ;;
-  netbsd*)
-    ;;
-  newsos6)
-    ;;
-  nto-qnx)
-    ;;
-  openbsd*)
-    ;;
-  os2*)
-    libname_spec='$name'
-    shrext=.dll
-    ;;
-  osf3* | osf4* | osf5*)
-    ;;
-  sco3.2v5*)
-    ;;
-  solaris*)
-    ;;
-  sunos4*)
-    ;;
-  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-    ;;
-  sysv4*MP*)
-    ;;
-  uts4*)
-    ;;
-esac
-
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
-shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
-escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-
-sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
-
-# How to pass a linker flag through the compiler.
-wl="$escaped_wl"
-
-# Static library suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally "so").
-shlibext="$shlibext"
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator="$hardcode_libdir_separator"
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct="$hardcode_direct"
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L="$hardcode_minus_L"
-
-EOF
diff --git a/support/config.sub.20120418 b/support/config.sub.20120418
deleted file mode 100755 (executable)
index 59bb593..0000000
+++ /dev/null
@@ -1,1779 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-04-18'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-        | be32 | be64 \
-       | bfin \
-       | c4x | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 \
-       | ns16k | ns32k \
-       | open8 \
-       | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw32)
-               basic_machine=i386-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i386-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -kaos*)
-               os=-kaos
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -nacl*)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20131217 b/support/config.sub.20131217
deleted file mode 100644 (file)
index 61cb4bc..0000000
+++ /dev/null
@@ -1,1793 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-10-01'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -nacl*)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       c8051-*)
-               os=-elf
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or1k-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20171221 b/support/config.sub.20171221
deleted file mode 100644 (file)
index 00f68b8..0000000
+++ /dev/null
@@ -1,1848 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2017 Free Software Foundation, Inc.
-
-timestamp='2017-11-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2017 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | cloudabi*-eabi* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | ba \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | e2k | epiphany \
-       | fido | fr30 | frv | ft32 \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia16 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pru \
-       | pyramid \
-       | riscv32 | riscv64 \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | visium \
-       | wasm32 \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | ba-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | e2k-* | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | or1k*-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pru-* \
-       | pyramid-* \
-       | riscv32-* | riscv64-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | visium-* \
-       | wasm32-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       asmjs)
-               basic_machine=asmjs-unknown
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2*)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       e500v[12])
-               basic_machine=powerpc-unknown
-               os=$os"spe"
-               ;;
-       e500v[12]-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=$os"spe"
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       moxiebox)
-               basic_machine=moxie-unknown
-               os=-moxiebox
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next)
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       nsx-tandem)
-               basic_machine=nsx-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       wasm32)
-               basic_machine=wasm32-unknown
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       x64)
-               basic_machine=x86_64-pc
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* | -cloudabi* | -sortix* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-             | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2)
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $basic_machine in
-                   arm*)
-                       os=-eabi
-                       ;;
-                   *)
-                       os=-elf
-                       ;;
-               esac
-               ;;
-       -nacl*)
-               ;;
-       -ios)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       c8051-*)
-               os=-elf
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       pru-*)
-               os=-elf
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next)
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20180522 b/support/config.sub.20180522
deleted file mode 100755 (executable)
index f38250f..0000000
+++ /dev/null
@@ -1,1835 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-05-19'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2018 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-IFS="-" read -r field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               basic_machine=$field1
-               os=$field2
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               os=scout
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               os=sysv
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               os=cegcc
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               os=unicos
-                               ;;
-                       craynv)
-                               basic_machine=craynv-cray
-                               os=unicosmp
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               os=sysv3
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               os=bsd
-                               ;;
-                       hp300hpux)
-                               basic_machine=m68k-hp
-                               os=hpux
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               os=mach
-                               ;;
-                       vsta)
-                               basic_machine=i386-unknown
-                               os=vsta
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-unknown
-                               os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               os=linux
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               os=seiux
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               os=sysv2
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               os=sysv4
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               os=sunos4
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               os=sunos4
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               os=solaris2
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               os=vms
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               os=
-                               ;;
-               esac
-               ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       dec* | mips* | sequent* | encore* | pc532* | sgi* | sony* | \
-       att* | 7300* | 3300* | delta* | motorola* | sun[234]* | \
-       unicom* | ibm* | next | hp | isi* | apollo | altos* | \
-       convergent* | ncr* | news | 32* | 3600* | 3100* | hitachi* |\
-       c[123]* | convex* | sun | crds | omron* | dg | ultra | tti* | \
-       harris | dolphin | highlevel | gould | cbm | ns | masscomp | \
-       apple | axis | knuth | cray | microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       sim | cisco | oki | wec | winbond)
-               os=
-               basic_machine=$1
-               ;;
-       scout)
-               ;;
-       wrs)
-               os=vxworks
-               basic_machine=$1
-               ;;
-       chorusos*)
-               os=chorusos
-               basic_machine=$1
-               ;;
-       chorusrdb)
-               os=chorusrdb
-               basic_machine=$1
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       sco6)
-               os=sco5v6
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco5)
-               os=sco3.2v5
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco4)
-               os=sco3.2v4
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       sco*)
-               os=sco3.2v2
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       udk*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       isc)
-               os=isc2.2
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       isc*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       ptx*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       psos*)
-               os=psos
-               ;;
-       mint | mint[0-9]*)
-               basic_machine=m68k-atari
-               os=mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \
-       | avr | avr32 \
-       | ba \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper | csky \
-       | d10v | d30v | dlx | dsp16xx \
-       | e2k | epiphany \
-       | fido | fr30 | frv | ft32 \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia16 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nfp \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
-       | pdp10 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pru \
-       | pyramid \
-       | riscv32 | riscv64 \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | visium \
-       | wasm32 \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=${os:-none}
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
-               ;;
-       m9s12z | m68hcs12z | hcs12z | s12z)
-               basic_machine=s12z-unknown
-               os=${os:-none}
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=${os:-none}
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | ba-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | e2k-* | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nfp-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | or1k*-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pru-* \
-       | pyramid-* \
-       | riscv32-* | riscv64-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | visium-* \
-       | wasm32-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       asmjs)
-               basic_machine=asmjs-unknown
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=${os:-unicos}
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=bsd
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=${os:-elf}
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=${os:-elf}
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=${os:-bosx}
-               ;;
-       dpx2*)
-               basic_machine=m68k-bull
-               os=sysv3
-               ;;
-       e500v[12])
-               basic_machine=powerpc-unknown
-               os=$os"spe"
-               ;;
-       e500v[12]-*)
-               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=$os"spe"
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=${os:-bsd}
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=hiuxwe2
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=solaris2
-               ;;
-       j90 | j90-cray)
-               basic_machine=j90-cray
-               os=${os:-unicos}
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   irix*)
-                       ;;
-                   *)
-                       os=irix4
-                       ;;
-               esac
-               ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=linux
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       ms1-*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=newsos
-               ;;
-       next | m*-next)
-               basic_machine=m68k-next
-               case $os in
-                   nextstep* )
-                       ;;
-                   ns2*)
-                     os=nextstep2
-                       ;;
-                   *)
-                     os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       nsv-tandem)
-               basic_machine=nsv-tandem
-               ;;
-       nsx-tandem)
-               basic_machine=nsx-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=hiuxwe2
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=${os:-elf}
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       simso-wrs)
-               basic_machine=sparclite-wrs
-               os=vxworks
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=proelf
-               ;;
-       x64)
-               basic_machine=x86_64-pc
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
-               ;;
-       none)
-               basic_machine=none-none
-               os=${os:-none}
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x$os != x ]
-then
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       solaris1 | solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       # sysv* is not here because it comes later, after sysvr4.
-       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | sco* | esix* | isc* | aix* | cnk* | sunos | sunos[34]*\
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* | kopensolaris* | plan9* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | rtu* | xenix* \
-            | hiux* | knetbsd* | mirbsd* | netbsd* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* \
-            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusos* | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | psos* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-            | linux-newlib* | linux-musl* | linux-uclibc* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* \
-            | morphos* | superux* | rtmk* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=nto-$os
-                       ;;
-               esac
-               ;;
-       nto-qnx*)
-               ;;
-       nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       sim | xray | os68k* | v88r* \
-           | windows* | osx | abug | netware* | os9* \
-           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-               ;;
-       mac*)
-               os=`echo "$os" | sed -e 's|mac|macos|'`
-               ;;
-       linux-dietlibc)
-               os=linux-dietlibc
-               ;;
-       linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       sunos5*)
-               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
-               ;;
-       sunos6*)
-               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       nsk*)
-               os=nsk
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       # This must come after sysvr4.
-       sysv*)
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       zvmoe)
-               os=zvmoe
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $basic_machine in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       nacl*)
-               ;;
-       ios)
-               ;;
-       none)
-               ;;
-       *-eabi)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               os=linux
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *)
-               os=none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       riscix*)
-                               vendor=acorn
-                               ;;
-                       sunos*)
-                               vendor=sun
-                               ;;
-                       cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       beos*)
-                               vendor=be
-                               ;;
-                       hpux*)
-                               vendor=hp
-                               ;;
-                       mpeix*)
-                               vendor=hp
-                               ;;
-                       hiux*)
-                               vendor=hitachi
-                               ;;
-                       unos*)
-                               vendor=crds
-                               ;;
-                       dgux*)
-                               vendor=dg
-                               ;;
-                       luna*)
-                               vendor=omron
-                               ;;
-                       genix*)
-                               vendor=ns
-                               ;;
-                       mvs* | opened*)
-                               vendor=ibm
-                               ;;
-                       os400*)
-                               vendor=ibm
-                               ;;
-                       ptx*)
-                               vendor=sequent
-                               ;;
-                       tpf*)
-                               vendor=ibm
-                               ;;
-                       vxsim* | vxworks* | windiss*)
-                               vendor=wrs
-                               ;;
-                       aux*)
-                               vendor=apple
-                               ;;
-                       hms*)
-                               vendor=hitachi
-                               ;;
-                       mpw* | macos*)
-                               vendor=apple
-                               ;;
-                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo "$basic_machine-$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20181116 b/support/config.sub.20181116
deleted file mode 100755 (executable)
index f208558..0000000
+++ /dev/null
@@ -1,1790 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-08-29'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2018 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-IFS="-" read -r field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               os=sysv3
-                               ;;
-                       hp300)
-                               basic_machine=m68k-hp
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               os=bsd
-                               ;;
-                       hp300hpux)
-                               basic_machine=m68k-hp
-                               os=hpux
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               os=mach
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               os=vsta
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               os=linux
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               os=vms
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               os=
-                               ;;
-               esac
-               ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
-               ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
-               ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
-               ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
-               ;;
-
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
-               ;;
-       3b*)
-               cpu=we32k
-               vendor=att
-               ;;
-       bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               os=cnk
-               ;;
-       decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               os=tops10
-               ;;
-       decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
-               ;;
-       dpx2*)
-               cpu=m68k
-               vendor=bull
-               os=sysv3
-               ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
-               ;;
-       elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               os=${os:-bsd}
-               ;;
-       fx2800)
-               cpu=i860
-               vendor=alliant
-               ;;
-       genix)
-               cpu=ns32k
-               vendor=ns
-               ;;
-       h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
-               ;;
-       hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       i*86v32)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv32
-               ;;
-       i*86v4*)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv4
-               ;;
-       i*86v)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv
-               ;;
-       i*86sol2)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=solaris2
-               ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               os=${os:-unicos}
-               ;;
-       iris | iris4d)
-               cpu=mips
-               vendor=sgi
-               case $os in
-                   irix*)
-                       ;;
-                   *)
-                       os=irix4
-                       ;;
-               esac
-               ;;
-       miniframe)
-               cpu=m68000
-               vendor=convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               os=mint
-               ;;
-       news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               os=newsos
-               ;;
-       next | m*-next)
-               cpu=m68k
-               vendor=next
-               case $os in
-                   nextstep* )
-                       ;;
-                   ns2*)
-                     os=nextstep2
-                       ;;
-                   *)
-                     os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               cpu=np1
-               vendor=gould
-               ;;
-       op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               os=proelf
-               ;;
-       pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
-               ;;
-       pbd)
-               cpu=sparc
-               vendor=tti
-               ;;
-       pbb)
-               cpu=m68k
-               vendor=tti
-               ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
-               ;;
-       pn)
-               cpu=pn
-               vendor=gould
-               ;;
-       power)
-               cpu=power
-               vendor=ibm
-               ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
-               ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
-               ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
-               ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               os=${os:-elf}
-               ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               os=vxworks
-               ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
-               ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
-               ;;
-       w65)
-               cpu=w65
-               vendor=wdc
-               ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               os=proelf
-               ;;
-       none)
-               cpu=none
-               vendor=none
-               ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
-               ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=`echo "$basic_machine" | sed 's/-.*//'`
-               ;;
-
-       *-*)
-               IFS="-" read -r cpu vendor <<EOF
-$basic_machine
-EOF
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
-               ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
-               ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
-               ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
-               ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               os=${os:-unicosmp}
-               ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               os=${os:-unicos}
-               ;;
-       fx80-unknown)
-               vendor=alliant
-               ;;
-       romp-unknown)
-               vendor=ibm
-               ;;
-       mmix-unknown)
-               vendor=knuth
-               ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
-               ;;
-       rs6000-unknown)
-               vendor=ibm
-               ;;
-       vax-unknown)
-               vendor=dec
-               ;;
-       pdp11-unknown)
-               vendor=dec
-               ;;
-       we32k-unknown)
-               vendor=att
-               ;;
-       cydra-unknown)
-               vendor=cydrome
-               ;;
-       i370-ibm*)
-               vendor=ibm
-               ;;
-       orion-unknown)
-               vendor=highlevel
-               ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
-               ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               os=${os:-bosx}
-               ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
-               ;;
-       blackfin-*)
-               cpu=bfin
-               os=linux
-               ;;
-       c54x-*)
-               cpu=tic54x
-               ;;
-       c55x-*)
-               cpu=tic55x
-               ;;
-       c6x-*)
-               cpu=tic6x
-               ;;
-       e500v[12]-*)
-               cpu=powerpc
-               os=$os"spe"
-               ;;
-       mips3*-*)
-               cpu=mips64
-               ;;
-       ms1-*)
-               cpu=mt
-               ;;
-       m68knommu-*)
-               cpu=m68k
-               os=linux
-               ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
-               ;;
-       openrisc-*)
-               cpu=or32
-               ;;
-       parisc-*)
-               cpu=hppa
-               os=linux
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
-               ;;
-       pentium4-*)
-               cpu=i786
-               ;;
-       pc98-*)
-               cpu=i386
-               ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
-               ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
-               ;;
-       ppc64-*)
-               cpu=powerpc64
-               ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
-               ;;
-       sb1-*)
-               cpu=mipsisa64sb1
-               ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
-               ;;
-       sh5e[lb]-*)
-               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
-               ;;
-       spur-*)
-               cpu=spur
-               ;;
-       strongarm-* | thumb-*)
-               cpu=arm
-               ;;
-       tx39-*)
-               cpu=mipstx39
-               ;;
-       tx39el-*)
-               cpu=mipstx39el
-               ;;
-       x64-*)
-               cpu=x86_64
-               ;;
-       xscale-* | xscalee[bl]-*)
-               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
-               ;;
-
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               os=${os:-elf}
-               ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
-               ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
-               ;;
-       crx-*)
-               os=${os:-elf}
-               ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
-               ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
-               ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
-               ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
-               ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
-               ;;
-       s390-*)
-               cpu=s390
-               vendor=ibm
-               ;;
-       s390x-*)
-               cpu=s390x
-               vendor=ibm
-               ;;
-       tile*-*)
-               os=${os:-linux-gnu}
-               ;;
-
-       *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | arc | arceb \
-                       | arm  | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | score \
-                       | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | wasm32 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
-               ;;
-       commodore*)
-               vendor=cbm
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x$os != x ]
-then
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               ;;
-       sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       # sysv* is not here because it comes later, after sysvr4.
-       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* | kopensolaris* | plan9* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | knetbsd* | mirbsd* | netbsd* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* \
-            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-            | linux-newlib* | linux-musl* | linux-uclibc* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* \
-            | morphos* | superux* | rtmk* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       qnx*)
-               case $cpu in
-                   x86 | i*86)
-                       ;;
-                   *)
-                       os=nto-$os
-                       ;;
-               esac
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       nto-qnx*)
-               ;;
-       nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       sim | xray | os68k* | v88r* \
-           | windows* | osx | abug | netware* | os9* \
-           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-               ;;
-       linux-dietlibc)
-               os=linux-dietlibc
-               ;;
-       linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac*)
-               os=`echo "$os" | sed -e 's|mac|macos|'`
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       sunos5*)
-               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
-               ;;
-       sunos6*)
-               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       nsk*)
-               os=nsk
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       # This must come after sysvr4.
-       sysv*)
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       zvmoe)
-               os=zvmoe
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $cpu in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       nacl*)
-               ;;
-       ios)
-               ;;
-       none)
-               ;;
-       *-eabi)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $cpu-$vendor in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               os=linux
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
-               ;;
-       *)
-               os=none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
-               case $os in
-                       riscix*)
-                               vendor=acorn
-                               ;;
-                       sunos*)
-                               vendor=sun
-                               ;;
-                       cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       beos*)
-                               vendor=be
-                               ;;
-                       hpux*)
-                               vendor=hp
-                               ;;
-                       mpeix*)
-                               vendor=hp
-                               ;;
-                       hiux*)
-                               vendor=hitachi
-                               ;;
-                       unos*)
-                               vendor=crds
-                               ;;
-                       dgux*)
-                               vendor=dg
-                               ;;
-                       luna*)
-                               vendor=omron
-                               ;;
-                       genix*)
-                               vendor=ns
-                               ;;
-                       clix*)
-                               vendor=intergraph
-                               ;;
-                       mvs* | opened*)
-                               vendor=ibm
-                               ;;
-                       os400*)
-                               vendor=ibm
-                               ;;
-                       ptx*)
-                               vendor=sequent
-                               ;;
-                       tpf*)
-                               vendor=ibm
-                               ;;
-                       vxsim* | vxworks* | windiss*)
-                               vendor=wrs
-                               ;;
-                       aux*)
-                               vendor=apple
-                               ;;
-                       hms*)
-                               vendor=hitachi
-                               ;;
-                       mpw* | macos*)
-                               vendor=apple
-                               ;;
-                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               ;;
-esac
-
-echo "$cpu-$vendor-$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20200508 b/support/config.sub.20200508
deleted file mode 100755 (executable)
index 973a298..0000000
+++ /dev/null
@@ -1,1793 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-05-04'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-# shellcheck disable=SC2162
-IFS="-" read field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               os=sysv3
-                               ;;
-                       hp300 | hp300hpux)
-                               basic_machine=m68k-hp
-                               os=hpux
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               os=bsd
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               os=mach
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               os=linux
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               os=vms
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               os=vsta
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               os=
-                               ;;
-               esac
-               ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
-               ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
-               ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
-               ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
-               ;;
-
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
-               ;;
-       3b*)
-               cpu=we32k
-               vendor=att
-               ;;
-       bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               os=cnk
-               ;;
-       decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               os=tops10
-               ;;
-       decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
-               ;;
-       dpx2*)
-               cpu=m68k
-               vendor=bull
-               os=sysv3
-               ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
-               ;;
-       elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               os=${os:-bsd}
-               ;;
-       fx2800)
-               cpu=i860
-               vendor=alliant
-               ;;
-       genix)
-               cpu=ns32k
-               vendor=ns
-               ;;
-       h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
-               ;;
-       hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       i*86v32)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv32
-               ;;
-       i*86v4*)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv4
-               ;;
-       i*86v)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv
-               ;;
-       i*86sol2)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=solaris2
-               ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               os=${os:-unicos}
-               ;;
-       iris | iris4d)
-               cpu=mips
-               vendor=sgi
-               case $os in
-                   irix*)
-                       ;;
-                   *)
-                       os=irix4
-                       ;;
-               esac
-               ;;
-       miniframe)
-               cpu=m68000
-               vendor=convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               os=mint
-               ;;
-       news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               os=newsos
-               ;;
-       next | m*-next)
-               cpu=m68k
-               vendor=next
-               case $os in
-                   openstep*)
-                       ;;
-                   nextstep*)
-                       ;;
-                   ns2*)
-                     os=nextstep2
-                       ;;
-                   *)
-                     os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               cpu=np1
-               vendor=gould
-               ;;
-       op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               os=proelf
-               ;;
-       pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
-               ;;
-       pbd)
-               cpu=sparc
-               vendor=tti
-               ;;
-       pbb)
-               cpu=m68k
-               vendor=tti
-               ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
-               ;;
-       pn)
-               cpu=pn
-               vendor=gould
-               ;;
-       power)
-               cpu=power
-               vendor=ibm
-               ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
-               ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
-               ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
-               ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               os=${os:-elf}
-               ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               os=vxworks
-               ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
-               ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
-               ;;
-       w65)
-               cpu=w65
-               vendor=wdc
-               ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               os=proelf
-               ;;
-       none)
-               cpu=none
-               vendor=none
-               ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
-               ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=`echo "$basic_machine" | sed 's/-.*//'`
-               ;;
-
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read cpu vendor <<EOF
-$basic_machine
-EOF
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
-               ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
-               ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
-               ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
-               ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               os=${os:-unicosmp}
-               ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               os=${os:-unicos}
-               ;;
-       fx80-unknown)
-               vendor=alliant
-               ;;
-       romp-unknown)
-               vendor=ibm
-               ;;
-       mmix-unknown)
-               vendor=knuth
-               ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
-               ;;
-       rs6000-unknown)
-               vendor=ibm
-               ;;
-       vax-unknown)
-               vendor=dec
-               ;;
-       pdp11-unknown)
-               vendor=dec
-               ;;
-       we32k-unknown)
-               vendor=att
-               ;;
-       cydra-unknown)
-               vendor=cydrome
-               ;;
-       i370-ibm*)
-               vendor=ibm
-               ;;
-       orion-unknown)
-               vendor=highlevel
-               ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
-               ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               os=${os:-bosx}
-               ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
-               ;;
-       blackfin-*)
-               cpu=bfin
-               os=linux
-               ;;
-       c54x-*)
-               cpu=tic54x
-               ;;
-       c55x-*)
-               cpu=tic55x
-               ;;
-       c6x-*)
-               cpu=tic6x
-               ;;
-       e500v[12]-*)
-               cpu=powerpc
-               os=$os"spe"
-               ;;
-       mips3*-*)
-               cpu=mips64
-               ;;
-       ms1-*)
-               cpu=mt
-               ;;
-       m68knommu-*)
-               cpu=m68k
-               os=linux
-               ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
-               ;;
-       openrisc-*)
-               cpu=or32
-               ;;
-       parisc-*)
-               cpu=hppa
-               os=linux
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
-               ;;
-       pentium4-*)
-               cpu=i786
-               ;;
-       pc98-*)
-               cpu=i386
-               ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
-               ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
-               ;;
-       ppc64-*)
-               cpu=powerpc64
-               ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
-               ;;
-       sb1-*)
-               cpu=mipsisa64sb1
-               ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
-               ;;
-       sh5e[lb]-*)
-               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
-               ;;
-       spur-*)
-               cpu=spur
-               ;;
-       strongarm-* | thumb-*)
-               cpu=arm
-               ;;
-       tx39-*)
-               cpu=mipstx39
-               ;;
-       tx39el-*)
-               cpu=mipstx39el
-               ;;
-       x64-*)
-               cpu=x86_64
-               ;;
-       xscale-* | xscalee[bl]-*)
-               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
-               ;;
-
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               os=${os:-elf}
-               ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
-               ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
-               ;;
-       crx-*)
-               os=${os:-elf}
-               ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
-               ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
-               ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
-               ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
-               ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
-               ;;
-       s390-*)
-               cpu=s390
-               vendor=ibm
-               ;;
-       s390x-*)
-               cpu=s390x
-               vendor=ibm
-               ;;
-       tile*-*)
-               os=${os:-linux-gnu}
-               ;;
-
-       *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | amdgcn \
-                       | arc | arceb \
-                       | arm  | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | score \
-                       | sh | shl \
-                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | w65 \
-                       | wasm32 | wasm64 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
-               ;;
-       commodore*)
-               vendor=cbm
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x$os != x ]
-then
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               ;;
-       sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       # sysv* is not here because it comes later, after sysvr4.
-       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* | kopensolaris* | plan9* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* | twizzler* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | knetbsd* | mirbsd* | netbsd* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
-            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-            | linux-newlib* | linux-musl* | linux-uclibc* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* \
-            | morphos* | superux* | rtmk* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       qnx*)
-               case $cpu in
-                   x86 | i*86)
-                       ;;
-                   *)
-                       os=nto-$os
-                       ;;
-               esac
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       nto-qnx*)
-               ;;
-       nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       sim | xray | os68k* | v88r* \
-           | windows* | osx | abug | netware* | os9* \
-           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-               ;;
-       linux-dietlibc)
-               os=linux-dietlibc
-               ;;
-       linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac*)
-               os=`echo "$os" | sed -e 's|mac|macos|'`
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       sunos5*)
-               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
-               ;;
-       sunos6*)
-               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       # This must come after sysvr4.
-       sysv*)
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       zvmoe)
-               os=zvmoe
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $cpu in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       nacl*)
-               ;;
-       ios)
-               ;;
-       none)
-               ;;
-       *-eabi)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $cpu-$vendor in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               os=linux
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
-               ;;
-       *)
-               os=none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
-               case $os in
-                       riscix*)
-                               vendor=acorn
-                               ;;
-                       sunos*)
-                               vendor=sun
-                               ;;
-                       cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       beos*)
-                               vendor=be
-                               ;;
-                       hpux*)
-                               vendor=hp
-                               ;;
-                       mpeix*)
-                               vendor=hp
-                               ;;
-                       hiux*)
-                               vendor=hitachi
-                               ;;
-                       unos*)
-                               vendor=crds
-                               ;;
-                       dgux*)
-                               vendor=dg
-                               ;;
-                       luna*)
-                               vendor=omron
-                               ;;
-                       genix*)
-                               vendor=ns
-                               ;;
-                       clix*)
-                               vendor=intergraph
-                               ;;
-                       mvs* | opened*)
-                               vendor=ibm
-                               ;;
-                       os400*)
-                               vendor=ibm
-                               ;;
-                       ptx*)
-                               vendor=sequent
-                               ;;
-                       tpf*)
-                               vendor=ibm
-                               ;;
-                       vxsim* | vxworks* | windiss*)
-                               vendor=wrs
-                               ;;
-                       aux*)
-                               vendor=apple
-                               ;;
-                       hms*)
-                               vendor=hitachi
-                               ;;
-                       mpw* | macos*)
-                               vendor=apple
-                               ;;
-                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               ;;
-esac
-
-echo "$cpu-$vendor-$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/config.sub.20201107 b/support/config.sub.20201107
deleted file mode 100755 (executable)
index c874b7a..0000000
+++ /dev/null
@@ -1,1853 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-# shellcheck disable=SC2162
-IFS="-" read field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               basic_os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               basic_os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               basic_os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               basic_os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               basic_os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               basic_os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               basic_os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               basic_os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               basic_os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               basic_os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               basic_os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               basic_os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               basic_os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               basic_os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               basic_os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               basic_os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               basic_os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               basic_os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               basic_os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               basic_os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               basic_os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               basic_os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               basic_os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               basic_os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               basic_os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               basic_os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               basic_os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               basic_os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               basic_os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               basic_os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               basic_os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               basic_os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               basic_os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               basic_os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               basic_os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               basic_os=sysv3
-                               ;;
-                       hp300 | hp300hpux)
-                               basic_machine=m68k-hp
-                               basic_os=hpux
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               basic_os=bsd
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               basic_os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               basic_os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               basic_os=mach
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               basic_os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               basic_os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               basic_os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               basic_os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               basic_os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               basic_os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               basic_os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               basic_os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               basic_os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               basic_os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               basic_os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               basic_os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               basic_os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               basic_os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               basic_os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               basic_os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               basic_os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               basic_os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               basic_os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               basic_os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               basic_os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               basic_os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               basic_os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               basic_os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               basic_os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               basic_os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               basic_os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               basic_os=linux
-                               ;;
-                       psp)
-                               basic_machine=mipsallegrexel-sony
-                               basic_os=psp
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               basic_os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               basic_os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               basic_os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               basic_os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               basic_os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               basic_os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               basic_os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               basic_os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               basic_os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               basic_os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               basic_os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               basic_os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               basic_os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               basic_os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               basic_os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               basic_os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               basic_os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               basic_os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               basic_os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               basic_os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               basic_os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               basic_os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               basic_os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               basic_os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               basic_os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               basic_os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               basic_os=vms
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               basic_os=vsta
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               basic_os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               basic_os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               basic_os=
-                               ;;
-               esac
-               ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
-               ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
-               ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
-               ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
-               ;;
-
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
-               ;;
-       3b*)
-               cpu=we32k
-               vendor=att
-               ;;
-       bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               basic_os=cnk
-               ;;
-       decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops10
-               ;;
-       decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
-               ;;
-       dpx2*)
-               cpu=m68k
-               vendor=bull
-               basic_os=sysv3
-               ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
-               ;;
-       elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               basic_os=${basic_os:-bsd}
-               ;;
-       fx2800)
-               cpu=i860
-               vendor=alliant
-               ;;
-       genix)
-               cpu=ns32k
-               vendor=ns
-               ;;
-       h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
-               ;;
-       hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       i*86v32)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv32
-               ;;
-       i*86v4*)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv4
-               ;;
-       i*86v)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv
-               ;;
-       i*86sol2)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=solaris2
-               ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               basic_os=${basic_os:-unicos}
-               ;;
-       iris | iris4d)
-               cpu=mips
-               vendor=sgi
-               case $basic_os in
-                   irix*)
-                       ;;
-                   *)
-                       basic_os=irix4
-                       ;;
-               esac
-               ;;
-       miniframe)
-               cpu=m68000
-               vendor=convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               basic_os=mint
-               ;;
-       news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               basic_os=newsos
-               ;;
-       next | m*-next)
-               cpu=m68k
-               vendor=next
-               case $basic_os in
-                   openstep*)
-                       ;;
-                   nextstep*)
-                       ;;
-                   ns2*)
-                     basic_os=nextstep2
-                       ;;
-                   *)
-                     basic_os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               cpu=np1
-               vendor=gould
-               ;;
-       op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               basic_os=proelf
-               ;;
-       pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       pbd)
-               cpu=sparc
-               vendor=tti
-               ;;
-       pbb)
-               cpu=m68k
-               vendor=tti
-               ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
-               ;;
-       pn)
-               cpu=pn
-               vendor=gould
-               ;;
-       power)
-               cpu=power
-               vendor=ibm
-               ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
-               ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
-               ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
-               ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               basic_os=${basic_os:-elf}
-               ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               basic_os=vxworks
-               ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
-               ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
-               ;;
-       w65)
-               cpu=w65
-               vendor=wdc
-               ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               basic_os=proelf
-               ;;
-       none)
-               cpu=none
-               vendor=none
-               ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
-               ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=$(echo "$basic_machine" | sed 's/-.*//')
-               ;;
-
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read cpu vendor <<EOF
-$basic_machine
-EOF
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
-               ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
-               ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
-               ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
-               ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               basic_os=${basic_os:-unicosmp}
-               ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               basic_os=${Basic_os:-unicos}
-               ;;
-       fx80-unknown)
-               vendor=alliant
-               ;;
-       romp-unknown)
-               vendor=ibm
-               ;;
-       mmix-unknown)
-               vendor=knuth
-               ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
-               ;;
-       rs6000-unknown)
-               vendor=ibm
-               ;;
-       vax-unknown)
-               vendor=dec
-               ;;
-       pdp11-unknown)
-               vendor=dec
-               ;;
-       we32k-unknown)
-               vendor=att
-               ;;
-       cydra-unknown)
-               vendor=cydrome
-               ;;
-       i370-ibm*)
-               vendor=ibm
-               ;;
-       orion-unknown)
-               vendor=highlevel
-               ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
-               ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               basic_os=${basic_os:-bosx}
-               ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
-               ;;
-       blackfin-*)
-               cpu=bfin
-               basic_os=linux
-               ;;
-       c54x-*)
-               cpu=tic54x
-               ;;
-       c55x-*)
-               cpu=tic55x
-               ;;
-       c6x-*)
-               cpu=tic6x
-               ;;
-       e500v[12]-*)
-               cpu=powerpc
-               basic_os=${basic_os}"spe"
-               ;;
-       mips3*-*)
-               cpu=mips64
-               ;;
-       ms1-*)
-               cpu=mt
-               ;;
-       m68knommu-*)
-               cpu=m68k
-               basic_os=linux
-               ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
-               ;;
-       openrisc-*)
-               cpu=or32
-               ;;
-       parisc-*)
-               cpu=hppa
-               basic_os=linux
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
-               ;;
-       pentium4-*)
-               cpu=i786
-               ;;
-       pc98-*)
-               cpu=i386
-               ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
-               ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
-               ;;
-       ppc64-*)
-               cpu=powerpc64
-               ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
-               ;;
-       sb1-*)
-               cpu=mipsisa64sb1
-               ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
-               ;;
-       sh5e[lb]-*)
-               cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
-               ;;
-       spur-*)
-               cpu=spur
-               ;;
-       strongarm-* | thumb-*)
-               cpu=arm
-               ;;
-       tx39-*)
-               cpu=mipstx39
-               ;;
-       tx39el-*)
-               cpu=mipstx39el
-               ;;
-       x64-*)
-               cpu=x86_64
-               ;;
-       xscale-* | xscalee[bl]-*)
-               cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
-               ;;
-       arm64-*)
-               cpu=aarch64
-               ;;
-
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
-               ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
-               ;;
-       crx-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
-               ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
-               ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
-               ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
-               ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
-               ;;
-       mipsallegrexel-sony)
-               cpu=mipsallegrexel
-               vendor=sony
-               ;;
-       tile*-*)
-               basic_os=${basic_os:-linux-gnu}
-               ;;
-
-       *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | amdgcn \
-                       | arc | arceb \
-                       | arm | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | s390 | s390x \
-                       | score \
-                       | sh | shl \
-                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | w65 \
-                       | wasm32 | wasm64 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
-               ;;
-       commodore*)
-               vendor=cbm
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if test x$basic_os != x
-then
-
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
-# set os.
-case $basic_os in
-       gnu/linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
-               ;;
-       os2-emx)
-               kernel=os2
-               os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
-               ;;
-       nto-qnx*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
-               ;;
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read kernel os <<EOF
-$basic_os
-EOF
-               ;;
-       # Default OS when just kernel was specified
-       nto*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto|qnx|')
-               ;;
-       linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|linux|gnu|')
-               ;;
-       *)
-               kernel=
-               os=$basic_os
-               ;;
-esac
-
-# Now, normalize the OS (knowing we just have one component, it's not a kernel,
-# etc.)
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
-               os=$(echo $os | sed -e 's|solaris1|sunos4|')
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
-               ;;
-       sco*v* | scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
-               ;;
-       qnx*)
-               os=qnx
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynxos*)
-               # don't get caught up in next wildcard
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac[0-9]*)
-               os=$(echo "$os" | sed -e 's|mac|macos|')
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       sunos5*)
-               os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
-               ;;
-       sunos6*)
-               os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=$(echo $os | sed -e 's|sinix|sysv|')
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $cpu in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       *)
-               # No normalization, but not necessarily accepted, that comes below.
-               ;;
-esac
-
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-kernel=
-case $cpu-$vendor in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               kernel=linux
-               os=gnu
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
-               ;;
-       *)
-               os=none
-               ;;
-esac
-
-fi
-
-# Now, validate our (potentially fixed-up) OS.
-case $os in
-       # Sometimes we do "kernel-abi", so those need to count as OSes.
-       musl* | newlib* | uclibc*)
-               ;;
-       # Likewise for "kernel-libc"
-       eabi | eabihf | gnueabi | gnueabihf)
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
-            | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
-            | mpw* | magic* | mmixware* | mon960* | lnews* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* | twizzler* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | mirbsd* | netbsd* | dicos* | openedition* | ose* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
-            | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | mint* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
-            | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
-               ;;
-       # This one is extra strict with allowed versions
-       sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       none)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# As a final step for OS-related things, validate the OS-kernel combination
-# (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
-               ;;
-       uclinux-uclibc* )
-               ;;
-       -dietlibc* | -newlib* | -musl* | -uclibc* )
-               # These are just libc implementations, not actual OSes, and thus
-               # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
-               exit 1
-               ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
-               ;;
-       nto-qnx*)
-               ;;
-       os2-emx)
-               ;;
-       *-eabi* | *-gnueabi*)
-               ;;
-       -*)
-               # Blank kernel with real OS is always fine.
-               ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
-               case $cpu-$os in
-                       *-riscix*)
-                               vendor=acorn
-                               ;;
-                       *-sunos*)
-                               vendor=sun
-                               ;;
-                       *-cnk* | *-aix*)
-                               vendor=ibm
-                               ;;
-                       *-beos*)
-                               vendor=be
-                               ;;
-                       *-hpux*)
-                               vendor=hp
-                               ;;
-                       *-mpeix*)
-                               vendor=hp
-                               ;;
-                       *-hiux*)
-                               vendor=hitachi
-                               ;;
-                       *-unos*)
-                               vendor=crds
-                               ;;
-                       *-dgux*)
-                               vendor=dg
-                               ;;
-                       *-luna*)
-                               vendor=omron
-                               ;;
-                       *-genix*)
-                               vendor=ns
-                               ;;
-                       *-clix*)
-                               vendor=intergraph
-                               ;;
-                       *-mvs* | *-opened*)
-                               vendor=ibm
-                               ;;
-                       *-os400*)
-                               vendor=ibm
-                               ;;
-                       s390-* | s390x-*)
-                               vendor=ibm
-                               ;;
-                       *-ptx*)
-                               vendor=sequent
-                               ;;
-                       *-tpf*)
-                               vendor=ibm
-                               ;;
-                       *-vxsim* | *-vxworks* | *-windiss*)
-                               vendor=wrs
-                               ;;
-                       *-aux*)
-                               vendor=apple
-                               ;;
-                       *-hms*)
-                               vendor=hitachi
-                               ;;
-                       *-mpw* | *-macos*)
-                               vendor=apple
-                               ;;
-                       *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       *-vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               ;;
-esac
-
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/support/texi2dvi-0.43 b/support/texi2dvi-0.43
deleted file mode 100755 (executable)
index 5439e08..0000000
+++ /dev/null
@@ -1,568 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
-# $Id: texi2dvi,v 0.43 1999/09/28 19:36:53 karl Exp $
-#
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, you can either send email to this
-# program's maintainer or write to: The Free Software Foundation,
-# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
-#
-# Original author: Noah Friedman <friedman@gnu.org>.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-# This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision: 0.43 $'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | sed -e 's!.*/!!'`
-version="texi2dvi (GNU Texinfo 4.0) $rcs_version
-
-Copyright (C) 1999 Free Software Foundation, Inc.
-There is NO warranty.  You may redistribute this software
-under the terms of the GNU General Public License.
-For more information about these matters, see the files named COPYING."
-
-usage="Usage: $program [OPTION]... FILE...
-
-Run each Texinfo or LaTeX FILE through TeX in turn until all
-cross-references are resolved, building all indices.  The directory
-containing each FILE is searched for included files.  The suffix of FILE
-is used to determine its language (LaTeX or Texinfo).
-
-Makeinfo is used to perform Texinfo macro expansion before running TeX
-when needed.
-
-Options:
-  -@                   Use @input instead of \input; for preloaded Texinfo.
-  -b, --batch          No interaction.
-  -c, --clean          Remove all auxiliary files.
-  -D, --debug          Turn on shell debugging (set -x).
-  -e, --expand         Force macro expansion using makeinfo.
-  -I DIR               Search DIR for Texinfo files.
-  -h, --help           Display this help and exit successfully.
-  -l, --language=LANG  Specify the LANG of FILE: LaTeX or Texinfo.
-  -p, --pdf            Use pdftex or pdflatex for processing.
-  -q, --quiet          No output unless errors (implies --batch).
-  -s, --silent         Same as --quiet.
-  -t, --texinfo=CMD    Insert CMD after @setfilename in copy of input file.
-                       Multiple values accumulate.
-  -v, --version        Display version information and exit successfully.
-  -V, --verbose        Report on what is done.
-
-The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
-TEX (or PDFTEX), and TEXINDEX environment variables are used to run
-those commands, if they are set.
-
-Email bug reports to <bug-texinfo@gnu.org>,
-general questions and discussion to <help-texinfo@gnu.org>."
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-escape='\'
-batch=false     # eval for batch mode
-clean=
-debug=
-expand=         # t for expansion via makeinfo
-oformat=dvi
-set_language=
-miincludes=     # makeinfo include path
-textra=
-tmpdir=${TMPDIR:-/tmp}/t2d$$  # avoid collisions on 8.3 filesystems.
-txincludes=     # TEXINPUTS extensions
-txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
-quiet=          # by default let the tools' message be displayed
-verbose=false   # echo for verbose mode
-
-orig_pwd=`pwd`
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS.
-if test -n "$COMSPEC$ComSpec"; then
-  path_sep=";"
-else
-  path_sep=":"
-fi
-
-# Save this so we can construct a new TEXINPUTS path for each file.
-TEXINPUTS_orig="$TEXINPUTS"
-# Unfortunately makeindex does not read TEXINPUTS.
-INDEXSTYLE_orig="$INDEXSTYLE"
-export TEXINPUTS INDEXSTYLE
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-# \f
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
-  # Handle --option=value by splitting apart and putting back on argv.
-  case "$1" in
-    --*=*)
-      opt=`echo "$1" | sed -e 's/=.*//'`
-      val=`echo "$1" | sed -e 's/[^=]*=//'`
-      shift
-      set dummy "$opt" "$val" ${1+"$@"}; shift
-      ;;
-  esac
-
-  # This recognizes --quark as --quiet.  So what.
-  case "$1" in
-    -@ ) escape=@;;
-    # Silently and without documentation accept -b and --b[atch] as synonyms.
-    -b | --b*) batch=eval;;
-    -q | -s | --q* | --s*) quiet=t; batch=eval;;
-    -c | --c*) clean=t;;
-    -D | --d*) debug=t;;
-    -e | --e*) expand=t;;
-    -h | --h*) echo "$usage"; exit 0;;
-    -I | --I*)
-      shift
-      miincludes="$miincludes -I $1"
-      txincludes="$txincludes$path_sep$1"
-      ;;
-    -l | --l*) shift; set_language=$1;;
-    -p | --p*) oformat=pdf;;
-    -t | --t*) shift; textra="$textra\\
-$1";;
-    -v | --vers*) echo "$version"; exit 0;;
-    -V | --verb*) verbose=echo;;
-    --) # What remains are not options.
-      shift
-      while test x"$1" != x"$arg_sep"; do
-        set dummy ${1+"$@"} "$1"; shift
-        shift
-      done
-      break;;
-    -*)
-      echo "$0: Unknown or ambiguous option \`$1'." >&2
-      echo "$0: Try \`--help' for more information." >&2
-      exit 1;;
-    *) set dummy ${1+"$@"} "$1"; shift;;
-   esac
-   shift
-done
-# Pop the token
-shift
-
-# Interpret remaining command line args as filenames.
-if test $# = 0; then
-  echo "$0: Missing file arguments." >&2
-  echo "$0: Try \`--help' for more information." >&2
-  exit 2
-fi
-
-# Prepare the temporary directory.  Remove it at exit, unless debugging.
-if test -z "$debug"; then
-  trap "cd / && rm -rf $tmpdir" 0 1 2 15
-fi
-
-# Create the temporary directory with strict rights
-(umask 077 && mkdir $tmpdir) || exit 1
-
-# Prepare the tools we might need.  This may be extra work in some
-# cases, but improves the readibility of the script.
-utildir=$tmpdir/utils
-mkdir $utildir || exit 1
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only.  We want to remove non TeX sections, and
-# comment (with `@c texi2dvi') TeX sections so that makeinfo does not
-# try to parse them.  Nevertheless, while commenting TeX sections,
-# don't comment @macro/@end macro so that makeinfo does propagate
-# them.  Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
-# doesn't work well enough (yet) to use that, so work around with sed.
-comment_iftex_sed=$utildir/comment.sed
-cat <<EOF >$comment_iftex_sed
-/^@tex/,/^@end tex/{
-  s/^/@c texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
-  s/^/@c texi2dvi/
-  /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
-    s/^@c texi2dvi//
-  }
-}
-/^@html/,/^@end html/d
-/^@ifhtml/,/^@end ifhtml/d
-/^@ifnottex/,/^@end ifnottex/d
-/^@ifinfo/,/^@end ifinfo/{
-  /^@node/p
-  /^@menu/,/^@end menu/p
-  d
-}
-EOF
-# Uncommenting is simple: Remove any leading `@c texi2dvi'.
-uncomment_iftex_sed=$utildir/uncomment.sed
-cat <<EOF >$uncomment_iftex_sed
-s/^@c texi2dvi//
-EOF
-
-# A shell script that computes the list of xref files.
-# Takes the filename (without extension) of which we look for xref
-# files as argument.  The index files must be reported last.
-get_xref_files=$utildir/get_xref.sh
-cat <<\EOF >$get_xref_files
-#! /bin/sh
-
-# Get list of xref files (indexes, tables and lists).
-# Find all files having root filename with a two-letter extension,
-# saves the ones that are really Texinfo-related files.  .?o? catches
-# LaTeX tables and lists.
-for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
-  # If file is empty, skip it.
-  test -s "$this_file" || continue
-  # If the file is not suitable to be an index or xref file, don't
-  # process it.  The file can't be if its first character is not a
-  # backslash or single quote.
-  first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
-  if test "x$first_character" = "x\\" \
-     || test "x$first_character" = "x'"; then
-    xref_files="$xref_files ./$this_file"
-  fi
-done
-echo "$xref_files"
-EOF
-chmod 500 $get_xref_files
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-
-# Tools' output.  If quiet, discard, else redirect to the message flow.
-if test "$quiet" = t; then
-  exec 5>/dev/null
-else
-  exec 5>&1
-fi
-
-# Enable tracing
-test "$debug" = t && set -x
-
-# \f
-# TeXify files.
-
-for command_line_filename in ${1+"$@"}; do
-  $verbose "Processing $command_line_filename ..."
-
-  # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
-  # prepend `./' in order to avoid that the tools take it as an option.
-  echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
-  || command_line_filename="./$command_line_filename"
-
-  # See if the file exists.  If it doesn't we're in trouble since, even
-  # though the user may be able to reenter a valid filename at the tex
-  # prompt (assuming they're attending the terminal), this script won't
-  # be able to find the right xref files and so forth.
-  if test ! -r "$command_line_filename"; then
-    echo "$0: Could not read $command_line_filename, skipping." >&2
-    continue
-  fi
-
-  # Get the name of the current directory.  We want the full path
-  # because in clean mode we are in tmp, in which case a relative
-  # path has no meaning.
-  filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
-  filename_dir=`cd "$filename_dir" >/dev/null && pwd`
-
-  # Strip directory part but leave extension.
-  filename_ext=`basename "$command_line_filename"`
-  # Strip extension.
-  filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
-  ext=`echo "$filename_ext" | sed 's/^.*\.//'`
-
-  # _src.  Use same basename since we want to generate aux files with
-  # the same basename as the manual.  If --expand, then output the
-  # macro-expanded file to here, else copy the original file.
-  tmpdir_src=$tmpdir/src
-  filename_src=$tmpdir_src/$filename_noext.$ext
-
-  # _xtr.  The file with the user's extra commands.
-  tmpdir_xtr=$tmpdir/xtr
-  filename_xtr=$tmpdir_xtr/$filename_noext.$ext
-
-  # _bak.  Copies of the previous xref files (another round is run if
-  # they differ from the new one).
-  tmpdir_bak=$tmpdir/bak
-
-  # Make all those directories and give up if we can't succeed.
-  mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
-
-  # Source file might include additional sources.  Put `.' and
-  # directory where source file(s) reside in TEXINPUTS before anything
-  # else.  `.' goes first to ensure that any old .aux, .cps,
-  # etc. files in ${directory} don't get used in preference to fresher
-  # files in `.'.  Include orig_pwd in case we are in clean mode, where
-  # we've cd'd to a temp directory.
-  common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
-   TEXINPUTS="$common$TEXINPUTS_orig"
-  INDEXSTYLE="$common$INDEXSTYLE_orig"
-
-  # If the user explicitly specified the language, use that.
-  # Otherwise, if the first line is \input texinfo, assume it's texinfo.
-  # Otherwise, guess from the file extension.
-  if test -n "$set_language"; then
-    language=$set_language
-  elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
-    language=texinfo
-  else
-    language=
-  fi
-
-  # Get the type of the file (latex or texinfo) from the given language
-  # we just guessed, or from the file extension if not set yet.
-  case ${language:-$filename_ext} in
-    [lL]a[tT]e[xX] | *.ltx | *.tex)
-      # Assume a LaTeX file.  LaTeX needs bibtex and uses latex for
-      # compilation.  No makeinfo.
-      bibtex=${BIBTEX:-bibtex}
-      makeinfo= # no point in running makeinfo on latex source.
-      texindex=${MAKEINDEX:-makeindex}
-      if test $oformat = dvi; then
-        tex=${LATEX:-latex}
-      else
-        tex=${PDFLATEX:-pdflatex}
-      fi
-      ;;
-
-    *)
-      # Assume a Texinfo file.  Texinfo files need makeinfo, texindex and tex.
-      bibtex=
-      texindex=${TEXINDEX:-texindex}
-      if test $oformat = dvi; then
-        tex=${TEX:-tex}
-      else
-        tex=${PDFTEX:-pdftex}
-      fi
-      # Unless required by the user, makeinfo expansion is wanted only
-      # if texinfo.tex is too old.
-      if test "$expand" = t; then
-        makeinfo=${MAKEINFO:-makeinfo}
-      else
-        # Check if texinfo.tex performs macro expansion by looking for
-        # its version.  The version is a date of the form YEAR-MO-DA.
-        # We don't need to use [0-9] to match the digits since anyway
-        # the comparison with $txiprereq, a number, will fail with non
-        # digits.
-        txiversion_tex=txiversion.tex
-        echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
-        # Run in the tmpdir to avoid leaving files.
-        eval `cd $tmpdir >/dev/null \
-                    && $tex $txiversion_tex 2>/dev/null \
-| sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
-        $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
-        if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
-          makeinfo=
-        else
-          makeinfo=${MAKEINFO:-makeinfo}
-        fi
-        # As long as we had to run TeX, offer the user this convenience
-        if test "$txiformat" = Texinfo; then
-          escape=@
-        fi
-      fi
-      ;;
-  esac
-
-  # Expand macro commands in the original source file using Makeinfo.
-  # Always use `end' footnote style, since the `separate' style
-  #   generates different output (arguably this is a bug in -E).
-  # Discard main info output, the user asked to run TeX, not makeinfo.
-  if test -n "$makeinfo"; then
-    $verbose "Macro-expanding $command_line_filename to $filename_src ..."
-    sed -f $comment_iftex_sed "$command_line_filename" \
-      | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
-        -o /dev/null --macro-expand=- \
-      | sed -f $uncomment_iftex_sed >"$filename_src"
-    filename_input=$filename_src
-  fi
-
-  # If makeinfo failed (or was not even run), use the original file as input.
-  if test $? -ne 0 \
-     || test ! -r "$filename_src"; then
-    $verbose "Reverting to $command_line_filename ..."
-    filename_input=$filename_dir/$filename_ext
-  fi
-
-  # Used most commonly for @finalout, @smallbook, etc.
-  if test -n "$textra"; then
-    $verbose "Inserting extra commands: $textra"
-    sed '/^@setfilename/a\
-'"$textra" "$filename_input" >$filename_xtr
-    filename_input=$filename_xtr
-  fi
-
-  # If clean mode was specified, then move to the temporary directory.
-  if test "$clean" = t; then
-    $verbose "cd $tmpdir_src"
-    cd "$tmpdir_src" || exit 1
-  fi
-
-  while :; do # will break out of loop below
-    orig_xref_files=`$get_xref_files "$filename_noext"`
-
-    # Save copies of originals for later comparison.
-    if test -n "$orig_xref_files"; then
-      $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
-      cp $orig_xref_files $tmpdir_bak
-    fi
-
-    # Run bibtex on current file.
-    # - If its input (AUX) exists.
-    # - If AUX contains both `\bibdata' and `\bibstyle'.
-    # - If some citations are missing (LOG contains `Citation').
-    #   or the LOG complains of a missing .bbl
-    #
-    # We run bibtex first, because I can see reasons for the indexes
-    # to change after bibtex is run, but I see no reason for the
-    # converse.
-    #
-    # Don't try to be too smart.  Running bibtex only if the bbl file
-    # exists and is older than the LaTeX file is wrong, since the
-    # document might include files that have changed.  Because there
-    # can be several AUX (if there are \include's), but a single LOG,
-    # looking for missing citations in LOG is easier, though we take
-    # the risk to match false messages.
-    if test -n "$bibtex" \
-       && test -r "$filename_noext.aux" \
-       && test -r "$filename_noext.log" \
-       && (grep '^\\bibdata[{]'  "$filename_noext.aux" \
-           && grep '^\\bibstyle[{]' "$filename_noext.aux" \
-           && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
-               || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
-          >/dev/null 2>&1; \
-    then
-      $verbose "Running $bibtex $filename_noext ..."
-      if $bibtex "$filename_noext" >&5; then :; else
-        echo "$0: $bibtex exited with bad status, quitting." >&2
-        exit 1
-      fi
-    fi
-
-    # What we'll run texindex on -- exclude non-index files.
-    # Since we know index files are last, it is correct to remove everything
-    # before .aux and .?o?.
-    index_files=`echo "$orig_xref_files" \
-                 | sed "s!.*\.aux!!g;
-                        s!./$filename_noext\..o.!!g;
-                        s/^[ ]*//;s/[ ]*$//"`
-    # Run texindex (or makeindex) on current index files.  If they
-    # already exist, and after running TeX a first time the index
-    # files don't change, then there's no reason to run TeX again.
-    # But we won't know that if the index files are out of date or
-    # nonexistent.
-    if test -n "$texindex" && test -n "$index_files"; then
-      $verbose "Running $texindex $index_files ..."
-      if $texindex $index_files 2>&5 1>&2; then :; else
-         echo "$0: $texindex exited with bad status, quitting." >&2
-         exit 1
-      fi
-    fi
-
-    # Finally, run TeX.
-    # Prevent $ESCAPE from being interpreted by the shell if it happens
-    # to be `/'.
-    $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
-    $verbose "Running $cmd ..."
-    cmd="$tex $tex_args $filename_input"
-    if $cmd >&5; then :; else
-      echo "$0: $tex exited with bad status, quitting." >&2
-      echo "$0: see $filename_noext.log for errors." >&2
-      test "$clean" = t \
-        && cp "$filename_noext.log" "$orig_pwd"
-      exit 1
-    fi
-
-
-    # Decide if looping again is needed.
-    finished=t
-
-    # LaTeX (and the package changebar) report in the LOG file if it
-    # should be rerun.  This is needed for files included from
-    # subdirs, since texi2dvi does not try to compare xref files in
-    # subdirs.  Performing xref files test is still good since LaTeX
-    # does not report changes in xref files.
-    if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
-      finished=
-    fi
-
-    # Check if xref files changed.
-    new_xref_files=`$get_xref_files "$filename_noext"`
-    $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
-    $verbose "New xref files      = `echo $new_xref_files | sed 's|\./||g'`"
-
-    # If old and new lists don't at least have the same file list,
-    # then one file or another has definitely changed.
-    test "x$orig_xref_files" != "x$new_xref_files" && finished=
-
-    # File list is the same.  We must compare each file until we find
-    # a difference.
-    if test -n "$finished"; then
-      for this_file in $new_xref_files; do
-        $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
-        # cmp -s returns nonzero exit status if files differ.
-        if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
-          # We only need to keep comparing until we find one that
-          # differs, because we'll have to run texindex & tex again no
-          # matter how many more there might be.
-          finished=
-          $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
-          test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
-          break
-        fi
-      done
-    fi
-
-    # If finished, exit the loop, else rerun the loop.
-    test -n "$finished" && break
-  done
-
-  # If we were in clean mode, compilation was in a tmp directory.
-  # Copy the DVI (or PDF) file into the directory where the compilation
-  # has been done.  (The temp dir is about to get removed anyway.)
-  # We also return to the original directory so that
-  # - the next file is processed in correct conditions
-  # - the temporary file can be removed
-  if test -n "$clean"; then
-    $verbose "Copying $oformat file from `pwd` to $orig_pwd"
-    cp -p "./$filename_noext.$oformat" "$orig_pwd"
-    cd / # in case $orig_pwd is on a different drive (for DOS)
-    cd $orig_pwd || exit 1
-  fi
-
-  # Remove temporary files.
-  if test "x$debug" = "x"; then
-    $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
-    cd /
-    rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
-  fi
-done
-
-$verbose "$0 done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/support/texi2dvi-0.46 b/support/texi2dvi-0.46
deleted file mode 100755 (executable)
index db09865..0000000
+++ /dev/null
@@ -1,604 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
-# $Id: texi2dvi,v 0.46 2001/06/07 18:43:25 karl Exp $
-#
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2001
-# Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, you can either send email to this
-# program's maintainer or write to: The Free Software Foundation,
-# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
-#
-# Original author: Noah Friedman <friedman@gnu.org>.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-# This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision: 0.46 $'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | sed -e 's!.*/!!'`
-version="texi2dvi (GNU Texinfo 4.0) $rcs_version
-
-Copyright (C) 1999 Free Software Foundation, Inc.
-There is NO warranty.  You may redistribute this software
-under the terms of the GNU General Public License.
-For more information about these matters, see the files named COPYING."
-
-usage="Usage: $program [OPTION]... FILE...
-
-Run each Texinfo or LaTeX FILE through TeX in turn until all
-cross-references are resolved, building all indices.  The directory
-containing each FILE is searched for included files.  The suffix of FILE
-is used to determine its language (LaTeX or Texinfo).
-
-Makeinfo is used to perform Texinfo macro expansion before running TeX
-when needed.
-
-Operation modes:
-  -b, --batch         no interaction
-  -c, --clean         remove all auxiliary files
-  -D, --debug         turn on shell debugging (set -x)
-  -h, --help          display this help and exit successfully
-  -o, --output=OFILE  leave output in OFILE (implies --clean);
-                      Only one input FILE may be specified in this case
-  -q, --quiet         no output unless errors (implies --batch)
-  -s, --silent        same as --quiet
-  -v, --version       display version information and exit successfully
-  -V, --verbose       report on what is done
-
-TeX tuning:
-  -@                   use @input instead of \input; for preloaded Texinfo
-  -e, --expand         force macro expansion using makeinfo
-  -I DIR               search DIR for Texinfo files
-  -l, --language=LANG  specify the LANG of FILE (LaTeX or Texinfo)
-  -p, --pdf            use pdftex or pdflatex for processing
-  -t, --texinfo=CMD    insert CMD after @setfilename in copy of input file
-                       multiple values accumulate
-
-The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
-TEX (or PDFTEX), and TEXINDEX environment variables are used to run
-those commands, if they are set.
-
-Email bug reports to <bug-texinfo@gnu.org>,
-general questions and discussion to <help-texinfo@gnu.org>."
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-batch=false     # eval for batch mode
-clean=
-debug=
-escape='\'
-expand=         # t for expansion via makeinfo
-miincludes=     # makeinfo include path
-oformat=dvi
-oname=         # --output
-quiet=          # by default let the tools' message be displayed
-set_language=
-textra=
-tmpdir=${TMPDIR:-/tmp}/t2d$$  # avoid collisions on 8.3 filesystems.
-txincludes=     # TEXINPUTS extensions
-txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
-verbose=false   # echo for verbose mode
-
-orig_pwd=`pwd`
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS.
-if test -n "$COMSPEC$ComSpec"; then
-  path_sep=";"
-else
-  path_sep=":"
-fi
-
-# Save this so we can construct a new TEXINPUTS path for each file.
-TEXINPUTS_orig="$TEXINPUTS"
-# Unfortunately makeindex does not read TEXINPUTS.
-INDEXSTYLE_orig="$INDEXSTYLE"
-export TEXINPUTS INDEXSTYLE
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-# \f
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
-  # Handle --option=value by splitting apart and putting back on argv.
-  case "$1" in
-    --*=*)
-      opt=`echo "$1" | sed -e 's/=.*//'`
-      val=`echo "$1" | sed -e 's/[^=]*=//'`
-      shift
-      set dummy "$opt" "$val" ${1+"$@"}; shift
-      ;;
-  esac
-
-  # This recognizes --quark as --quiet.  So what.
-  case "$1" in
-    -@ ) escape=@;;
-    # Silently and without documentation accept -b and --b[atch] as synonyms.
-    -b | --b*) batch=eval;;
-    -q | -s | --q* | --s*) quiet=t; batch=eval;;
-    -c | --c*) clean=t;;
-    -D | --d*) debug=t;;
-    -e | --e*) expand=t;;
-    -h | --h*) echo "$usage"; exit 0;;
-    -I | --I*)
-      shift
-      miincludes="$miincludes -I $1"
-      txincludes="$txincludes$path_sep$1"
-      ;;
-    -l | --l*) shift; set_language=$1;;
-    -o | --o*)
-      shift
-      clean=t
-      case "$1" in
-        /* | ?:/*) oname=$1;;
-                *) oname="$orig_pwd/$1";;
-      esac;;
-    -p | --p*) oformat=pdf;;
-    -t | --t*) shift; textra="$textra\\
-$1";;
-    -v | --vers*) echo "$version"; exit 0;;
-    -V | --verb*) verbose=echo;;
-    --) # What remains are not options.
-      shift
-      while test x"$1" != x"$arg_sep"; do
-        set dummy ${1+"$@"} "$1"; shift
-        shift
-      done
-      break;;
-    -*)
-      echo "$0: Unknown or ambiguous option \`$1'." >&2
-      echo "$0: Try \`--help' for more information." >&2
-      exit 1;;
-    *) set dummy ${1+"$@"} "$1"; shift;;
-   esac
-   shift
-done
-# Pop the token
-shift
-
-# Interpret remaining command line args as filenames.
-case $# in
- 0)
-  echo "$0: Missing file arguments." >&2
-  echo "$0: Try \`--help' for more information." >&2
-  exit 2
-  ;;
- 1) ;;
- *)
-  if test -n "$oname"; then
-    echo "$0: Can't use option \`--output' with more than one argument." >&2
-    exit 2
-  fi
-  ;;
-esac
-
-# Prepare the temporary directory.  Remove it at exit, unless debugging.
-if test -z "$debug"; then
-  trap "cd / && rm -rf $tmpdir" 0 1 2 15
-fi
-
-# Create the temporary directory with strict rights
-(umask 077 && mkdir $tmpdir) || exit 1
-
-# Prepare the tools we might need.  This may be extra work in some
-# cases, but improves the readibility of the script.
-utildir=$tmpdir/utils
-mkdir $utildir || exit 1
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only.  We want to remove non TeX sections, and
-# comment (with `@c texi2dvi') TeX sections so that makeinfo does not
-# try to parse them.  Nevertheless, while commenting TeX sections,
-# don't comment @macro/@end macro so that makeinfo does propagate
-# them.  Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
-# doesn't work well enough (yet) to use that, so work around with sed.
-comment_iftex_sed=$utildir/comment.sed
-cat <<EOF >$comment_iftex_sed
-/^@tex/,/^@end tex/{
-  s/^/@c texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
-  s/^/@c texi2dvi/
-  /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
-    s/^@c texi2dvi//
-  }
-}
-/^@html/,/^@end html/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifhtml/,/^@end ifhtml/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifnottex/,/^@end ifnottex/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifinfo/,/^@end ifinfo/{
-  /^@node/p
-  /^@menu/,/^@end menu/p
-  t
-  s/^/@c (texi2dvi)/
-}
-s/^@ifnotinfo/@c texi2dvi@ifnotinfo/
-s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/
-EOF
-# Uncommenting is simple: Remove any leading `@c texi2dvi'.
-uncomment_iftex_sed=$utildir/uncomment.sed
-cat <<EOF >$uncomment_iftex_sed
-s/^@c texi2dvi//
-EOF
-
-# A shell script that computes the list of xref files.
-# Takes the filename (without extension) of which we look for xref
-# files as argument.  The index files must be reported last.
-get_xref_files=$utildir/get_xref.sh
-cat <<\EOF >$get_xref_files
-#! /bin/sh
-
-# Get list of xref files (indexes, tables and lists).
-# Find all files having root filename with a two-letter extension,
-# saves the ones that are really Texinfo-related files.  .?o? catches
-# LaTeX tables and lists.
-for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
-  # If file is empty, skip it.
-  test -s "$this_file" || continue
-  # If the file is not suitable to be an index or xref file, don't
-  # process it.  The file can't be if its first character is not a
-  # backslash or single quote.
-  first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
-  if test "x$first_character" = "x\\" \
-     || test "x$first_character" = "x'"; then
-    xref_files="$xref_files ./$this_file"
-  fi
-done
-echo "$xref_files"
-EOF
-chmod 500 $get_xref_files
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-
-# Tools' output.  If quiet, discard, else redirect to the message flow.
-if test "$quiet" = t; then
-  exec 5>/dev/null
-else
-  exec 5>&1
-fi
-
-# Enable tracing
-test "$debug" = t && set -x
-
-# \f
-# TeXify files.
-
-for command_line_filename in ${1+"$@"}; do
-  $verbose "Processing $command_line_filename ..."
-
-  # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
-  # prepend `./' in order to avoid that the tools take it as an option.
-  echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
-  || command_line_filename="./$command_line_filename"
-
-  # See if the file exists.  If it doesn't we're in trouble since, even
-  # though the user may be able to reenter a valid filename at the tex
-  # prompt (assuming they're attending the terminal), this script won't
-  # be able to find the right xref files and so forth.
-  if test ! -r "$command_line_filename"; then
-    echo "$0: Could not read $command_line_filename, skipping." >&2
-    continue
-  fi
-
-  # Get the name of the current directory.  We want the full path
-  # because in clean mode we are in tmp, in which case a relative
-  # path has no meaning.
-  filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
-  filename_dir=`cd "$filename_dir" >/dev/null && pwd`
-
-  # Strip directory part but leave extension.
-  filename_ext=`basename "$command_line_filename"`
-  # Strip extension.
-  filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
-  ext=`echo "$filename_ext" | sed 's/^.*\.//'`
-
-  # _src.  Use same basename since we want to generate aux files with
-  # the same basename as the manual.  If --expand, then output the
-  # macro-expanded file to here, else copy the original file.
-  tmpdir_src=$tmpdir/src
-  filename_src=$tmpdir_src/$filename_noext.$ext
-
-  # _xtr.  The file with the user's extra commands.
-  tmpdir_xtr=$tmpdir/xtr
-  filename_xtr=$tmpdir_xtr/$filename_noext.$ext
-
-  # _bak.  Copies of the previous xref files (another round is run if
-  # they differ from the new one).
-  tmpdir_bak=$tmpdir/bak
-
-  # Make all those directories and give up if we can't succeed.
-  mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
-
-  # Source file might include additional sources.  Put `.' and
-  # directory where source file(s) reside in TEXINPUTS before anything
-  # else.  `.' goes first to ensure that any old .aux, .cps,
-  # etc. files in ${directory} don't get used in preference to fresher
-  # files in `.'.  Include orig_pwd in case we are in clean mode, where
-  # we've cd'd to a temp directory.
-  common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
-   TEXINPUTS="$common$TEXINPUTS_orig"
-  INDEXSTYLE="$common$INDEXSTYLE_orig"
-
-  # If the user explicitly specified the language, use that.
-  # Otherwise, if the first line is \input texinfo, assume it's texinfo.
-  # Otherwise, guess from the file extension.
-  if test -n "$set_language"; then
-    language=$set_language
-  elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
-    language=texinfo
-  else
-    language=
-  fi
-
-  # Get the type of the file (latex or texinfo) from the given language
-  # we just guessed, or from the file extension if not set yet.
-  case ${language:-$filename_ext} in
-    [lL]a[tT]e[xX] | *.ltx | *.tex)
-      # Assume a LaTeX file.  LaTeX needs bibtex and uses latex for
-      # compilation.  No makeinfo.
-      bibtex=${BIBTEX:-bibtex}
-      makeinfo= # no point in running makeinfo on latex source.
-      texindex=${MAKEINDEX:-makeindex}
-      if test $oformat = dvi; then
-        tex=${LATEX:-latex}
-      else
-        tex=${PDFLATEX:-pdflatex}
-      fi
-      ;;
-
-    *)
-      # Assume a Texinfo file.  Texinfo files need makeinfo, texindex and tex.
-      bibtex=
-      texindex=${TEXINDEX:-texindex}
-      if test $oformat = dvi; then
-        tex=${TEX:-tex}
-      else
-        tex=${PDFTEX:-pdftex}
-      fi
-      # Unless required by the user, makeinfo expansion is wanted only
-      # if texinfo.tex is too old.
-      if test "$expand" = t; then
-        makeinfo=${MAKEINFO:-makeinfo}
-      else
-        # Check if texinfo.tex performs macro expansion by looking for
-        # its version.  The version is a date of the form YEAR-MO-DA.
-        # We don't need to use [0-9] to match the digits since anyway
-        # the comparison with $txiprereq, a number, will fail with non
-        # digits.
-        txiversion_tex=txiversion.tex
-        echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
-        # Run in the tmpdir to avoid leaving files.
-        eval `cd $tmpdir >/dev/null &&
-              $tex $txiversion_tex 2>/dev/null |
-              sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
-        $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
-        if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
-          makeinfo=
-        else
-          makeinfo=${MAKEINFO:-makeinfo}
-        fi
-        # As long as we had to run TeX, offer the user this convenience
-        if test "$txiformat" = Texinfo; then
-          escape=@
-        fi
-      fi
-      ;;
-  esac
-
-  # Expand macro commands in the original source file using Makeinfo.
-  # Always use `end' footnote style, since the `separate' style
-  #   generates different output (arguably this is a bug in -E).
-  # Discard main info output, the user asked to run TeX, not makeinfo.
-  if test -n "$makeinfo"; then
-    $verbose "Macro-expanding $command_line_filename to $filename_src ..."
-    sed -f $comment_iftex_sed "$command_line_filename" \
-      | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
-        -o /dev/null --macro-expand=- \
-      | sed -f $uncomment_iftex_sed >"$filename_src"
-    filename_input=$filename_src
-  fi
-
-  # If makeinfo failed (or was not even run), use the original file as input.
-  if test $? -ne 0 \
-     || test ! -r "$filename_src"; then
-    $verbose "Reverting to $command_line_filename ..."
-    filename_input=$filename_dir/$filename_ext
-  fi
-
-  # Used most commonly for @finalout, @smallbook, etc.
-  if test -n "$textra"; then
-    $verbose "Inserting extra commands: $textra"
-    sed '/^@setfilename/a\
-'"$textra" "$filename_input" >$filename_xtr
-    filename_input=$filename_xtr
-  fi
-
-  # If clean mode was specified, then move to the temporary directory.
-  if test "$clean" = t; then
-    $verbose "cd $tmpdir_src"
-    cd "$tmpdir_src" || exit 1
-  fi
-
-  while :; do # will break out of loop below
-    orig_xref_files=`$get_xref_files "$filename_noext"`
-
-    # Save copies of originals for later comparison.
-    if test -n "$orig_xref_files"; then
-      $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
-      cp $orig_xref_files $tmpdir_bak
-    fi
-
-    # Run bibtex on current file.
-    # - If its input (AUX) exists.
-    # - If AUX contains both `\bibdata' and `\bibstyle'.
-    # - If some citations are missing (LOG contains `Citation').
-    #   or the LOG complains of a missing .bbl
-    #
-    # We run bibtex first, because I can see reasons for the indexes
-    # to change after bibtex is run, but I see no reason for the
-    # converse.
-    #
-    # Don't try to be too smart.  Running bibtex only if the bbl file
-    # exists and is older than the LaTeX file is wrong, since the
-    # document might include files that have changed.  Because there
-    # can be several AUX (if there are \include's), but a single LOG,
-    # looking for missing citations in LOG is easier, though we take
-    # the risk to match false messages.
-    if test -n "$bibtex" \
-       && test -r "$filename_noext.aux" \
-       && test -r "$filename_noext.log" \
-       && (grep '^\\bibdata[{]'  "$filename_noext.aux" \
-           && grep '^\\bibstyle[{]' "$filename_noext.aux" \
-           && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
-               || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
-          >/dev/null 2>&1; \
-    then
-      $verbose "Running $bibtex $filename_noext ..."
-      if $bibtex "$filename_noext" >&5; then :; else
-        echo "$0: $bibtex exited with bad status, quitting." >&2
-        exit 1
-      fi
-    fi
-
-    # What we'll run texindex on -- exclude non-index files.
-    # Since we know index files are last, it is correct to remove everything
-    # before .aux and .?o?.
-    index_files=`echo "$orig_xref_files" \
-                 | sed "s!.*\.aux!!g;
-                        s!./$filename_noext\..o.!!g;
-                        s/^[ ]*//;s/[ ]*$//"`
-    # Run texindex (or makeindex) on current index files.  If they
-    # already exist, and after running TeX a first time the index
-    # files don't change, then there's no reason to run TeX again.
-    # But we won't know that if the index files are out of date or
-    # nonexistent.
-    if test -n "$texindex" && test -n "$index_files"; then
-      $verbose "Running $texindex $index_files ..."
-      if $texindex $index_files 2>&5 1>&2; then :; else
-         echo "$0: $texindex exited with bad status, quitting." >&2
-         exit 1
-      fi
-    fi
-
-    # Finally, run TeX.
-    # Prevent $ESCAPE from being interpreted by the shell if it happens
-    # to be `/'.
-    $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
-    $verbose "Running $cmd ..."
-    cmd="$tex $tex_args $filename_input"
-    if $cmd >&5; then :; else
-      echo "$0: $tex exited with bad status, quitting." >&2
-      echo "$0: see $filename_noext.log for errors." >&2
-      test "$clean" = t \
-        && cp "$filename_noext.log" "$orig_pwd"
-      exit 1
-    fi
-
-
-    # Decide if looping again is needed.
-    finished=t
-
-    # LaTeX (and the package changebar) report in the LOG file if it
-    # should be rerun.  This is needed for files included from
-    # subdirs, since texi2dvi does not try to compare xref files in
-    # subdirs.  Performing xref files test is still good since LaTeX
-    # does not report changes in xref files.
-    if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
-      finished=
-    fi
-
-    # Check if xref files changed.
-    new_xref_files=`$get_xref_files "$filename_noext"`
-    $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
-    $verbose "New xref files      = `echo $new_xref_files | sed 's|\./||g'`"
-
-    # If old and new lists don't at least have the same file list,
-    # then one file or another has definitely changed.
-    test "x$orig_xref_files" != "x$new_xref_files" && finished=
-
-    # File list is the same.  We must compare each file until we find
-    # a difference.
-    if test -n "$finished"; then
-      for this_file in $new_xref_files; do
-        $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
-        # cmp -s returns nonzero exit status if files differ.
-        if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
-          # We only need to keep comparing until we find one that
-          # differs, because we'll have to run texindex & tex again no
-          # matter how many more there might be.
-          finished=
-          $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
-          test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
-          break
-        fi
-      done
-    fi
-
-    # If finished, exit the loop, else rerun the loop.
-    test -n "$finished" && break
-  done
-
-  # If we were in clean mode, compilation was in a tmp directory.
-  # Copy the DVI (or PDF) file into the directory where the compilation
-  # has been done.  (The temp dir is about to get removed anyway.)
-  # We also return to the original directory so that
-  # - the next file is processed in correct conditions
-  # - the temporary file can be removed
-  if test -n "$clean"; then
-    if test -n "$oname"; then
-       dest=$oname
-    else
-       dest=$orig_pwd
-    fi
-    $verbose "Copying $oformat file from `pwd` to $dest"
-    cp -p "./$filename_noext.$oformat" "$dest"
-    cd / # in case $orig_pwd is on a different drive (for DOS)
-    cd $orig_pwd || exit 1
-  fi
-
-  # Remove temporary files.
-  if test "x$debug" = "x"; then
-    $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
-    cd /
-    rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
-  fi
-done
-
-$verbose "$0 done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/support/texi2dvi-1.14 b/support/texi2dvi-1.14
deleted file mode 100755 (executable)
index 83c0842..0000000
+++ /dev/null
@@ -1,658 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
-# $Id: texi2dvi,v 1.14 2003/02/05 00:42:33 karl Exp $
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
-# 2002, 2003 Free Software Foundation, Inc.
-#
-#   This program is free software: you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation, either version 3 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Original author: Noah Friedman <friedman@gnu.org>.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-# This string is expanded by rcs automatically when this file is checked out.
-rcs_revision='$Revision: 1.14 $'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | sed -e 's!.*/!!'`
-version="texi2dvi (GNU Texinfo 4.5) $rcs_version
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-There is NO warranty.  You may redistribute this software
-under the terms of the GNU General Public License.
-For more information about these matters, see the files named COPYING."
-
-usage="Usage: $program [OPTION]... FILE...
-
-Run each Texinfo or LaTeX FILE through TeX in turn until all
-cross-references are resolved, building all indices.  The directory
-containing each FILE is searched for included files.  The suffix of FILE
-is used to determine its language (LaTeX or Texinfo).
-
-Makeinfo is used to perform Texinfo macro expansion before running TeX
-when needed.
-
-Operation modes:
-  -b, --batch         no interaction
-  -c, --clean         remove all auxiliary files
-  -D, --debug         turn on shell debugging (set -x)
-  -h, --help          display this help and exit successfully
-  -o, --output=OFILE  leave output in OFILE (implies --clean);
-                      Only one input FILE may be specified in this case
-  -q, --quiet         no output unless errors (implies --batch)
-  -s, --silent        same as --quiet
-  -v, --version       display version information and exit successfully
-  -V, --verbose       report on what is done
-
-TeX tuning:
-  -@                   use @input instead of \input; for preloaded Texinfo
-  -e, -E, --expand     force macro expansion using makeinfo
-  -I DIR               search DIR for Texinfo files
-  -l, --language=LANG  specify the LANG of FILE (LaTeX or Texinfo)
-  -p, --pdf            use pdftex or pdflatex for processing
-  -t, --texinfo=CMD    insert CMD after @setfilename in copy of input file
-                       multiple values accumulate
-
-The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
-TEX (or PDFTEX), and TEXINDEX environment variables are used to run
-those commands, if they are set.
-
-Email bug reports to <bug-texinfo@gnu.org>,
-general questions and discussion to <help-texinfo@gnu.org>.
-Texinfo home page: http://www.gnu.org/software/texinfo/"
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-batch=false     # eval for batch mode
-clean=
-debug=
-escape='\'
-expand=         # t for expansion via makeinfo
-miincludes=     # makeinfo include path
-oformat=dvi
-oname=          # --output
-quiet=          # by default let the tools' message be displayed
-set_language=
-textra=
-tmpdir=${TMPDIR:-/tmp}/t2d$$  # avoid collisions on 8.3 filesystems.
-txincludes=     # TEXINPUTS extensions, with trailing colon
-txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
-verbose=false   # echo for verbose mode
-
-orig_pwd=`pwd`
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS.
-if test -n "$COMSPEC$ComSpec"; then
-  path_sep=";"
-else
-  path_sep=":"
-fi
-
-# Pacify verbose cds.
-CDPATH=${ZSH_VERSION+.}$path_sep
-
-# In case someone crazy insists on using grep -E.
-: ${EGREP=egrep}
-
-# Save this so we can construct a new TEXINPUTS path for each file.
-TEXINPUTS_orig="$TEXINPUTS"
-# Unfortunately makeindex does not read TEXINPUTS.
-INDEXSTYLE_orig="$INDEXSTYLE"
-export TEXINPUTS INDEXSTYLE
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-# \f
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
-  # Handle --option=value by splitting apart and putting back on argv.
-  case "$1" in
-    --*=*)
-      opt=`echo "$1" | sed -e 's/=.*//'`
-      val=`echo "$1" | sed -e 's/[^=]*=//'`
-      shift
-      set dummy "$opt" "$val" ${1+"$@"}; shift
-      ;;
-  esac
-
-  # This recognizes --quark as --quiet.  So what.
-  case "$1" in
-    -@ ) escape=@;;
-    # Silently and without documentation accept -b and --b[atch] as synonyms.
-    -b | --b*) batch=eval;;
-    -q | -s | --q* | --s*) quiet=t; batch=eval;;
-    -c | --c*) clean=t;;
-    -D | --d*) debug=t;;
-    -e | -E | --e*) expand=t;;
-    -h | --h*) echo "$usage"; exit 0;;
-    -I | --I*)
-      shift
-      miincludes="$miincludes -I $1"
-      txincludes="$txincludes$1$path_sep"
-      ;;
-    -l | --l*) shift; set_language=$1;;
-    -o | --o*)
-      shift
-      clean=t
-      case "$1" in
-        /* | ?:/*) oname=$1;;
-                *) oname="$orig_pwd/$1";;
-      esac;;
-    -p | --p*) oformat=pdf;;
-    -t | --t*) shift; textra="$textra\\
-$1";;
-    -v | --vers*) echo "$version"; exit 0;;
-    -V | --verb*) verbose=echo;;
-    --) # What remains are not options.
-      shift
-      while test x"$1" != x"$arg_sep"; do
-        set dummy ${1+"$@"} "$1"; shift
-        shift
-      done
-      break;;
-    -*)
-      echo "$0: Unknown or ambiguous option \`$1'." >&2
-      echo "$0: Try \`--help' for more information." >&2
-      exit 1;;
-    *) set dummy ${1+"$@"} "$1"; shift;;
-   esac
-   shift
-done
-# Pop the token
-shift
-
-# Interpret remaining command line args as filenames.
-case $# in
- 0)
-  echo "$0: Missing file arguments." >&2
-  echo "$0: Try \`--help' for more information." >&2
-  exit 2
-  ;;
- 1) ;;
- *)
-  if test -n "$oname"; then
-    echo "$0: Can't use option \`--output' with more than one argument." >&2
-    exit 2
-  fi
-  ;;
-esac
-
-# Prepare the temporary directory.  Remove it at exit, unless debugging.
-if test -z "$debug"; then
-  trap "cd / && rm -rf $tmpdir" 0 1 2 15
-fi
-
-# Create the temporary directory with strict rights
-(umask 077 && mkdir $tmpdir) || exit 1
-
-# Prepare the tools we might need.  This may be extra work in some
-# cases, but improves the readibility of the script.
-utildir=$tmpdir/utils
-mkdir $utildir || exit 1
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only.  We want to remove non TeX sections, and
-# comment (with `@c texi2dvi') TeX sections so that makeinfo does not
-# try to parse them.  Nevertheless, while commenting TeX sections,
-# don't comment @macro/@end macro so that makeinfo does propagate
-# them.  Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
-# doesn't work well enough (yet) to use that, so work around with sed.
-comment_iftex_sed=$utildir/comment.sed
-cat <<EOF >$comment_iftex_sed
-/^@tex/,/^@end tex/{
-  s/^/@c texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
-  s/^/@c texi2dvi/
-  /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
-    s/^@c texi2dvi//
-  }
-}
-/^@html/,/^@end html/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifhtml/,/^@end ifhtml/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifnottex/,/^@end ifnottex/{
-  s/^/@c (texi2dvi)/
-}
-/^@ifinfo/,/^@end ifinfo/{
-  /^@node/p
-  /^@menu/,/^@end menu/p
-  t
-  s/^/@c (texi2dvi)/
-}
-s/^@ifnotinfo/@c texi2dvi@ifnotinfo/
-s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/
-EOF
-# Uncommenting is simple: Remove any leading `@c texi2dvi'.
-uncomment_iftex_sed=$utildir/uncomment.sed
-cat <<EOF >$uncomment_iftex_sed
-s/^@c texi2dvi//
-EOF
-
-# A shell script that computes the list of xref files.
-# Takes the filename (without extension) of which we look for xref
-# files as argument.  The index files must be reported last.
-get_xref_files=$utildir/get_xref.sh
-cat <<\EOF >$get_xref_files
-#! /bin/sh
-
-# Get list of xref files (indexes, tables and lists).
-# Find all files having root filename with a two-letter extension,
-# saves the ones that are really Texinfo-related files.  .?o? catches
-# many files: .toc, .log, LaTeX tables and lists, FiXme's .lox, maybe more.
-for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
-  # If file is empty, skip it.
-  test -s "$this_file" || continue
-  # If the file is not suitable to be an index or xref file, don't
-  # process it.  The file can't be if its first character is not a
-  # backslash or single quote.
-  first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
-  if test "x$first_character" = "x\\" \
-     || test "x$first_character" = "x'"; then
-    xref_files="$xref_files ./$this_file"
-  fi
-done
-echo "$xref_files"
-EOF
-chmod 500 $get_xref_files
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-
-# Tools' output.  If quiet, discard, else redirect to the message flow.
-if test "$quiet" = t; then
-  exec 5>/dev/null
-else
-  exec 5>&1
-fi
-
-# Enable tracing
-test "$debug" = t && set -x
-
-# \f
-# TeXify files.
-
-for command_line_filename in ${1+"$@"}; do
-  $verbose "Processing $command_line_filename ..."
-
-  # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
-  # prepend `./' in order to avoid that the tools take it as an option.
-  echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >/dev/null \
-  || command_line_filename="./$command_line_filename"
-
-  # See if the file exists.  If it doesn't we're in trouble since, even
-  # though the user may be able to reenter a valid filename at the tex
-  # prompt (assuming they're attending the terminal), this script won't
-  # be able to find the right xref files and so forth.
-  if test ! -r "$command_line_filename"; then
-    echo "$0: Could not read $command_line_filename, skipping." >&2
-    continue
-  fi
-
-  # Get the name of the current directory.  We want the full path
-  # because in clean mode we are in tmp, in which case a relative
-  # path has no meaning.
-  filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
-  filename_dir=`cd "$filename_dir" >/dev/null && pwd`
-
-  # Strip directory part but leave extension.
-  filename_ext=`basename "$command_line_filename"`
-  # Strip extension.
-  filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
-  ext=`echo "$filename_ext" | sed 's/^.*\.//'`
-
-  # _src.  Use same basename since we want to generate aux files with
-  # the same basename as the manual.  If --expand, then output the
-  # macro-expanded file to here, else copy the original file.
-  tmpdir_src=$tmpdir/src
-  filename_src=$tmpdir_src/$filename_noext.$ext
-
-  # _xtr.  The file with the user's extra commands.
-  tmpdir_xtr=$tmpdir/xtr
-  filename_xtr=$tmpdir_xtr/$filename_noext.$ext
-
-  # _bak.  Copies of the previous xref files (another round is run if
-  # they differ from the new one).
-  tmpdir_bak=$tmpdir/bak
-
-  # Make all those directories and give up if we can't succeed.
-  mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
-
-  # Source file might include additional sources.
-  # We want `.:$orig_pwd' before anything else.  (We'll add `.:' later
-  # after all other directories have been turned into absolute paths.)
-  # `.' goes first to ensure that any old .aux, .cps,
-  # etc. files in ${directory} don't get used in preference to fresher
-  # files in `.'.  Include orig_pwd in case we are in clean mode, where
-  # we've cd'd to a temp directory.
-  common="$orig_pwd$path_sep$filename_dir$path_sep$txincludes"
-   TEXINPUTS="$common$TEXINPUTS_orig"
-  INDEXSTYLE="$common$INDEXSTYLE_orig"
-
-  # Convert relative paths to absolute paths, so we can run in another
-  # directory (e.g., in --clean mode, or during the macro-support
-  # detection.)
-  #
-  # Empty path components are meaningful to tex.  We rewrite them
-  # as `EMPTY' so they don't get lost when we split on $path_sep.
-   TEXINPUTS=`echo $TEXINPUTS  |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'`
-  INDEXSTYLE=`echo $INDEXSTYLE |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'`
-  save_IFS=$IFS
-  IFS=$path_sep
-  set x $TEXINPUTS; shift
-  TEXINPUTS=.
-  for dir
-  do
-    case $dir in
-      EMPTY)
-        TEXINPUTS=$TEXINPUTS$path_sep
-        ;;
-      [\\/]* | ?:[\\/]*)        # Absolute paths don't need to be expansed.
-        TEXINPUTS=$TEXINPUTS$path_sep$dir
-        ;;
-      *)
-        abs=`cd "$dir" && pwd` && TEXINPUTS=$TEXINPUTS$path_sep$abs
-        ;;
-    esac
-  done
-  set x $INDEXSTYLE; shift
-  INDEXSTYLE=.
-  for dir
-  do
-    case $dir in
-      EMPTY)
-        INDEXSTYLE=$INDEXSTYLE$path_sep
-        ;;
-      [\\/]* | ?:[\\/]*)        # Absolute paths don't need to be expansed.
-        INDEXSTYLE=$INDEXSTYLE$path_sep$dir
-        ;;
-      *)
-        abs=`cd "$dir" && pwd` && INDEXSTYLE=$INDEXSTYLE$path_sep$abs
-        ;;
-    esac
-  done
-  IFS=$save_IFS
-
-  # If the user explicitly specified the language, use that.
-  # Otherwise, if the first line is \input texinfo, assume it's texinfo.
-  # Otherwise, guess from the file extension.
-  if test -n "$set_language"; then
-    language=$set_language
-  elif sed 1q "$command_line_filename" | grep 'input texinfo' >/dev/null; then
-    language=texinfo
-  else
-    language=
-  fi
-
-  # Get the type of the file (latex or texinfo) from the given language
-  # we just guessed, or from the file extension if not set yet.
-  case ${language:-$filename_ext} in
-    [lL]a[tT]e[xX] | *.ltx | *.tex)
-      # Assume a LaTeX file.  LaTeX needs bibtex and uses latex for
-      # compilation.  No makeinfo.
-      bibtex=${BIBTEX:-bibtex}
-      makeinfo= # no point in running makeinfo on latex source.
-      texindex=${MAKEINDEX:-makeindex}
-      if test $oformat = dvi; then
-        tex=${LATEX:-latex}
-      else
-        tex=${PDFLATEX:-pdflatex}
-      fi
-      ;;
-
-    *)
-      # Assume a Texinfo file.  Texinfo files need makeinfo, texindex and tex.
-      bibtex=
-      texindex=${TEXINDEX:-texindex}
-      if test $oformat = dvi; then
-        tex=${TEX:-tex}
-      else
-        tex=${PDFTEX:-pdftex}
-      fi
-      # Unless required by the user, makeinfo expansion is wanted only
-      # if texinfo.tex is too old.
-      if test "$expand" = t; then
-        makeinfo=${MAKEINFO:-makeinfo}
-      else
-        # Check if texinfo.tex performs macro expansion by looking for
-        # its version.  The version is a date of the form YEAR-MO-DA.
-        # We don't need to use [0-9] to match the digits since anyway
-        # the comparison with $txiprereq, a number, will fail with non
-        # digits.
-        txiversion_tex=txiversion.tex
-        echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
-        # Run in the tmpdir to avoid leaving files.
-        eval `cd $tmpdir >/dev/null &&
-              $tex $txiversion_tex 2>/dev/null |
-              sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
-        $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
-        if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
-          makeinfo=
-        else
-          makeinfo=${MAKEINFO:-makeinfo}
-        fi
-        # As long as we had to run TeX, offer the user this convenience
-        if test "$txiformat" = Texinfo; then
-          escape=@
-        fi
-      fi
-      ;;
-  esac
-
-  # Expand macro commands in the original source file using Makeinfo.
-  # Always use `end' footnote style, since the `separate' style
-  #   generates different output (arguably this is a bug in -E).
-  # Discard main info output, the user asked to run TeX, not makeinfo.
-  if test -n "$makeinfo"; then
-    $verbose "Macro-expanding $command_line_filename to $filename_src ..."
-    sed -f $comment_iftex_sed "$command_line_filename" \
-      | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
-        -o /dev/null --macro-expand=- \
-      | sed -f $uncomment_iftex_sed >"$filename_src"
-    filename_input=$filename_src
-  fi
-
-  # If makeinfo failed (or was not even run), use the original file as input.
-  if test $? -ne 0 \
-     || test ! -r "$filename_src"; then
-    $verbose "Reverting to $command_line_filename ..."
-    filename_input=$filename_dir/$filename_ext
-  fi
-
-  # Used most commonly for @finalout, @smallbook, etc.
-  if test -n "$textra"; then
-    $verbose "Inserting extra commands: $textra"
-    sed '/^@setfilename/a\
-'"$textra" "$filename_input" >$filename_xtr
-    filename_input=$filename_xtr
-  fi
-
-  # If clean mode was specified, then move to the temporary directory.
-  if test "$clean" = t; then
-    $verbose "cd $tmpdir_src"
-    cd "$tmpdir_src" || exit 1
-  fi
-
-  while :; do # will break out of loop below
-    orig_xref_files=`$get_xref_files "$filename_noext"`
-
-    # Save copies of originals for later comparison.
-    if test -n "$orig_xref_files"; then
-      $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
-      cp $orig_xref_files $tmpdir_bak
-    fi
-
-    # Run bibtex on current file.
-    # - If its input (AUX) exists.
-    # - If AUX contains both `\bibdata' and `\bibstyle'.
-    # - If some citations are missing (LOG contains `Citation').
-    #   or the LOG complains of a missing .bbl
-    #
-    # We run bibtex first, because I can see reasons for the indexes
-    # to change after bibtex is run, but I see no reason for the
-    # converse.
-    #
-    # Don't try to be too smart.  Running bibtex only if the bbl file
-    # exists and is older than the LaTeX file is wrong, since the
-    # document might include files that have changed.  Because there
-    # can be several AUX (if there are \include's), but a single LOG,
-    # looking for missing citations in LOG is easier, though we take
-    # the risk to match false messages.
-    if test -n "$bibtex" \
-       && test -r "$filename_noext.aux" \
-       && test -r "$filename_noext.log" \
-       && (grep '^\\bibdata[{]'  "$filename_noext.aux" \
-           && grep '^\\bibstyle[{]' "$filename_noext.aux" \
-           && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
-               || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
-          >/dev/null 2>&1; \
-    then
-      $verbose "Running $bibtex $filename_noext ..."
-      if $bibtex "$filename_noext" >&5; then :; else
-        echo "$0: $bibtex exited with bad status, quitting." >&2
-        exit 1
-      fi
-    fi
-
-    # What we'll run texindex on -- exclude non-index files.
-    # Since we know index files are last, it is correct to remove everything
-    # before .aux and .?o?.  But don't really do <anything>o<anything>
-    # -- don't match whitespace as <anything>.
-    # Otherwise, if orig_xref_files contains something like
-    #   foo.xo foo.whatever
-    # the space after the o will get matched.
-    index_files=`echo "$orig_xref_files" \
-                 | sed "s!.*\.aux!!g;
-                        s!./$filename_noext\.[^ ]o[^ ]!!g;
-                        s/^[ ]*//;s/[ ]*$//"`
-    # Run texindex (or makeindex) on current index files.  If they
-    # already exist, and after running TeX a first time the index
-    # files don't change, then there's no reason to run TeX again.
-    # But we won't know that if the index files are out of date or
-    # nonexistent.
-    if test -n "$texindex" && test -n "$index_files"; then
-      $verbose "Running $texindex $index_files ..."
-      if $texindex $index_files 2>&5 1>&2; then :; else
-         echo "$0: $texindex exited with bad status, quitting." >&2
-         exit 1
-      fi
-    fi
-
-    # Finally, run TeX.
-    # Prevent $ESCAPE from being interpreted by the shell if it happens
-    # to be `/'.
-    $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
-    cmd="$tex $tex_args $filename_input"
-    $verbose "Running $cmd ..."
-    if $cmd >&5; then :; else
-      echo "$0: $tex exited with bad status, quitting." >&2
-      echo "$0: see $filename_noext.log for errors." >&2
-      test "$clean" = t \
-        && cp "$filename_noext.log" "$orig_pwd"
-      exit 1
-    fi
-
-
-    # Decide if looping again is needed.
-    finished=t
-
-    # LaTeX (and the package changebar) report in the LOG file if it
-    # should be rerun.  This is needed for files included from
-    # subdirs, since texi2dvi does not try to compare xref files in
-    # subdirs.  Performing xref files test is still good since LaTeX
-    # does not report changes in xref files.
-    if grep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
-      finished=
-    fi
-
-    # Check if xref files changed.
-    new_xref_files=`$get_xref_files "$filename_noext"`
-    $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
-    $verbose "New xref files      = `echo $new_xref_files | sed 's|\./||g'`"
-
-    # If old and new lists don't at least have the same file list,
-    # then one file or another has definitely changed.
-    test "x$orig_xref_files" != "x$new_xref_files" && finished=
-
-    # File list is the same.  We must compare each file until we find
-    # a difference.
-    if test -n "$finished"; then
-      for this_file in $new_xref_files; do
-        $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
-        # cmp -s returns nonzero exit status if files differ.
-        if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
-          # We only need to keep comparing until we find one that
-          # differs, because we'll have to run texindex & tex again no
-          # matter how many more there might be.
-          finished=
-          $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
-          test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
-          break
-        fi
-      done
-    fi
-
-    # If finished, exit the loop, else rerun the loop.
-    test -n "$finished" && break
-  done
-
-  # If we were in clean mode, compilation was in a tmp directory.
-  # Copy the DVI (or PDF) file into the directory where the compilation
-  # has been done.  (The temp dir is about to get removed anyway.)
-  # We also return to the original directory so that
-  # - the next file is processed in correct conditions
-  # - the temporary file can be removed
-  if test -n "$clean"; then
-    if test -n "$oname"; then
-       dest=$oname
-    else
-       dest=$orig_pwd
-    fi
-    $verbose "Copying $oformat file from `pwd` to $dest"
-    cp -p "./$filename_noext.$oformat" "$dest"
-    cd / # in case $orig_pwd is on a different drive (for DOS)
-    cd $orig_pwd || exit 1
-  fi
-
-  # Remove temporary files.
-  if test "x$debug" = "x"; then
-    $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
-    cd /
-    rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
-  fi
-done
-
-$verbose "$0 done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/support/texi2dvi.5704 b/support/texi2dvi.5704
deleted file mode 100755 (executable)
index 173e8ab..0000000
+++ /dev/null
@@ -1,1944 +0,0 @@
-#! /bin/sh
-# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources.
-# $Id: texi2dvi 5704 2014-07-07 17:45:16Z karl $
-#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
-# Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License,
-# or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Originally written by Noah Friedman.
-#
-# Please send bug reports, etc. to bug-texinfo@gnu.org.
-# If possible, please send a copy of the output of the script called with
-# the `--debug' option when making a bug report.
-
-test -f /bin/ksh && test -z "$RUNNING_KSH" \
-  && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
-  && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
-unset RUNNING_KSH
-
-# No failure shall remain unpunished.
-set -e
-
-# In case the default sed doesn't suffice.
-: ${SED=sed}
-
-# This string is expanded automatically when this file is checked out.
-rcs_revision='$Revision: 5704 $'
-rcs_version=`set - $rcs_revision; echo $2`
-program=`echo $0 | $SED -e 's!.*/!!'`
-
-build_mode=${TEXI2DVI_BUILD_MODE:-local}
-build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.}
-
-# Initialize variables for option overriding and otherwise.
-# Don't use `unset' since old bourne shells don't have this command.
-# Instead, assign them an empty value.
-action=compile
-batch=false     # interact normally
-catcode_special=maybe
-debug=false
-escape="\\"
-expand=false    # true for expansion via makeinfo
-includes=
-line_error=true # pass --file-line-error to TeX
-max_iters=7     # when to quit
-oname=          # --output
-out_lang=dvi
-quiet=false     # let the tools' message be displayed
-set_language=
-src_specials=
-shell_escape=
-latex2html=hevea  # or set to tex4ht
-textra=         # Extra TeX commands to insert in the input file.
-txiprereq=19990129 # minimum texinfo.tex version with macro expansion
-verb=false      # true for verbose mode
-translate_file= # name of charset translation file
-
-orig_pwd=`pwd`
-
-# We have to initialize IFS to space tab newline since we save and
-# restore IFS and apparently POSIX allows stupid/broken behavior with
-# empty-but-set IFS.
-# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html
-# We need space, tab and new line, in precisely that order.  And don't leave
-# trailing blanks.
-space=' '
-tab='  '
-newline='
-'
-IFS="$space$tab$newline"
-
-# In case someone pedantic insists on using grep -E.
-: ${EGREP=egrep}
-
-# Systems which define $COMSPEC or $ComSpec use semicolons to separate
-# directories in TEXINPUTS -- except for Cygwin et al., where COMSPEC
-# might be inherited, but : is used.
-if test -n "$COMSPEC$ComSpec" \
-   && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then
-  path_sep=";"
-else
-  path_sep=":"
-fi
-
-# Pacify verbose cds.
-CDPATH=${ZSH_VERSION+.}$path_sep
-
-# If $TEX is set to a directory, don't use it.
-test -n "$TEX" && test -d "$TEX" && unset TEX
-
-# \f
-## --------------------- ##
-## Auxiliary functions.  ##
-## --------------------- ##
-
-# In case `local' is not supported by the shell, provide a function
-# that simulates it by simply performing the assignments.  This means
-# that we must not expect `local' to work, i.e., we must not (i) rely
-# on it during recursion, and (ii) have two local declarations of the
-# same variable.  (ii) is easy to check statically, and our test suite
-# does make sure there is never twice a static local declaration of a
-# variable.  (i) cannot be checked easily, so just be careful.
-#
-# Note that since we might use a function simulating `local', we can
-# no longer rely on the fact that no IFS-splitting is performed.  So,
-# while
-#
-# foo=$bar
-#
-# is fine (no IFS-splitting), never write
-#
-# local foo=$bar
-#
-# but rather
-#
-# local foo="$bar"
-(
-  foo=bar
-  test_local () {
-    local foo=foo
-  }
-  test_local >/dev/null 2>&1
-  test $foo = bar
-) || eval '
-local () {
-  case $1 in
-    *=*) eval "$1";;
-  esac
-}
-'
-
-
-# cd_orig
-# -------
-# Return to the original directory.
-cd_orig ()
-{
-  # In case $orig_pwd is on a different drive (for DOS).
-  cd /
-
-  # Return to the original directory so that
-  # - the next file is processed in correct conditions
-  # - the temporary file can be removed
-  cd "$orig_pwd" || exit 1
-}
-
-# func_dirname FILE
-# -----------------
-# Return the directory part of FILE.
-func_dirname ()
-{
-  dirname "$1" 2>/dev/null \
-  || { echo "$1" | $SED 's!/[^/]*$!!;s!^$!.!'; }
-}
-
-
-# noexit FILE
-# -----------
-# Return FILE with one extension remove.  foo.bar.baz -> foo.bar.
-noext ()
-{
-  echo "$1" | $SED -e 's/\.[^/.][^/.]*$//'
-}
-
-
-# absolute NAME -> ABS-NAME
-# -------------------------
-# Return an absolute path to NAME.
-absolute ()
-{
-  case $1 in
-   [\\/]* | ?:[\\/]*)
-      # Absolute paths don't need to be expanded.
-      echo "$1"
-      ;;
-   *) local slashes
-      slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'`
-      local rel
-      rel=$orig_pwd/`func_dirname "$1"`
-      if test -d "$rel"; then
-        (cd "$rel" 2>/dev/null \
-         && local n
-         n=`pwd`/`basename "$1"`"$slashes"
-         echo "$n")
-      else
-        error 1 "not a directory: $rel"
-      fi
-      ;;
-  esac
-}
-
-
-# ensure_dir DIR1 DIR2...
-# -----------------------
-# Make sure the directories exist.
-ensure_dir ()
-{
-  for dir
-  do
-    # Beware that in parallel builds we may have several concurrent
-    # attempts to create the directory.  So fail only if "mkdir"
-    # failed *and* the directory still does not exist.
-    test -d "$dir" \
-      || mkdir "$dir" \
-      || test -d "$dir" \
-      || error 1 "cannot create directory: $dir"
-  done
-}
-
-
-# error EXIT_STATUS LINE1 LINE2...
-# --------------------------------
-# Report an error and exit with failure if EXIT_STATUS is non-null.
-error ()
-{
-  local s="$1"
-  shift
-  report "$@"
-  if test "$s" != 0; then
-    exit $s
-  fi
-}
-
-
-# findprog PROG
-# -------------
-# Return true if PROG is somewhere in PATH, else false.
-findprog ()
-{
-  local saveIFS="$IFS"
-  IFS=$path_sep  # break path components at the path separator
-  for dir in $PATH; do
-    IFS=$saveIFS
-    # The basic test for an executable is `test -f $f && test -x $f'.
-    # (`test -x' is not enough, because it can also be true for directories.)
-    # We have to try this both for $1 and $1.exe.
-    #
-    # Note: On Cygwin and DJGPP, `test -x' also looks for .exe.  On Cygwin,
-    # also `test -f' has this enhancement, but not on DJGPP.  (Both are
-    # design decisions, so there is little chance to make them consistent.)
-    # Thusly, it seems to be difficult to make use of these enhancements.
-    #
-    if   { test -f "$dir/$1"     && test -x "$dir/$1"; } \
-      || { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then
-      return 0
-    fi
-  done
-  return 1
-}
-
-# report LINE1 LINE2...
-# ---------------------
-# Report some information on stderr.
-report ()
-{
-  for i in "$@"
-  do
-    echo >&2 "$0: $i"
-  done
-}
-
-
-# run COMMAND-LINE
-# ----------------
-# Run the COMMAND-LINE verbosely, and catching errors as failures.
-run ()
-{
-  verbose "Running $@"
-  "$@" 2>&5 1>&2 \
-  || error 1 "$1 failed"
-}
-
-
-# usage
-# -----
-# Display usage and exit successfully.
-usage ()
-{
-  # We used to simply have `echo "$usage"', but coping with the
-  # changing behavior of `echo' is much harder than simply using a
-  # here-doc.
-  #
-  #             echo '\noto'   echo '\\noto'   echo -e '\\noto'
-  # bash 3.1      \noto           \\noto          \noto
-  # bash 3.2       %oto           \noto           -e \noto
-  #
-  # where % denotes the eol character.
-  cat <<EOF
-Usage: $program [OPTION]... FILE...
-  or:  texi2pdf [OPTION]... FILE...
-  or:  pdftexi2dvi [OPTION]... FILE...
-
-Run each Texinfo or (La)TeX FILE through TeX in turn until all
-cross-references are resolved, building all indices.  The directory
-containing each FILE is searched for included files.  The suffix of FILE
-is used to determine its language ((La)TeX or Texinfo).  To process
-(e)plain TeX files, set the environment variable LATEX=tex.
-
-In order to make texi2dvi a drop-in replacement of TeX/LaTeX in AUC-TeX,
-the FILE may also be composed of the following simple TeX commands.
-  \`\\input{FILE}'     the actual file to compile
-  \`\\nonstopmode'     same as --batch
-
-When invoked as \`texi2pdf' or \`pdftexi2dvi', or given the option --pdf
-or --dvipdf, generate PDF output.  Otherwise, generate DVI.
-
-General options:
-  -b, --batch         no interaction
-  -D, --debug         turn on shell debugging (set -x)
-  -h, --help          display this help and exit successfully
-  -o, --output=OFILE  leave output in OFILE; only one input FILE is allowed
-  -q, --quiet         no output unless errors (implies --batch)
-  -s, --silent        same as --quiet
-  -v, --version       display version information and exit successfully
-  -V, --verbose       report on what is done
-
-Output format:
-      --dvi     output a DVI file [default]
-      --dvipdf  output a PDF file via DVI (using a dvi-to-pdf program)
-      --html    output an HTML file from LaTeX, using HeVeA
-      --info    output an Info file from LaTeX, using HeVeA
-  -p, --pdf     use pdftex or pdflatex for processing
-      --ps      output a PostScript file via DVI (using dvips)
-      --text    output a plain text file from LaTeX, using HeVeA
-
-TeX tuning:
-  -@                         use @input instead of \input for preloaded Texinfo
-  -e, -E, --expand           force macro expansion using makeinfo
-  -I DIR                     search DIR for Texinfo files
-  -l, --language=LANG        specify LANG for FILE, either latex or texinfo
-      --no-line-error        do not pass --file-line-error to TeX
-      --shell-escape         pass --shell-escape to TeX
-      --src-specials         pass --src-specials to TeX
-  -t, --command=CMD          insert CMD in copy of input file
-   or --texinfo=CMD          multiple values accumulate
-      --translate-file=FILE  use given charset translation file for TeX
-
-Build modes:
-  --build=MODE         specify the treatment of auxiliary files [$build_mode]
-      --tidy           same as --build=tidy
-  -c, --clean          same as --build=clean
-      --build-dir=DIR  specify where the tidy compilation is performed;
-                         implies --tidy;
-                         defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir]
-  --mostly-clean       remove the auxiliary files and directories
-                         but not the output
-  --max-iterations=N   don't process files more than N times [$max_iters]
-
-The MODE specifies where the TeX compilation takes place, and, as a
-consequence, how auxiliary files are treated.  The build mode
-can also be set using the environment variable TEXI2DVI_BUILD_MODE.
-
-Valid MODEs are:
-  \`local'      compile in the current directory, leaving all the auxiliary
-               files around.  This is the traditional TeX use.
-  \`tidy'       compile in a local *.t2d directory, where the auxiliary files
-               are left.  Output files are copied back to the original file.
-  \`clean'      same as \`tidy', but remove the auxiliary directory afterwards.
-               Every compilation therefore requires the full cycle.
-
-Using the \`tidy' mode brings several advantages:
-  - the current directory is not cluttered with plethora of temporary files.
-  - clutter can be even further reduced using --build-dir=dir: all the *.t2d
-    directories are stored there.
-  - clutter can be reduced to zero using, e.g., --build-dir=/tmp/\$USER.t2d
-    or --build-dir=\$HOME/.t2d.
-  - the output file is updated after every successful TeX run, for
-    sake of concurrent visualization of the output.  In a \`local' build
-    the viewer stops during the whole TeX run.
-  - if the compilation fails, the previous state of the output file
-    is preserved.
-  - PDF and DVI compilation are kept in separate subdirectories
-    preventing any possibility of auxiliary file incompatibility.
-
-On the other hand, because \`tidy' compilation takes place in another
-directory, occasionally TeX won't be able to find some files (e.g., when
-using \\graphicspath): in that case, use -I to specify the additional
-directories to consider.
-
-The values of the BIBER, BIBTEX, DVIPDF, DVIPS, HEVEA, LATEX, MAKEINDEX,
-MAKEINFO, PDFLATEX, PDFTEX, SED, T4HT, TEX, TEX4HT, TEXINDEX, and THUMBPDF_CMD
-environment variables are used to run those commands, if they are set.
-
-Regarding --dvipdf, if DVIPDF is not set in the environment, the
-following programs are looked for (in this order): dvipdfmx dvipdfm
-dvipdf dvi2pdf dvitopdf.
-
-Any CMD strings are added after @setfilename for Texinfo input, or in
-the first line for LaTeX input.
-
-Report bugs to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
-GNU Texinfo home page: <http://www.gnu.org/software/texinfo/>
-General help using GNU software: <http://www.gnu.org/gethelp/>
-EOF
-  exit 0
-}
-
-
-# verbose WORD1 WORD2
-# -------------------
-# Report some verbose information.
-verbose ()
-{
-  if $verb; then
-    echo >&2 "$0: $@"
-  fi
-}
-
-
-# version
-# -------
-# Display version info and exit successfully.
-version ()
-{
-  cat <<EOF
-texi2dvi (GNU Texinfo 5.2) $rcs_version
-
-Copyright (C) 2014 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-EOF
-  exit 0
-}
-
-
-## ---------------- ##
-## Handling lists.  ##
-## ---------------- ##
-
-
-# list_append LIST-NAME ELEM
-# --------------------------
-# Set LIST-NAME to its former contents, with ELEM appended.
-list_append ()
-{
-  local la_l="$1"
-  shift
-  eval set X \$$la_l "$@"
-  shift
-  eval $la_l=\""$@"\"
-}
-
-
-# list_concat_dirs LIST-NAME DIR-LIST
-# -----------------------------------
-# Append to LIST-NAME all the components (included empty) from
-# the $path_sep separated list DIR-LIST.  Make the paths absolute.
-list_concat_dirs ()
-{
-  local lcd_list="$1"
-  # Empty path components are meaningful to tex.  We rewrite them as
-  # `EMPTY' so they don't get lost when we split on $path_sep.
-  # Hopefully no one will have an actual directory named EMPTY.
-  local replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \
-                       -e 's/$path_sep\$/${path_sep}EMPTY/g' \
-                       -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'"
-  save_IFS=$IFS
-  IFS=$path_sep
-  set x `echo "$2" | eval $SED $replace_EMPTY`; shift
-  IFS=$save_IFS
-  local dir
-  for dir
-  do
-    case $dir in
-      EMPTY)
-       list_append $lcd_list ""
-       ;;
-      *)
-       if test -d $dir; then
-          dir=`absolute "$dir"`
-         list_append $lcd_list "$dir"
-       fi
-       ;;
-    esac
-  done
-}
-
-
-# list_prefix LIST-NAME SEP -> STRING
-# -----------------------------------
-# Return a string that is composed of the LIST-NAME with each item
-# preceded by SEP.
-list_prefix ()
-{
-  local lp_p="$2"
-  eval set X \$$1
-  shift
-  local lp_res
-  for i
-  do
-    lp_res="$lp_res \"$lp_p\" \"$i\""
-  done
-  echo "$lp_res"
-}
-
-# list_infix LIST-NAME SEP -> STRING
-# ----------------------------------
-# Same as list_prefix, but a separator.
-list_infix ()
-{
-  eval set X \$$1
-  shift
-  local la_IFS="$IFS"
-  IFS=$path_sep
-  echo "$*"
-  IFS=$la_IFS
-}
-
-# list_dir_to_abs LIST-NAME
-# -------------------------
-# Convert the list to using only absolute dir names.
-# Currently unused, but should replace absolute_filenames some day.
-list_dir_to_abs ()
-{
-  local ld_l="$1"
-  eval set X \$$ld_l
-  shift
-  local ld_res
-  for dir
-  do
-    dir=`absolute "$dir"`
-    test -d "$dir" || continue
-    ld_res="$ld_res \"$dir\""
-  done
-  set X $ld_res; shift
-  eval $ld_l=\"$@\"
-}
-
-
-## ------------------------------ ##
-## Language auxiliary functions.  ##
-## ------------------------------ ##
-
-
-# out_lang_set LANG
-# -----------------
-out_lang_set ()
-{
-  case $1 in
-    dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;;
-    *) error 1 "invalid output format: $1";;
-  esac
-}
-
-
-# out_lang_tex
-# ------------
-# Return the tex output language (DVI or PDF) for $OUT_LANG.
-out_lang_tex ()
-{
-  case $out_lang in
-    dvi | ps | dvipdf ) echo dvi;;
-    pdf ) echo $out_lang;;
-    html | info | text ) echo $out_lang;;
-    *)    error 1 "invalid out_lang: $1";;
-  esac
-}
-
-
-# out_lang_ext
-# ------------
-# Return the extension for $OUT_LANG.
-out_lang_ext ()
-{
-  case $out_lang in
-    dvipdf ) echo pdf;;
-    dvi | html | info | pdf | ps | text ) echo $out_lang;;
-    *)    error 1 "invalid out_lang: $1";;
-  esac
-}
-
-
-## ------------------------- ##
-## TeX auxiliary functions.  ##
-## ------------------------- ##
-
-# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file.
-# Likewise for bibtex and makeindex.
-tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \
-TEXINPUTS TFMFONTS"
-for var in $tex_envvars; do
-  eval ${var}_orig=\$$var
-  export $var
-done
-
-
-# absolute_filenames TEX-PATH -> TEX-PATH
-# ---------------------------------------
-# Convert relative paths to absolute paths, so we can run in another
-# directory (e.g., in tidy build mode, or during the macro-support
-# detection).  Prepend ".".
-absolute_filenames ()
-{
-  # Empty path components are meaningful to tex.  We rewrite them as
-  # `EMPTY' so they don't get lost when we split on $path_sep.
-  # Hopefully no one will have an actual directory named EMPTY.
-  local replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \
-                       -e 's/$path_sep\$/${path_sep}EMPTY/g' \
-                       -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'"
-  local res
-  res=`echo "$1" | eval $SED $replace_empty`
-  save_IFS=$IFS
-  IFS=$path_sep
-  set x $res; shift
-  res=.
-  for dir
-  do
-    case $dir in
-      EMPTY)
-        res=$res$path_sep
-        ;;
-      *)
-        if test -d "$dir"; then
-          res=$res$path_sep`absolute "$dir"`
-        else
-          # Even if $dir is not a directory, preserve it in the path.
-          # It might contain metacharacters that TeX will expand in
-          # turn, e.g., /some/path/{a,b,c}.  This will not get the
-          # implicit absolutification of the path, but we can't help that.
-          res=$res$path_sep$dir
-        fi
-        ;;
-    esac
-  done
-  echo "$res"
-}
-
-
-# output_base_name FILE
-# ---------------------
-# The name of FILE, possibly renamed to satisfy --output.
-# FILE is local, there is no directory part.
-output_base_name ()
-{
-  case $oname in
-    '') echo "$1";;
-     *) local out_noext
-        out_noext=`noext "$oname"`
-        local file_ext
-        file_ext=`echo "$1" | $SED 's/^.*\.//'`
-        echo "$out_noext.$file_ext"
-      ;;
-  esac
-}
-
-
-# destdir
-# -------
-# Return the name of the directory where the output is expected.
-destdir ()
-{
-  case $oname in
-    '')  echo "$orig_pwd";;
-    *)   dirname "$oname";;
-  esac
-}
-
-
-# move_to_dest FILE...
-# --------------------
-# Move FILE to the place where the user expects it.  Truly move it, that
-# is, it must not remain in its build location unless that is also the
-# output location.  (Otherwise it might appear as an extra file in make
-# distcheck.)
-#
-# FILE can be the principal output (in which case -o directly applies), or
-# an auxiliary file with the same base name.
-move_to_dest ()
-{
-#  echo "move_to_dest $*, tidy=$tidy, oname=$oname"
-
-  # If we built in place and have no output name, there is nothing to
-  # do, so just return.
-  case $tidy:$oname in
-    false:) return;;
-  esac
-
-  local destfile
-  local destdir
-  local destbase
-  local sourcedir
-  local sourcebase
-
-  for file
-  do
-    test -f "$file" \
-    || error 1 "no such file or directory: $file"
-    case $tidy:$oname in
-      true:)  destdir=$orig_pwd
-              destfile=$destdir/$file;;
-      true:*) destfile=`output_base_name "$file"`
-              destdir=`dirname "$destfile"`;;
-      false:*) destfile=$oname
-               destdir=`dirname "$destfile"`;;
-    esac
-    # We want to compare the source location and the output location,
-    # and if they are different, do the move.  But if they are the
-    # same, we must preserve the source.  Since we can't assume
-    # stat(1) or test -ef is available, resort to comparing the
-    # directory names, canonicalized with pwd.  We can't use cmp -s
-    # since the output file might not actually change from run to run;
-    # e.g., TeX DVI output is timestamped to only the nearest minute.
-    destdir=`cd "$destdir" && pwd`
-    destbase=`basename "$destfile"`
-
-    sourcedir=`dirname "$file"`
-    sourcedir=`cd "$sourcedir" && pwd`
-    sourcebase=`basename "$file"`
-
-    if test "$sourcedir/$sourcebase" != "$destdir/$destbase"; then
-      verbose "Moving $file to $destfile"
-      rm -f "$destfile"
-      mv "$file" "$destfile"
-    fi
-  done
-}
-
-
-## --------------------- ##
-## Managing xref files.  ##
-## --------------------- ##
-
-# aux_file_p FILE
-# ---------------
-# Return with success if FILE is an aux file.
-aux_file_p ()
-{
-  test -f "$1" || return 1
-  case $1 in
-    *.aux) return 0;;
-    *)     return 1;;
-  esac
-}
-
-# bibaux_file_p FILE
-# ------------------
-# Return with success if FILE is an aux file containing citation
-# requests.
-bibaux_file_p ()
-{
-  test -s "$1" || return 1
-  if (grep '^\\bibstyle[{]' "$1"   \
-      && grep '^\\bibdata[{]' "$1" \
-      ## The following line is suspicious: fails when there
-      ## are citations in sub aux files.  We need to be
-      ## smarter in this case.
-      ## && grep '^\\citation[{]' "$f"
-      ) >&6 2>&1;
-  then
-    return 0
-  fi
-  return 1
-}
-
-# index_file_p FILE
-# -----------------
-# Return with success if FILE is an index file.
-index_file_p ()
-{
-  test -f "$1" || return 1
-  case $in_lang:$latex2html:`out_lang_tex`:`$SED '1q' "$1"` in
-    # When working with TeX4HT, *.idx are created by LaTeX.  They must
-    # be processed to produce *.4ix, *.4dx files.  The *.4dx file is
-    # passed to makeindex to produce the *.ind file.  This sequence is
-    # handled by run_index, so we are only interested in the *.idx
-    # files, which have each "\indexentry" preceded by a
-    # "\beforeentry".
-    latex:tex4ht:html:"\\beforeentry {"*) return 0;;
-
-    # When index.sty is used, there is a space before the brace.
-    latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) return 0;;
-
-    texinfo:*:*:"\\entry{"*) return 0;;
-
-    *) return 1;;
-  esac
-}
-
-# xref_file_p FILE
-# ----------------
-# Return with success if FILE is an xref file (indexes, tables and lists).
-xref_file_p ()
-{
-  test -f "$1" || return 1
-  # If the file is not suitable to be an index or xref file, don't
-  # process it.  It's suitable if the first character is a
-  # backslash or right quote or at, as long as the first line isn't
-  # \input texinfo.
-  case `$SED '1q' "$1"` in
-    "\\input texinfo"*) return 1;;
-    [\\''@]*)           return 0;;
-           *)           return 1;;
-  esac
-}
-
-
-# generated_files_get FILENAME-NOEXT [PREDICATE-FILTER]
-# -----------------------------------------------------
-# Return the list of files generated by the TeX compilation of FILENAME-NOEXT.
-generated_files_get ()
-{
-  local filter=true
-  if test -n "$2"; then
-    filter=$2
-  fi
-
-  # Gather the files created by TeX.
-  (
-    if test -f "$1.log"; then
-      $SED -n -e "s,^\\\\openout.* = \`\\(.*\\)'\\.,\\1,p" "$1.log"
-    fi
-    echo "$1.log"
-  ) |
-  # Depending on these files, infer outputs from other tools.
-  while read file; do
-    echo $file
-    case $in_lang in
-      texinfo)
-        # texindex: texinfo.cp -> texinfo.cps
-       if index_file_p $file; then
-         echo ${file}s
-       fi
-       ;;
-      latex)
-        if aux_file_p $file; then
-          # bibtex: *.aux -> *.bbl and *.blg.
-          echo $file | $SED 's/^\(.*\)\.aux$/\1.bbl/'
-          echo $file | $SED 's/^\(.*\)\.aux$/\1.blg/'
-          # -recorder: .fls
-          echo $file | $SED 's/^\(.*\)\.aux$/\1.fls/'
-       fi
-       ;;
-    esac
-  done |
-  # Filter existing files matching the criterion.
-  #
-  # With an input file name containing a space, this produces a
-  # "command not found" message (and filtering is ineffective).
-  # The situation with a newline is presumably even worse.
-  while read file; do
-    if $filter "$file"; then
-      echo $file
-    fi
-  done |
-  sort |
-  # Some files are opened several times, e.g., listings.sty's *.vrb.
-  uniq
-}
-
-
-# xref_files_save
-# ---------------
-# Save the xref files.
-xref_files_save ()
-{
-  # Save copies of auxiliary files for later comparison.
-  xref_files_orig=`generated_files_get "$in_noext" xref_file_p`
-  if test -n "$xref_files_orig"; then
-    verbose "Backing up xref files: $xref_files_orig"
-    # The following line improves `cp $xref_files_orig "$work_bak"'
-    # by preserving the directory parts.  Think of
-    # cp chap1/main.aux chap2/main.aux $work_bak.
-    #
-    # Users may have, e.g., --keep-old-files.  Don't let this interfere.
-    # (Don't use unset for the sake of ancient shells.)
-    TAR_OPTIONS=; export TAR_OPTIONS
-    tar cf - $xref_files_orig | (cd "$work_bak" && tar xf -)
-  fi
-}
-
-
-# xref_files_changed
-# ------------------
-# Whether the xref files were changed since the previous run.
-xref_files_changed ()
-{
-  # LaTeX (and the package changebar) report in the LOG file if it
-  # should be rerun.  This is needed for files included from
-  # subdirs, since texi2dvi does not try to compare xref files in
-  # subdirs.  Performing xref files test is still good since LaTeX
-  # does not report changes in xref files.
-  if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then
-    return 0
-  fi
-  # biblatex report of whether rerunning is needed.
-  if grep "biblatex.*(re)run" "$in_noext.log" >&6 2>&1; then
-    return 0
-  fi
-
-  # If old and new lists don't have the same file list,
-  # then something has definitely changed.
-  xref_files_new=`generated_files_get "$in_noext" xref_file_p`
-  verbose "Original xref files = $xref_files_orig"
-  verbose "New xref files      = $xref_files_new"
-  if test "x$xref_files_orig" != "x$xref_files_new"; then
-    return 0
-  fi
-
-  # Compare each file until we find a difference.
-  for this_file in $xref_files_new; do
-    verbose "Comparing xref file `echo $this_file | $SED 's|\./||g'` ..."
-    # cmp -s returns nonzero exit status if files differ.
-    if cmp -s "$this_file" "$work_bak/$this_file"; then :; else
-      verbose "xref file `echo $this_file | $SED 's|\./||g'` differed ..."
-      if $debug; then
-        diff -u "$work_bak/$this_file" "$this_file"
-      fi
-      return 0
-    fi
-  done
-
-  # No change.
-  return 1
-}
-
-
-
-## ----------------------- ##
-## Running the TeX suite.  ##
-## ----------------------- ##
-
-
-
-# run_tex ()
-# ----------
-# Run TeX as "$tex $in_input", taking care of errors and logs.
-run_tex ()
-{
-  case $in_lang:$latex2html:`out_lang_tex` in
-    latex:*:dvi|latex:tex4ht:html)
-        tex=${LATEX:-latex};;
-    latex:*:pdf)
-        tex=${PDFLATEX:-pdflatex};;
-    texinfo:*:dvi)
-        # MetaPost also uses the TEX environment variable.  If the user
-        # has set TEX=latex for that reason, don't bomb out.
-        case $TEX in
-          *latex) tex=tex;; # don't bother trying to find etex
-               *) tex=$TEX
-        esac;;
-    texinfo:*:pdf) tex=$PDFTEX;;
-
-    *) error 1 "$out_lang not supported for $in_lang";;
-  esac
-
-  # do the special catcode trick for ~ in filenames only for Texinfo,
-  # not LaTeX.
-  if test x"$in_lang" = xtexinfo && test $catcode_special = maybe; then
-    catcode_special=true
-  else
-    catcode_special=false
-  fi
-
-  # Beware of aux files in subdirectories that require the
-  # subdirectory to exist.
-  case $in_lang:$tidy in
-    latex:true)
-       $SED -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" |
-       sort -u |
-       while read d
-       do
-         ensure_dir "$work_build/$d"
-       done
-       ;;
-  esac
-
-  # Note that this will be used via an eval: quote properly.
-  local cmd="$tex"
-
-  # If possible, make TeX report error locations in GNU format.
-  if $line_error; then
-    if test "${tex_help:+set}" != set; then
-      # Go to a temporary directory to try --help, since old versions that
-      # don't accept --help will generate a texput.log.
-      tex_help_dir=$t2ddir/tex_help
-      ensure_dir "$tex_help_dir"
-      tex_help=`cd "$tex_help_dir" >&6 && $tex --help </dev/null 2>&1 || true`
-    fi
-    # The mk program and perhaps others want to parse TeX's
-    # original error messages.
-    case $tex_help in
-      *file-line-error*) cmd="$cmd --file-line-error";;
-    esac
-  fi
-
-  # Tell TeX about TCX file, if specified.
-  test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file"
-
-  # Tell TeX to make source specials (for backtracking from output to
-  # source, given a sufficiently smart editor), if specified.
-  test -n "$src_specials" && cmd="$cmd $src_specials"
-
-  # Tell TeX to allow running external executables
-  test -n "$shell_escape" && cmd="$cmd $shell_escape"
-
-  # Tell TeX to be batch if requested.
-  if $batch; then
-    # \batchmode does not show terminal output at all, so we don't
-    # want that.  And even in batch mode, TeX insists on having input
-    # from the user.  Close its stdin to make it impossible.
-    cmd="$cmd </dev/null '${escape}nonstopmode'"
-  fi
-
-  # we'd like to handle arbitrary input file names, especially
-  # foo~bar/a~b.tex, since Debian likes ~ characters.
-  if $catcode_special; then
-    # $normaltilde is just to reduce line length in this source file.
-    # The idea is to define \normaltilde as a catcode other ~ character,
-    # then make the active ~ be equivalent to that, instead of the plain
-    # TeX tie.  Then when the active ~ appears in the filename, it will
-    # be expanded to itself, as far as \input will see.  (This is the
-    # same thing that texinfo.tex does in general, BTW.)
-    normaltilde="${escape}catcode126=12 ${escape}def${escape}normaltilde{~}"
-    cmd="$cmd '$normaltilde${escape}catcode126=13 ${escape}let~\normaltilde '"
-  fi
-  # Other special (non-active) characters could be supported by
-  # resetting their catcodes to other on the command line and changing
-  # texinfo.tex to initialize everything to plain catcodes.  Maybe someday.
-
-  # append the \input command.
-  cmd="$cmd '${escape}input'"
-
-  # TeX's \input does not (easily or reliably) support whitespace
-  # characters or other special characters in file names.  Our intensive
-  # use of absolute file names makes this worse: the enclosing directory
-  # names may include white spaces.  Improve the situation using a
-  # symbolic link to the filename in the current directory, in tidy mode
-  # only.  Do not alter in_input.
-  #
-  # The filename is almost always tokenized using plain TeX conventions
-  # (the exception would be if the user made a texinfo.fmt file).  Not
-  # all the plain TeX special characters cause trouble, but there's no
-  # harm in making the link.
-  #
-  case $tidy:`func_dirname "$in_input"` in
-    true:*["$space$tab$newline\"#\$%\\^_{}~"]*)
-      _run_tex_file_name=`basename "$in_input"`
-      if test ! -f "$_run_tex_file_name"; then
-        # It might not be a file, clear it.
-        run rm -f "$_run_tex_file_name"
-        run ln -s "$in_input"
-      fi
-      cmd="$cmd '$_run_tex_file_name'"
-      ;;
-
-    *)
-      cmd="$cmd '$in_input'"
-      ;;
-  esac
-
-  verbose "$0: Running $cmd ..."
-  if eval "$cmd" >&5; then
-    case $out_lang in
-      dvi | pdf ) move_to_dest "$in_noext.$out_lang";;
-    esac
-  else
-    error 1 "$tex exited with bad status, quitting."
-  fi
-}
-
-# run_bibtex ()
-# -------------
-# Run bibtex on (or biber) current file.
-# - If its input (AUX) exists.
-# - If some citations are missing (LOG contains `Citation').
-#   or the LOG complains of a missing .bbl
-#
-# Don't try to be too smart:
-# 1. Running bibtex only if the bbl file exists and is older than
-# the LaTeX file is wrong, since the document might include files
-# that have changed.
-#
-# 3. Because there can be several AUX (if there are \include's),
-# but a single LOG, looking for missing citations in LOG is
-# easier, though we take the risk of matching false messages.
-run_bibtex ()
-{
-  case $in_lang in
-    latex)   bibtex=${BIBTEX:-bibtex};;
-    texinfo) return;;
-  esac
-
-  # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex.
-  # The no .aux && \bibdata test is also for btxmac, in case it was the
-  # first run of a bibtex-using document.  Otherwise, it's possible that
-  # bibtex would never be run.
-  if test -r "$in_noext.aux" \
-     && test -r "$in_noext.log" \
-     && ( (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \
-          || grep '.*Undefined citation' "$in_noext.log" \
-          || grep 'No file .*\.bbl\.' "$in_noext.log") \
-          || (grep 'No \.aux file' "$in_noext.log" \
-              && grep '^\\bibdata' "$in_noext.aux") ) \
-        >&6 2>&1; \
-  then
-    bibtex_aux=`generated_files_get "$in_noext" bibaux_file_p`
-    for f in $bibtex_aux; do
-      run $bibtex "$f"
-    done
-  fi
-
-  # biber(+biblatex) check.
-  if test -r "$in_noext.bcf" \
-     && grep '</bcf:controlfile>' "$in_noext.bcf" >/dev/null; then
-    run ${BIBER:-biber} "$in_noext"
-  fi
-}
-
-# run_index ()
-# ------------
-# Run texindex (or makeindex or texindy) on current index files.  If
-# they already exist, and after running TeX a first time the index
-# files don't change, then there's no reason to run TeX again.  But we
-# won't know that if the index files are out of date or nonexistent.
-run_index ()
-{
-  local index_files
-  index_files=`generated_files_get $in_noext index_file_p`
-  test -n "$index_files" \
-  || return 0
-
-  : ${MAKEINDEX:=makeindex}
-  : ${TEXINDEX:=texindex}
-  : ${TEXINDY:=texindy}
-
-  local index_file
-  local index_noext
-  case $in_lang:$latex2html:`out_lang_tex` in
-    latex:tex4ht:html)
-      for index_file in $index_files
-      do
-        index_noext=`noext "$index_file"`
-        run tex \
-            '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}}
-             \input idxmake.4ht'
-        run $MAKEINDEX -o $index_noext.ind $index_noext.4dx
-      done
-      ;;
-
-    latex:*)
-      if $TEXINDY --version >&6 2>&1; then
-        run $TEXINDY $index_files
-      else
-        run $MAKEINDEX $index_files
-      fi
-      ;;
-
-    texinfo:*)
-      run $TEXINDEX $index_files
-      ;;
-  esac
-}
-
-
-# run_tex4ht ()
-# -------------
-# Run the last two phases of TeX4HT: tex4ht extracts the HTML from the
-# instrumented DVI file, and t4ht converts the figures and installs
-# the files when given -d.
-#
-# Because knowing exactly which files are created is complex (in
-# addition the names are not simple to compute), which makes it
-# difficult to install the output files in a second step, it is much
-# simpler to install directly the output files.
-run_tex4ht ()
-{
-  case $in_lang:$latex2html:`out_lang_tex` in
-    latex:tex4ht:html)
-      : ${TEX4HT:=tex4ht} ${T4HT:=t4ht}
-      run "$TEX4HT" "-f/$in_noext"
-      # Do not remove the / after the destdir.
-      run "$T4HT" "-d`destdir`/" "-f/$in_noext"
-      ;;
-  esac
-}
-
-
-# run_thumbpdf ()
-# ---------------
-run_thumbpdf ()
-{
-  if test `out_lang_tex` = pdf \
-     && test -r "$in_noext.log" \
-     && grep 'thumbpdf\.sty'  "$in_noext.log" >&6 2>&1; \
-  then
-    thumbpdf=${THUMBPDF_CMD:-thumbpdf}
-    thumbcmd="$thumbpdf $in_dir/$in_noext"
-    verbose "Running $thumbcmd ..."
-    if $thumbcmd >&5; then
-      run_tex
-    else
-      report "$thumbpdf exited with bad status." \
-             "Ignoring its output."
-    fi
-  fi
-}
-
-
-# run_dvipdf FILE.dvi
-# -------------------
-# Convert FILE.dvi to FILE.pdf.
-run_dvipdf ()
-{
-  # Find which dvi->pdf program is available.
-  if test -z "$dvipdf"; then
-    for i in "$DVIPDF" dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do
-      if findprog $i; then
-        dvipdf=$i
-      fi
-    done
-  fi
-  # These tools have varying interfaces, some 'input output', others
-  # 'input -o output'.  They all seem to accept 'input' only,
-  # outputting using the expected file name.
-  run $dvipdf "$1"
-  if test ! -f `echo "$1" | $SED -e 's/\.dvi$/.pdf/'`; then
-    error 1 "cannot find output file"
-  fi
-}
-
-# run_tex_suite ()
-# ----------------
-# Run the TeX tools until a fix point is reached.
-run_tex_suite ()
-{
-  # Move to the working directory.
-  if $tidy; then
-    verbose "cd $work_build"
-    cd "$work_build" || exit 1
-  fi
-
-  # Count the number of cycles.
-  local cycle=0
-
-  while :; do
-    # check for probably LaTeX loop (e.g. varioref)
-    if test $cycle -eq "$max_iters"; then
-      error 0 "Maximum of $max_iters cycles exceeded"
-      break
-    fi
-
-    # report progress
-    cycle=`expr $cycle + 1`
-    verbose "Cycle $cycle for $command_line_filename"
-
-    xref_files_save
-
-    # We run bibtex first, because it's more likely for the indexes
-    # to change after bibtex is run than the reverse, though either
-    # would be rare.
-    run_bibtex
-    run_index
-    run_core_conversion
-
-    xref_files_changed || break
-  done
-
-  # If we were using thumbpdf and producing PDF, then run thumbpdf
-  # and TeX one last time.
-  run_thumbpdf
-
-  # If we are using tex4ht, call it.
-  run_tex4ht
-
-  # Install the result if we didn't already (i.e., if the output is
-  # dvipdf or ps).
-  case $latex2html:$out_lang in
-    *:dvipdf)
-      run_dvipdf "$in_noext.`out_lang_tex`"
-      move_to_dest "$in_noext.`out_lang_ext`"
-      ;;
-    *:ps)
-      : ${DVIPS:=dvips}
-      run $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`"
-      move_to_dest "$in_noext.`out_lang_ext`"
-      ;;
-  esac
-
-  cd_orig
-}
-
-## -------------------------------- ##
-## TeX processing auxiliary tools.  ##
-## -------------------------------- ##
-
-
-# A sed script that preprocesses Texinfo sources in order to keep the
-# iftex sections only.  We want to remove non-TeX sections, and comment
-# (with `@c _texi2dvi') TeX sections so that makeinfo does not try to
-# parse them.  Nevertheless, while commenting TeX sections, don't
-# comment @macro/@end macro so that makeinfo does propagate them.
-# Unfortunately makeinfo --iftex --no-ifinfo doesn't work well enough
-# (yet), makeinfo can't parse the TeX commands, so work around with sed.
-#
-# We assume that `@c _texi2dvi' starting a line is not present in the
-# document.
-#
-comment_iftex=\
-'/^@tex/,/^@end tex/{
-  s/^/@c _texi2dvi/
-}
-/^@iftex/,/^@end iftex/{
-  s/^/@c _texi2dvi/
-  /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{
-    s/^@c _texi2dvi//
-  }
-}
-/^@ifnottex/,/^@end ifnottex/{
-  s/^/@c (_texi2dvi)/
-}
-/^@ifinfo/,/^@end ifinfo/{
-  /^@node/p
-  /^@menu/,/^@end menu/p
-  t
-  s/^/@c (_texi2dvi)/
-}
-s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/
-s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/'
-
-# Uncommenting is simpler: remove any leading `@c texi2dvi'; repeated
-# copies can sneak in via macro invocations.
-uncomment_iftex='s/^@c _texi2dvi\(@c _texi2dvi\)*//'
-
-
-# run_makeinfo ()
-# ---------------
-# Expand macro commands in the original source file using Makeinfo.
-# Always use `end' footnote style, since the `separate' style
-# generates different output (arguably this is a bug in -E).  Discard
-# main info output, the user asked to run TeX, not makeinfo.
-run_makeinfo ()
-{
-  test $in_lang = texinfo \
-    || return 0
-
-  # Unless required by the user, makeinfo expansion is wanted only
-  # if texinfo.tex is too old.
-  if $expand; then
-    makeinfo=${MAKEINFO:-makeinfo}
-  else
-    # Check if texinfo.tex performs macro expansion by looking for
-    # its version.  The version is a date of the form YEAR-MO-DA.
-    # We don't need to use [0-9] to match the digits since anyway
-    # the comparison with $txiprereq, a number, will fail with non-digits.
-    # Run in a temporary directory to avoid leaving files.
-    version_test_dir=$t2ddir/version_test
-    ensure_dir "$version_test_dir"
-    if (
-       cd "$version_test_dir"
-       echo '\input texinfo.tex @bye' >txiversion.tex
-       # Be sure that if tex wants to fail, it is not interactive:
-       # close stdin.
-       $TEX txiversion.tex </dev/null >txiversion.out 2>txiversion.err
-    ); then :; else
-      report "texinfo.tex appears to be broken.
-This may be due to the environment variable TEX set to something
-other than (plain) tex, a corrupt texinfo.tex file, or 
-to tex itself simply not working."
-      cat "$version_test_dir/txiversion.out"
-      cat "$version_test_dir/txiversion.err" >&2
-      error 1 "quitting."
-    fi
-    eval `$SED -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"`
-    verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
-    if test "$txiprereq" -le "$txiversion" >&6 2>&1; then
-      makeinfo=
-    else
-      makeinfo=${MAKEINFO:-makeinfo}
-    fi
-    # If TeX is preloaded, offer the user this convenience:
-    if test "$txiformat" = Texinfo; then
-      escape=@
-    fi
-  fi
-
-  if test -n "$makeinfo"; then
-    # in_src: the file with macros expanded.
-    # Use the same basename to generate the same aux file names.
-    work_src=$workdir/src
-    ensure_dir "$work_src"
-    in_src=$work_src/$in_base
-    local miincludes
-    miincludes=`list_prefix includes -I`
-    verbose "Macro-expanding $command_line_filename to $in_src ..."
-    # eval $makeinfo because it might be defined as something complex
-    # (running missing) and then we end up with things like '"-I"',
-    # and "-I" (including the quotes) is not an option name.  This
-    # happens with gettext 0.14.5, at least.
-    $SED "$comment_iftex" "$command_line_filename" \
-      | eval $makeinfo --footnote-style=end -I "$in_dir" $miincludes \
-        -o /dev/null --macro-expand=- \
-      | $SED "$uncomment_iftex" >"$in_src"
-    # Continue only if everything succeeded.
-    if test $? -ne 0 \
-       || test ! -r "$in_src"; then
-      verbose "Expansion failed, ignored...";
-    else
-      in_input=$in_src
-    fi
-  fi
-}
-
-# insert_commands ()
-# ------------------
-# Used most commonly for @finalout, @smallbook, etc.
-insert_commands ()
-{
-  if test -n "$textra"; then
-    # _xtr.  The file with the user's extra commands.
-    work_xtr=$workdir/xtr
-    in_xtr=$work_xtr/$in_base
-    ensure_dir "$work_xtr"
-    verbose "Inserting extra commands: $textra"
-    local textra_cmd
-    case $in_lang in
-      latex)   textra_cmd=1i;;
-      texinfo) textra_cmd='/^@setfilename/a';;
-      *)       error 1 "internal error, unknown language: $in_lang";;
-    esac
-    $SED "$textra_cmd\\
-$textra" "$in_input" >"$in_xtr"
-    in_input=$in_xtr
-  fi
-
-  case $in_lang:$latex2html:`out_lang_tex` in
-    latex:tex4ht:html)
-      # _tex4ht.  The file with the added \usepackage{tex4ht}.
-      work_tex4ht=$workdir/tex4ht
-      in_tex4ht=$work_tex4ht/$in_base
-      ensure_dir "$work_tex4ht"
-      verbose "Inserting \\usepackage{tex4ht}"
-      perl -pe 's<\\documentclass(?:\[.*\])?{.*}>
-                 <$&\\usepackage[xhtml]{tex4ht}>' \
-        "$in_input" >"$in_tex4ht"
-      in_input=$in_tex4ht
-      ;;
-  esac
-}
-
-# compute_language FILENAME
-# -------------------------
-# Return the short string describing the language in which FILENAME
-# is written: `texinfo' or `latex'.
-compute_language ()
-{
-  # If the user explicitly specified the language, use that.
-  # Otherwise, if the first line is \input texinfo, assume it's texinfo.
-  # Otherwise, guess from the file extension.
-  if test -n "$set_language"; then
-    echo $set_language
-  elif $SED 1q "$1" | grep 'input texinfo' >&6; then
-    echo texinfo
-  else
-    # Get the type of the file (latex or texinfo) from the given language
-    # we just guessed, or from the file extension if not set yet.
-    case $1 in
-      *.ltx | *.tex | *.drv | *.dtx) echo latex;;
-      *)                             echo texinfo;;
-    esac
-  fi
-}
-
-
-# run_hevea (MODE)
-# ----------------
-# Convert to HTML/INFO/TEXT.
-#
-# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the
-# charset is set to latin1, and troublesome in other modes since
-# accented characters loose their accents.
-#
-# Don't pass `-o DEST' to hevea because in that case it leaves all its
-# auxiliary files there too...  Too bad, because it means we will need
-# to handle images some day.
-run_hevea ()
-{
-  local hevea="${HEVEA:-hevea}"
-  local run_hevea="$hevea"
-
-  case $1 in
-    html) ;;
-    text|info) run_hevea="$run_hevea -$1";;
-    *) error 1 "run_hevea: invalid argument: $1";;
-  esac
-
-  # Compiling to the tmp directory enables to preserve a previous
-  # successful compilation.
-  run_hevea="$run_hevea -fix -O -o '$out_base'"
-  run_hevea="$run_hevea `list_prefix includes -I` -I '$orig_pwd' "
-  run_hevea="$run_hevea '$in_input'"
-
-  if $debug; then
-    run_hevea="$run_hevea -v -v"
-  fi
-
-  verbose "running $run_hevea"
-  if eval "$run_hevea" >&5; then
-    # hevea leaves trailing white spaces, this is annoying.
-    case $1 in text|info)
-      perl -pi -e 's/[ \t]+$//g' "$out_base"*;;
-    esac
-    case $1 in
-    html|text) move_to_dest "$out_base";;
-    info) # There can be foo.info-1, foo.info-2 etc.
-               move_to_dest "$out_base"*;;
-    esac
-  else
-    error 1 "$hevea exited with bad status, quitting."
-  fi
-}
-
-
-# run_core_conversion ()
-# ----------------------
-# Run the TeX (or HeVeA).
-run_core_conversion ()
-{
-  case $in_lang:$latex2html:`out_lang_tex` in
-    *:dvi|*:pdf|latex:tex4ht:html)
-        run_tex;;
-    latex:*:html|latex:*:text|latex:*:info)
-        run_hevea $out_lang;;
-    *)
-        error 1 "invalid input/output combination: $in_lang/$out_lang";;
-  esac
-}
-
-
-# compile ()
-# ----------
-# Run the full compilation chain, from pre-processing to installation
-# of the output at its expected location.
-compile ()
-{
-  # Source file might include additional sources.
-  # We want `.:$orig_pwd' before anything else.  (We'll add `.:' later
-  # after all other directories have been turned into absolute paths.)
-  # `.' goes first to ensure that any old .aux, .cps,
-  # etc. files in ${directory} don't get used in preference to fresher
-  # files in `.'.  Include orig_pwd in case we are in clean build mode, where
-  # we have cd'd to a temp directory.
-  common="$orig_pwd$path_sep$in_dir$path_sep"
-  #
-  # If we have any includes, put those at the end.
-  # Keep a final path_sep to get the default (system) TeX directories included.
-  txincludes=`list_infix includes $path_sep`
-  test -n "$txincludes" && common="$common$txincludes$path_sep"
-  #
-  for var in $tex_envvars; do
-    eval val="\$common\$${var}_orig"
-    # Convert relative paths to absolute paths, so we can run in another
-    # directory (e.g., in clean build mode, or during the macro-support
-    # detection). ".:" is added here.
-    val=`absolute_filenames "$val"`
-    eval $var="\"$val\""
-    export $var
-    eval verbose \"$var=\'\$${var}\'\"
-  done
-
-  # --expand
-  run_makeinfo
-
-  # --command, --texinfo
-  insert_commands
-
-  # Run until a fix point is reached.
-  run_tex_suite
-}
-
-
-# remove FILES
-# ------------
-remove ()
-{
-  verbose "Removing" "$@"
-  rm -rf "$@"
-}
-
-
-# mostly_clean
-# ------------
-# Remove auxiliary files and directories.  Changes the current directory.
-mostly_clean ()
-{
-  cd_orig
-  set X "$t2ddir"
-  shift
-  $tidy || {
-    local log="$work_build/$in_noext.log"
-    set X ${1+"$@"} "$log" `generated_files_get "$work_build/$in_noext"`
-    shift
-  }
-  remove ${1+"$@"}
-}
-
-
-# cleanup ()
-# ----------
-# Remove what should be removed according to options.
-# Called at the end of each compilation cycle, and at the end of
-# the script.  Changes the current directory.
-cleanup ()
-{
-  case $build_mode in
-    local) cd_orig; remove "$t2ddir";;
-    clean) mostly_clean;;
-    tidy)  ;;
-  esac
-}
-
-
-
-## ---------------------- ##
-## Command line parsing.  ##
-## ---------------------- ##
-
-# Push a token among the arguments that will be used to notice when we
-# ended options/arguments parsing.
-# Use "set dummy ...; shift" rather than 'set - ..." because on
-# Solaris set - turns off set -x (but keeps set -e).
-# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
-# still expand "$@" to a single argument (the empty string) rather
-# than nothing at all.
-arg_sep="$$--$$"
-set dummy ${1+"$@"} "$arg_sep"; shift
-
-# \f
-# Parse command line arguments.
-while test x"$1" != x"$arg_sep"; do
-
-  # Handle --option=value by splitting apart and putting back on argv.
-  case "$1" in
-    --*=*)
-      opt=`echo "$1" | $SED -e 's/=.*//'`
-      val=`echo "$1" | $SED -e 's/[^=]*=//'`
-      shift
-      set dummy "$opt" "$val" ${1+"$@"}; shift
-      ;;
-  esac
-
-  case "$1" in
-    -@ ) escape=@;;
-    -~ ) catcode_special=false;;
-    # Silently and without documentation accept -b and --b[atch] as synonyms.
-    -b | --batch) batch=true;;
-         --build)      shift; build_mode=$1;;
-         --build-dir)  shift; build_dir=$1; build_mode=tidy;;
-    -c | --clean) build_mode=clean;;
-    -D | --debug) debug=true;;
-    -e | -E | --expand) expand=true;;
-    -h | --help) usage;;
-    -I)   shift; list_concat_dirs includes "$1";;
-    -l | --lang | --language) shift; set_language=$1;;
-    --mostly-clean) action=mostly-clean;;
-    --no-line-error) line_error=false;;
-    --max-iterations) shift; max_iters=$1;;
-    -o | --out  | --output)
-      shift
-      # Make it absolute, just in case we also have --clean, or whatever.
-      oname=`absolute "$1"`;;
-
-    # Output formats.
-    -O|--output-format) shift; out_lang_set "$1";;
-       --dvi|--dvipdf|--html|--info|--pdf|--ps|--text)
-       out_lang_set `echo "x$1" | $SED 's/^x--//'`;;
-
-    -p) out_lang_set pdf;;
-    -q | -s | --quiet | --silent) quiet=true; batch=true;;
-    --src-specials) src_specials=--src-specials;;
-    --shell-escape) shell_escape=--shell-escape;;  
-    --tex4ht) latex2html=tex4ht;;
-    -t | --texinfo | --command ) shift; textra="$textra\\
-"`echo "$1" | $SED 's/\\\\/\\\\\\\\/g'`;;
-    --translate-file ) shift; translate_file="$1";;
-    --tidy) build_mode=tidy;;
-    -v | --vers*) version;;
-    -V | --verb*) verb=true;;
-    --) # What remains are not options.
-      shift
-      while test x"$1" != x"$arg_sep"; do
-        set dummy ${1+"$@"} "$1"; shift
-        shift
-      done
-      break;;
-    -*)
-      error 1 "Unknown or ambiguous option \`$1'." \
-              "Try \`--help' for more information."
-      ;;
-    *) set dummy ${1+"$@"} "$1"; shift;;
-   esac
-   shift
-done
-# Pop the token
-shift
-
-# $tidy:  compile in a t2d directory.
-# $clean: remove all the aux files.
-case $build_mode in
-  local) clean=false; tidy=false;;
-  tidy)  clean=false; tidy=true;;
-  clean) clean=true;  tidy=true;;
-      *) error 1 "invalid build mode: $build_mode";;
-esac
-
-# Interpret remaining command line args as filenames.
-case $# in
- 0)
-  error 2 "Missing file arguments." "Try \`--help' for more information."
-  ;;
- 1) ;;
- *)
-  if test -n "$oname"; then
-    error 2 "Can't use option \`--output' with more than one argument."
-  fi
-  ;;
-esac
-
-
-# We can't do much without tex.
-#
-if findprog ${TEX:-tex}; then :; else cat <<EOM
-You don't have a working TeX binary (${TEX:-tex}) installed anywhere in
-your PATH, and texi2dvi cannot proceed without one.  If you want to use
-this script, you'll need to install TeX (if you don't have it) or change
-your PATH or TEX environment variable (if you do).  See the --help
-output for more details.
-
-For information about obtaining TeX, please see http://tug.org/texlive,
-or do a web search for TeX and your operating system or distro.
-EOM
-  exit 1
-fi
-
-
-# We want to use etex (or pdftex) if they are available, and the user
-# didn't explicitly specify.  We don't check for elatex and pdfelatex
-# because (as of 2003), the LaTeX team has asked that new distributions
-# use etex by default anyway.
-#
-# End up with the TEX and PDFTEX variables set to what we are going to use.
-if test -z "$TEX"; then
-  if findprog etex; then TEX=etex; else TEX=tex; fi
-fi
-#
-if test -z "$PDFTEX"; then
-  if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi
-fi
-
-
-# File descriptor usage:
-# 0 standard input
-# 1 standard output (--verbose messages)
-# 2 standard error
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 tools output (turned off by --quiet)
-# 6 tracing/debugging (set -x output, etc.)
-
-
-# Main tools' output (TeX, etc.) that TeX users are used to seeing.
-#
-# If quiet, discard, else redirect to the message flow.
-if $quiet; then
-  exec 5>/dev/null
-else
-  exec 5>&1
-fi
-
-
-# Enable tracing, and auxiliary tools output.
-# 
-# This fd should be used where you'd typically use /dev/null to throw
-# output away.  But sometimes it is convenient to see that output (e.g.,
-# from a grep) to aid debugging.  Especially debugging at distance, via
-# the user.
-# 
-if $debug; then
-  exec 6>&1
-  set -vx
-else
-  exec 6>/dev/null
-fi
-
-# \f
-
-# input_file_name_decode
-# ----------------------
-# Decode COMMAND_LINE_FILENAME, and compute:
-# - COMMAND_LINE_FILENAME clean of TeX commands
-# - IN_DIR
-#   The directory to the input file, possibly absolute if needed.
-# - IN_DIR_ABS
-#   The absolute directory of the input file.
-# - IN_BASE
-#   The input file base name (no directory part).
-# - IN_NOEXT
-#   The input file name without extensions (nor directory part).
-# - IN_INPUT
-#   Defaults to COMMAND_LINE_FILENAME, but might change if the
-#   input is preprocessed.  With directory, possibly absolute.
-input_file_name_decode ()
-{
-  # See if we are run from within AUC-Tex, in which case we are
-  # passed `\input{FOO.tex}' or even `\nonstopmode\input{FOO.tex}'.
-  case $command_line_filename in
-    *\\nonstopmode*)
-      batch=true;;
-  esac
-  case $command_line_filename in
-    *\\input{*}*)
-      # Let AUC-TeX error parser deal with line numbers.
-      line_error=false
-      command_line_filename=`\
-        expr X"$command_line_filename" : X'.*input{\([^}]*\)}'`
-      ;;
-  esac
-
-  # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
-  # prepend `./' in order to avoid that the tools take it as an option.
-  echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \
-  || command_line_filename="./$command_line_filename"
-
-  # See if the file exists.  If it doesn't we're in trouble since, even
-  # though the user may be able to reenter a valid filename at the tex
-  # prompt (assuming they're attending the terminal), this script won't
-  # be able to find the right xref files and so forth.
-  test -r "$command_line_filename" \
-  || error 1 "cannot read $command_line_filename, skipping."
-
-  # Get the name of the current directory.
-  in_dir=`func_dirname "$command_line_filename"`
-  in_dir_abs=`absolute "$in_dir"`
-  # In a clean build, we `cd', so get an absolute file name.
-  if $tidy; then
-    in_dir=$in_dir_abs
-  fi
-
-  # Strip directory part but leave extension.
-  in_base=`basename "$command_line_filename"`
-  # Strip extension.
-  in_noext=`noext "$in_base"`
-
-  # The normalized file name to compile.  Must always point to the
-  # file to actually compile (in case of recoding, macro-expansion etc.).
-  in_input=$in_dir/$in_base
-
-
-  # Compute the output file name.
-  if test x"$oname" != x; then
-    out_name=$oname
-  else
-    out_name=$in_noext.`out_lang_ext`
-  fi
-  out_dir=`func_dirname "$out_name"`
-  out_dir_abs=`absolute "$out_dir"`
-  out_base=`basename "$out_name"`
-  out_noext=`noext "$out_base"`
-}
-
-
-## -------------- ##
-## TeXify files.  ##
-## -------------- ##
-
-for command_line_filename
-do
-  verbose "Processing $command_line_filename ..."
-
-  input_file_name_decode
-
-  # `texinfo' or `latex'?
-  in_lang=`compute_language "$command_line_filename"`
-
-  # An auxiliary directory used for all the auxiliary tasks involved
-  # in compiling this document.
-  case $build_dir in
-      '' | . ) t2ddir=$out_noext.t2d ;;
-      *) # Avoid collisions between multiple occurrences of the same
-         # file, so depend on the output path.  Remove leading `./',
-         # at least to avoid creating a file starting with `.!', i.e.,
-         # an invisible file. The sed expression is fragile if the cwd
-         # has active characters.  Transform / into ! so that we don't
-         # need `mkdir -p'.  It might be something to reconsider.
-         t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" |
-             $SED "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"`
-  esac
-  # Remove it at exit if clean mode.
-  trap "cleanup" 0 1 2 15
-
-  ensure_dir "$build_dir" "$t2ddir"
-
-  # We will change directory, better work with an absolute path...
-  t2ddir=`absolute "$t2ddir"`
-  # Sometimes there are incompatibilities between auxiliary files for
-  # DVI and PDF.  The contents can also change whether we work on PDF
-  # and/or DVI.  So keep separate spaces for each.
-  workdir=$t2ddir/`out_lang_tex`
-  ensure_dir "$workdir"
-
-  # _build.  In a tidy build, where the auxiliary files are output.
-  if $tidy; then
-    work_build=$workdir/build
-  else
-    work_build=.
-  fi
-
-  # _bak.  Copies of the previous auxiliary files (another round is
-  # run if they differ from the new ones).
-  work_bak=$workdir/bak
-
-  # Make those directories.
-  ensure_dir "$work_build" "$work_bak"
-
-  case $action in
-    compile)
-      # Compile the document.
-      compile
-      cleanup
-      ;;
-
-    mostly-clean)
-      mostly_clean
-      ;;
-  esac
-done
-
-verbose "done."
-exit 0 # exit successfully, not however we ended the loop.
diff --git a/support/texi2html-1.64 b/support/texi2html-1.64
deleted file mode 100755 (executable)
index bdb3bee..0000000
+++ /dev/null
@@ -1,5429 +0,0 @@
-#! /usr/bin/perl
-'di ';
-'ig 00 ';
-#+##############################################################################
-#
-# texi2html: Program to transform Texinfo documents to HTML
-#
-#    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
-#
-#    This program is free software; you can redistribute it and/or modify
-#    it under the terms of the GNU General Public License as published by
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-# 
-#-##############################################################################
-
-# This requires perl version 5 or higher
-require 5.0;
-
-#++##############################################################################
-#
-# NOTE FOR DEBUGGING THIS SCRIPT:
-# You can run 'perl texi2html.pl' directly, provided you have
-# the environment variable T2H_HOME set to the directory containing
-# the texi2html.init file
-#
-#--##############################################################################
-
-# CVS version:
-# $Id: texi2html.pl,v 1.55 2000/07/27 14:39:41 obachman Exp $
-
-# Homepage:
-$T2H_HOMEPAGE = <<EOT;
-http://www.mathematik.uni-kl.de/~obachman/Texi2html
-EOT
-
-# Authors:  
-$T2H_AUTHORS = <<EOT;
-Written by: Lionel Cons <Lionel.Cons\@cern.ch> (original author)
-            Karl Berry  <karl\@freefriends.org>
-            Olaf Bachmann <obachman\@mathematik.uni-kl.de>
-            and many others.
-Maintained by: Olaf Bachmann <obachman\@mathematik.uni-kl.de>
-Send bugs and suggestions to <texi2html\@mathematik.uni-kl.de>
-EOT
-
-# Version: set in configure.in
-$THISVERSION = '1.64';
-$THISPROG = "texi2html $THISVERSION";  # program name and version
-  
-# The man page for this program is included at the end of this file and can be
-# viewed using the command 'nroff -man texi2html'.
-
-# Identity:
-
-$T2H_TODAY = &pretty_date;             # like "20 September 1993"
-# the eval prevents this from breaking on system which do not have
-# a proper getpwuid implemented
-eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
-
-#+++############################################################################
-#                                                                              #
-# Initialization                                                               #
-# Pasted content of File $(srcdir)/texi2html.init: Default initializations     # 
-#                                                                              #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-# 
-# -*-perl-*-
-######################################################################
-# File: texi2html.init
-#
-# Sets default values for command-line arguments and for various customizable
-# procedures
-#
-# A copy of this file is pasted into the beginning of texi2html by
-# 'make texi2html'
-#
-# Copy this file and make changes to it, if you like.
-# Afterwards, either, load it with command-line option -init_file <your_init_file>
-#
-# $Id: texi2html.init,v 1.34 2000/07/27 14:09:02 obachman Exp $
-
-######################################################################
-# stuff which can also be set by command-line options
-#
-#
-# Note: values set here, overwrite values set by the command-line
-# options before -init_file and might still be overwritten by
-# command-line arguments following the -init_file option
-#
-
-# T2H_OPTIONS is a hash whose keys are the (long) names of valid
-# command-line options and whose values are a hash with the following keys:
-# type    ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info)
-# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info)
-# verbose ==> short description of option (displayed by -h)
-# noHelp  ==> if 1 -> for "not so important options": only print description on -h 1
-#                2 -> for obsolete options: only print description on -h 2
-
-$T2H_DEBUG = 0;
-$T2H_OPTIONS -> {debug} =
-{
- type => '=i',
- linkage => \$main::T2H_DEBUG,
- verbose => 'output HTML with debuging information',
-};
-
-$T2H_DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'; 
-$T2H_OPTIONS -> {doctype} = 
-{
- type => '=s',
- linkage => \$main::T2H_DOCTYPE,
- verbose => 'document type which is output in header of HTML files',
- noHelp => 1
-};
-
-$T2H_CHECK = 0;
-$T2H_OPTIONS -> {check} =
-{
- type => '!',
- linkage => \$main::T2H_CHECK,
- verbose => 'if set, only check files and output all things that may be Texinfo commands',
- noHelp => 1
-};
-
-# -expand
-# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections
-# else, neither expand @iftex, @tex, nor @ifinfo sections
-$T2H_EXPAND = "info";
-$T2H_OPTIONS -> {expand} = 
-{
- type => '=s',
- linkage => \$T2H_EXPAND,
- verbose => 'Expand info|tex|none section of texinfo source',
-};
-
-# - glossary
-#if set, uses section named `Footnotes' for glossary
-$T2H_USE_GLOSSARY = 0;
-T2H_OPTIONS -> {glossary} =
-{
- type => '!',
- linkage => \$T2H_USE_GLOSSARY,
- verbose => "if set, uses section named `Footnotes' for glossary",
- noHelp  => 1,
-};
-
-
-# -invisible
-# $T2H_INVISIBLE_MARK is the text used to create invisible destination
-# anchors for index links (you can for instance use the invisible.xbm
-# file shipped with this program). This is a workaround for a known
-# bug of many WWW browsers, including netscape.
-# For me, it works fine without it -- on the contrary: if there, it
-# inserts space between headers and start of text (obachman 3/99)
-$T2H_INVISIBLE_MARK = '';
-# $T2H_INVISIBLE_MARK = '&#160;';
-$T2H_OPTIONS -> {invisible} =
-{
- type => '=s',
- linkage => \$T2H_INVISIBLE_MARK,
- verbose => 'use text in invisble anchot',
- noHelp  => 1,
-};
-
-# -iso
-# if set, ISO8879 characters are used for special symbols (like copyright, etc)
-$T2H_USE_ISO = 0;
-$T2H_OPTIONS -> {iso} =
-{
- type => 'iso',
- linkage => \$T2H_USE_ISO,
- verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)',
- noHelp => 1,
-};
-
-# -I
-# list directories where @include files are searched for (besides the
-# directory of the doc file) additional '-I' args add to this list
-@T2H_INCLUDE_DIRS = (".");
-$T2H_OPTIONS -> {I} =
-{
- type => '=s',
- linkage => \@T2H_INCLUDE_DIRS,
- verbose => 'append $s to the @include search path',
-};
-
-# -top_file
-# uses file of this name for top-level file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>.html is used
-# Typically, you would set this to "index.html".
-$T2H_TOP_FILE = '';
-$T2H_OPTIONS -> {top_file} =
-{
- type => '=s',
- linkage => \$T2H_TOP_FILE,
- verbose => 'use $s as top file, instead of <docname>.html',
-};
-
-
-# -toc_file
-# uses file of this name for table of contents file
-# extension is manipulated appropriately, if necessary.
-# If empty, <basename of document>_toc.html is used
-$T2H_TOC_FILE = '';
-$T2H_OPTIONS -> {toc_file} =
-{
- type => '=s',
- linkage => \$T2H_TOC_FILE,
- verbose => 'use $s as ToC file, instead of <docname>_toc.html',
-};
-
-# -frames
-# if set, output two additional files which use HTML 4.0 "frames".
-$T2H_FRAMES = 0;
-$T2H_OPTIONS -> {frames} =
-{
- type => '!',
- linkage => \$T2H_FRAMES,
- verbose => 'output files which use HTML 4.0 frames (experimental)',
- noHelp => 1,
-};
-
-
-# -menu | -nomenu
-# if set, show the Texinfo menus
-$T2H_SHOW_MENU = 1;
-$T2H_OPTIONS -> {menu} =
-{
- type => '!',
- linkage => \$T2H_SHOW_MENU,
- verbose => 'ouput Texinfo menus',
-};
-
-# -number | -nonumber
-# if set, number sections and show section names and numbers in references 
-# and menus
-$T2H_NUMBER_SECTIONS = 1;
-$T2H_OPTIONS -> {number} =
-{
- type => '!',
- linkage => \$T2H_NUMBER_SECTIONS,
- verbose => 'use numbered sections'
-};
-
-# if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu
-# entries, instead of section names
-$T2H_NODE_NAME_IN_MENU = 0;
-
-# if set and menu entry equals menu descr, then do not print menu descr.
-# Likewise, if node name equals entry name, do not print entry name.
-$T2H_AVOID_MENU_REDUNDANCY = 1;
-
-# -split section|chapter|none 
-# if set to 'section' (resp. 'chapter') create one html file per (sub)section
-# (resp. chapter) and separate pages for Top, ToC, Overview, Index,
-# Glossary, About.
-# otherwise, create monolithic html file which contains whole document
-#$T2H_SPLIT = 'section';
-$T2H_SPLIT = '';
-$T2H_OPTIONS -> {split} =
-{
- type => '=s',
- linkage => \$T2H_SPLIT,
- verbose => 'split document on section|chapter else no splitting',
-};
-
-# -section_navigation|-no-section_navigation
-# if set, then navigation panels are printed at the beginning of each section
-# and, possibly at the end (depending on whether or not there were more than 
-# $T2H_WORDS_IN_PAGE  words on page
-# This is most useful if you do not want to have section navigation 
-# on -split chapter
-$T2H_SECTION_NAVIGATION = 1;
-$T2H_OPTIONS -> {sec_nav} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'output navigation panels for each section',
-};
-
-# -subdir
-# if set put result files in this directory
-# if not set result files are put into current directory
-#$T2H_SUBDIR = 'html';
-$T2H_SUBDIR = '';
-$T2H_OPTIONS -> {subdir} =
-{
- type => '=s',
- linkage => \$T2H_SUBDIR,
- verbose => 'put HTML files in directory $s, instead of $cwd',
-};
-
-# -short_extn
-# If this is set all HTML file will have extension ".htm" instead of
-# ".html". This is helpful when shipping the document to PC systems.
-$T2H_SHORTEXTN = 0;
-$T2H_OPTIONS -> {short_ext} =
-{
- type => '!',
- linkage => \$T2H_SHORTEXTN,
- verbose => 'use "htm" extension for output HTML files',
-};
-
-
-# -prefix
-# Set the output file prefix, prepended to all .html, .gif and .pl files.
-# By default, this is the basename of the document
-$T2H_PREFIX = '';
-$T2H_OPTIONS -> {prefix} =
-{
- type => '=s',
- linkage => \$T2H_PREFIX,
- verbose => 'use as prefix for output files, instead of <docname>',
-};
-
-# -o filename
-# If set, generate monolithic document output html into $filename
-$T2H_OUT = '';
-$T2H_OPTIONS -> {out_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'if set, all HTML output goes into file $s',
-};
-
-# -short_ref
-#if set cross-references are given without section numbers
-$T2H_SHORT_REF = '';
-$T2H_OPTIONS -> {short_ref} =
-{
- type => '!',
- linkage => \$T2H_SHORT_REF,
- verbose => 'if set, references are without section numbers',
-};
-
-# -idx_sum
-# if value is set, then for each @prinindex $what
-# $docu_name_$what.idx is created which contains lines of the form
-# $key\t$ref sorted alphabetically (case matters)
-$T2H_IDX_SUMMARY = 0;
-$T2H_OPTIONS -> {idx_sum} =
-{
- type => '!',
- linkage => \$T2H_IDX_SUMMARY,
- verbose => 'if set, also output index summary',
- noHelp  => 1,
-};
-
-# -verbose
-# if set, chatter about what we are doing
-$T2H_VERBOSE = '';
-$T2H_OPTIONS -> {Verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'print progress info to stdout',
-};
-
-# -lang
-# For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title.
-# To add a new language, supply list of titles (see $T2H_WORDS below).
-# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02 
-# for  definitions)
-# Default's to 'en' if not set or no @documentlanguage is specified
-$T2H_LANG = '';
-$T2H_OPTIONS -> {lang} =
-{
- type => '=s',
- linkage => sub {SetDocumentLanguage($_[1])},
- verbose => 'use $s as document language (ISO 639 encoding)',
-};
-
-# -l2h
-# if set, uses latex2html for generation of math content 
-$T2H_L2H = '';
-$T2H_OPTIONS -> {l2h} =
-{
- type => '!',
- linkage => \$T2H_L2H,
- verbose => 'if set, uses latex2html for @math and @tex',
-};
-
-######################
-# The following options are only relevant if $T2H_L2H is set
-#
-# -l2h_l2h
-# name/location of latex2html progam
-$T2H_L2H_L2H = "latex2html";
-$T2H_OPTIONS -> {l2h_l2h} =
-{
- type => '=s',
- linkage => \$T2H_L2H_L2H,
- verbose => 'program to use for latex2html translation',
- noHelp => 1,
-};
-
-# -l2h_skip
-# if set, skips actual call to latex2html tries to reuse previously generated 
-# content, instead
-$T2H_L2H_SKIP = '';
-$T2H_OPTIONS -> {l2h_skip} =
-{
- type => '!',
- linkage => \$T2H_L2H_SKIP,
- verbose => 'if set, tries to reuse previously latex2html output',
- noHelp => 1,
-};
-
-# -l2h_tmp
-# if set, l2h uses this directory for temporarary files. The path
-# leading to this directory may not contain a dot (i.e., a "."),
-# otherwise, l2h will fail
-$T2H_L2H_TMP = '';
-$T2H_OPTIONS -> {l2h_tmp} =
-{
- type => '=s',
- linkage => \$T2H_L2H_TMP,
- verbose => 'if set, uses $s as temporary latex2html directory',
- noHelp => 1,
-};
-
-# if set, cleans intermediate files (they all have the prefix $doc_l2h_) 
-# of l2h 
-$T2H_L2H_CLEAN = 1;
-$T2H_OPTIONS -> {l2h_clean} =
-{
- type => '!',
- linkage => \$T2H_L2H_CLEAN,
- verbose => 'if set, do not keep intermediate latex2html files for later reuse',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {D} =
-{
- type => '=s',
- linkage => sub {$main::value{@_[1]} = 1;},
- verbose => 'equivalent to Texinfo "@set $s 1"',
- noHelp => 1,
-};
-
-$T2H_OPTIONS -> {init_file} =
-{
- type => '=s',
- linkage => \&LoadInitFile,
- verbose => 'load init file $s'
-};
-
-
-##############################################################################
-#
-# The following can only be set in the init file
-#
-##############################################################################
-
-# if set, center @image by default
-# otherwise, do not center by default
-$T2H_CENTER_IMAGE = 1;
-
-# used as identation for block enclosing command @example, etc
-# If not empty, must be enclosed in <td></td>
-$T2H_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# same as above, only for @small
-$T2H_SMALL_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
-# font size for @small
-$T2H_SMALL_FONT_SIZE = '-1';
-
-# if non-empty, and no @..heading appeared in Top node, then
-# use this as header for top node/section, otherwise use value of 
-# @settitle or @shorttitle (in that order)
-$T2H_TOP_HEADING = '';
-
-# if set, use this chapter for 'Index' button, else
-# use first chapter whose name matches 'index' (case insensitive)
-$T2H_INDEX_CHAPTER = '';
-
-# if set and $T2H_SPLIT is set, then split index pages at the next letter
-# after they have more than that many entries
-$T2H_SPLIT_INDEX = 100;
-
-# if set (e.g., to index.html) replace hrefs to this file 
-# (i.e., to index.html) by ./
-$T2H_HREF_DIR_INSTEAD_FILE = '';
-
-########################################################################
-# Language dependencies: 
-# To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash
-# To redefine one word, simply do:
-# $T2H_WORDS->{<language>}->{<word>} = 'whatever' in your personal init file.
-#
-$T2H_WORDS_EN =
-{
- # titles  of pages
- 'ToC_Title' => 'Table of Contents',
- 'Overview_Title' => 'Short Table of Contents',
- 'Index_Title' => 'Index',
- 'About_Title' => 'About this document',
- 'Footnotes_Title' => 'Footnotes',
- 'See' => 'See',
- 'see' => 'see',
- 'section' => 'section',
-# If necessary, we could extend this as follows: 
-#  # text for buttons
-#  'Top_Button' => 'Top',
-#  'ToC_Button' => 'Contents',
-#  'Overview_Button' => 'Overview',
-#  'Index_button' => 'Index',
-#  'Back_Button' => 'Back',
-#  'FastBack_Button' => 'FastBack',
-#  'Prev_Button' => 'Prev',
-#  'Up_Button' => 'Up',
-#  'Next_Button' => 'Next',
-#  'Forward_Button' =>'Forward',
-#  'FastWorward_Button' => 'FastForward',
-#  'First_Button' => 'First',
-#  'Last_Button' => 'Last',
-#  'About_Button' => 'About'
-};
-
-$T2H_WORD_DE =
-{
- 'ToC_Title' => 'Inhaltsverzeichniss',
- 'Overview_Title' => 'Kurzes Inhaltsverzeichniss',
- 'Index_Title' => 'Index',
- 'About_Title' => '&Uuml;ber dieses Dokument',
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'Siehe',
- 'see' => 'siehe',
- 'section' => 'Abschnitt',
-};
-
-$T2H_WORD_NL =
-{
- 'ToC_Title' => 'Inhoudsopgave',
- 'Overview_Title' => 'Korte inhoudsopgave',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!', #No translation available!
- 'See' => 'Zie',
- 'see' => 'zie',
- 'section' => 'sectie',
-};
-
-$T2H_WORD_ES =
-{
- 'ToC_Title' => '&iacute;ndice General',
- 'Overview_Title' => 'Resumen del Contenido',
- 'Index_Title' => 'Index', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'Fu&szlig;noten',
- 'See' => 'V&eacute;ase',
- 'see' => 'v&eacute;ase',
- 'section' => 'secci&oacute;n',
-};
-
-$T2H_WORD_NO =
-{
- 'ToC_Title' => 'Innholdsfortegnelse',
- 'Overview_Title' => 'Kort innholdsfortegnelse',
- 'Index_Title' => 'Indeks', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Se',
- 'see' => 'se',
- 'section' => 'avsnitt',
-};
-
-$T2H_WORD_PT =
-{
- 'ToC_Title' => 'Sum&aacute;rio',
- 'Overview_Title' => 'Breve Sum&aacute;rio',
- 'Index_Title' => '&Iacute;ndice', #Not sure ;-)
- 'About_Title' => 'No translation available!', #No translation available!
- 'Footnotes_Title' => 'No translation available!',
- 'See' => 'Veja',
- 'see' => 'veja',
- 'section' => 'Se&ccedil;&atilde;o',
-};
-
-$T2H_WORDS =
-{
- 'en' => $T2H_WORDS_EN,
- 'de' => $T2H_WORDS_DE,
- 'nl' => $T2H_WORDS_NL,
- 'es' => $T2H_WORDS_ES,
- 'no' => $T2H_WORDS_NO,
- 'pt' => $T2H_WORDS_PT
-};
-
-@MONTH_NAMES_EN =
-(
- 'January', 'February', 'March', 'April', 'May',
- 'June', 'July', 'August', 'September', 'October',
- 'November', 'December'
-);
-
-@MONTH_NAMES_DE =
-(
- 'Januar', 'Februar', 'M&auml;rz', 'April', 'Mai',
- 'Juni', 'Juli', 'August', 'September', 'Oktober',
- 'November', 'Dezember'
-);
-
-@MONTH_NAMES_NL =
-(
- 'Januari', 'Februari', 'Maart', 'April', 'Mei',
- 'Juni', 'Juli', 'Augustus', 'September', 'Oktober',
- 'November', 'December'
-);
-
-@MONTH_NAMES_ES =
-(
- 'enero', 'febrero', 'marzo', 'abril', 'mayo',
- 'junio', 'julio', 'agosto', 'septiembre', 'octubre',
- 'noviembre', 'diciembre'
-);
-
-@MONTH_NAMES_NO =
-(
-
- 'januar', 'februar', 'mars', 'april', 'mai',
- 'juni', 'juli', 'august', 'september', 'oktober',
- 'november', 'desember'
-);
-
-@MONTH_NAMES_PT =
-(
- 'Janeiro', 'Fevereiro', 'Mar&ccedil;o', 'Abril', 'Maio',
- 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
- 'Novembro', 'Dezembro'
-);
-
-
-$MONTH_NAMES =
-{
-    'en' => \@MONTH_NAMES_EN,
-    'de' => \@MONTH_NAMES_DE,
-    'es' => \@MONTH_NAMES_ES,
-    'nl' => \@MONTH_NAMES_NL,
-    'no' => \@MONTH_NAMES_NO,
-    'pt' => \@MONTH_NAMES_PT
-};
-########################################################################
-# Control of Page layout:
-# You can make changes of the Page layout at two levels:
-# 1.) For small changes, it is often enough to change the value of
-#     some global string/hash/array variables
-# 2.) For larger changes, reimplement one of the T2H_DEFAULT_<fnc>* routines,
-#     give them another name, and assign them to the respective
-#     $T2H_<fnc> variable.
-
-# As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold 
-# href, html-name, node-name of
-# This     -- current section (resp. html page)
-# Top      -- top page ($T2H_TOP_FILE)
-# Contents -- Table of contents
-# Overview -- Short table of contents
-# Index    -- Index page
-# About    -- page which explain "navigation buttons"
-# First    -- first node 
-# Last     -- last node
-#
-# Whether or not the following hash values are set, depends on the context 
-# (all values are w.r.t. 'This' section)
-# Next        -- next node of texinfo
-# Prev        -- previous node of texinfo
-# Up          -- up node of texinfo
-# Forward     -- next node in reading order
-# Back        -- previous node in reading order
-# FastForward -- if leave node, up and next, else next node
-# FastBackward-- if leave node, up and prev, else prev node
-#
-# Furthermore, the following global variabels are set:
-# $T2H_THISDOC{title}     -- title as set by @setttile
-# $T2H_THISDOC{fulltitle} -- full title as set by @title...
-# $T2H_THISDOC{subtitle}  -- subtitle as set by @subtitle
-# $T2H_THISDOC{author}    -- author as set by @author
-# 
-# and pointer to arrays of lines which need to be printed by t2h_print_lines 
-# $T2H_OVERVIEW      -- lines of short table of contents
-# $T2H_TOC           -- lines of table of contents
-# $T2H_TOP           -- lines of Top texinfo node 
-# $T2H_THIS_SECTION  -- lines of 'This' section
-
-#
-# There are the following subs which control the layout:
-#
-$T2H_print_section            = \&T2H_DEFAULT_print_section;
-$T2H_print_Top_header         = \&T2H_DEFAULT_print_Top_header;       
-$T2H_print_Top_footer        = \&T2H_DEFAULT_print_Top_footer;       
-$T2H_print_Top               = \&T2H_DEFAULT_print_Top;              
-$T2H_print_Toc               = \&T2H_DEFAULT_print_Toc;              
-$T2H_print_Overview          = \&T2H_DEFAULT_print_Overview;         
-$T2H_print_Footnotes         = \&T2H_DEFAULT_print_Footnotes;        
-$T2H_print_About             = \&T2H_DEFAULT_print_About;            
-$T2H_print_misc_header       = \&T2H_DEFAULT_print_misc_header;      
-$T2H_print_misc_footer       = \&T2H_DEFAULT_print_misc_footer;      
-$T2H_print_misc                      = \&T2H_DEFAULT_print_misc;
-$T2H_print_chapter_header     = \&T2H_DEFAULT_print_chapter_header;      
-$T2H_print_chapter_footer     = \&T2H_DEFAULT_print_chapter_footer;      
-$T2H_print_page_head         = \&T2H_DEFAULT_print_page_head;        
-$T2H_print_page_foot         = \&T2H_DEFAULT_print_page_foot;        
-$T2H_print_head_navigation    = \&T2H_DEFAULT_print_head_navigation;  
-$T2H_print_foot_navigation    = \&T2H_DEFAULT_print_foot_navigation;  
-$T2H_button_icon_img         = \&T2H_DEFAULT_button_icon_img;        
-$T2H_print_navigation        = \&T2H_DEFAULT_print_navigation;       
-$T2H_about_body                      = \&T2H_DEFAULT_about_body;            
-$T2H_print_frame              = \&T2H_DEFAULT_print_frame;
-$T2H_print_toc_frame          = \&T2H_DEFAULT_print_toc_frame;
-
-########################################################################
-# Layout for html for every sections
-#
-sub T2H_DEFAULT_print_section
-{
-  my $fh = shift;
-  local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS;
-  &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION;
-  my $nw = t2h_print_lines($fh);
-  if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION)
-  {
-    &$T2H_print_foot_navigation($fh, $nw);
-  }
-  else
-  {
-    print $fh '<HR SIZE="6">' . "\n";
-  }
-}
-
-###################################################################
-# Layout of top-page I recommend that you use @ifnothtml, @ifhtml,
-# @html within the Top texinfo node to specify content of top-level
-# page. 
-#
-# If you enclose everything in @ifnothtml, then title, subtitle,
-# author and overview is printed
-# T2H_HREF of Next, Prev, Up, Forward, Back are not defined
-# if $T2H_SPLIT then Top page is in its own html file
-sub T2H_DEFAULT_print_Top_header
-{
-  &$T2H_print_page_head(@_) if $T2H_SPLIT;
-  t2h_print_label(@_); # this needs to be called, otherwise no label set
-  &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_Top_footer
-{
-  &$T2H_print_foot_navigation(@_);
-  &$T2H_print_page_foot(@_) if $T2H_SPLIT; 
-}
-sub T2H_DEFAULT_print_Top
-{
-  my $fh = shift;
-
-  # for redefining navigation buttons use:
-  # local $T2H_BUTTONS = [...];
-  # as it is, 'Top', 'Contents', 'Index', 'About' are printed
-  local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
-  &$T2H_print_Top_header($fh);
-  if ($T2H_THIS_SECTION)
-  {
-    # if top-level node has content, then print it with extra header
-    print $fh "<H1>$T2H_NAME{Top}</H1>"
-      unless ($T2H_HAS_TOP_HEADING);
-    t2h_print_lines($fh, $T2H_THIS_SECTION)
-  }
-  else
-  {
-    # top-level node is fully enclosed in @ifnothtml
-    # print fulltitle, subtitle, author, Overview
-    print $fh 
-      "<CENTER>\n<H1>" .
-      join("</H1>\n<H1>", split(/\n/,  $T2H_THISDOC{fulltitle})) .
-      "</H1>\n";
-    print $fh "<H2>$T2H_THISDOC{subtitle}</H2>\n" if $T2H_THISDOC{subtitle};
-    print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author};
-    print $fh <<EOT;
-</CENTER>
-<HR>
-<P></P>  
-<H2> Overview: </H2>
-<BLOCKQUOTE>  
-EOT
-    t2h_print_lines($fh, $T2H_OVERVIEW);
-    print $fh "</BLOCKQUOTE>\n";
-  }
-  &$T2H_print_Top_footer($fh);
-}
-
-###################################################################
-# Layout of Toc, Overview, and Footnotes pages
-# By default, we use "normal" layout 
-# T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined
-# use: local $T2H_BUTTONS = [...] to redefine navigation buttons
-sub T2H_DEFAULT_print_Toc
-{
-  return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Overview
-{
-  return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_Footnotes
-{
-  return &$T2H_print_misc(@_);
-}
-sub T2H_DEFAULT_print_About
-{
-  return &$T2H_print_misc(@_);
-}
-
-sub T2H_DEFAULT_print_misc_header
-{
-  &$T2H_print_page_head(@_) if $T2H_SPLIT;
-  # this needs to be called, otherwise, no labels are set
-  t2h_print_label(@_); 
-  &$T2H_print_head_navigation(@_);
-}
-sub T2H_DEFAULT_print_misc_footer
-{
-  &$T2H_print_foot_navigation(@_);
-  &$T2H_print_page_foot(@_) if $T2H_SPLIT; 
-}
-sub T2H_DEFAULT_print_misc
-{
-  my $fh = shift;
-  local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
-  &$T2H_print_misc_header($fh);
-  print $fh "<H1>$T2H_NAME{This}</H1>\n";
-  t2h_print_lines($fh);
-  &$T2H_print_misc_footer($fh);
-}
-
-###################################################################
-# chapter_header and chapter_footer are only called if
-# T2H_SPLIT eq 'chapter'
-# chapter_header: after print_page_header, before print_section
-# chapter_footer: after print_section of last section, before print_page_footer
-# 
-# If you want to get rid of navigation stuff after each section,
-# redefine print_section such that it does not call print_navigation,
-# and put print_navigation into print_chapter_header
-@T2H_CHAPTER_BUTTONS =
-  (
-   'FastBack', 'FastForward', ' ', 
-   ' ', ' ', ' ', ' ',
-   'Top', 'Contents', 'Index', 'About', 
-  );
-
-sub T2H_DEFAULT_print_chapter_header
-{
-  # nothing to do there, by default
-  if (! $T2H_SECTION_NAVIGATION)
-  {
-    my $fh = shift;
-    local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
-    &$T2H_print_navigation($fh);
-    print $fh "\n<HR SIZE=2>\n";
-  }
-}
-
-sub T2H_DEFAULT_print_chapter_footer
-{
-  local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
-  &$T2H_print_navigation(@_);
-}
-###################################################################
-$T2H_TODAY = &pretty_date;             # like "20 September 1993"
-
-sub pretty_date {
-    local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
-    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
-    $year += ($year < 70) ? 2000 : 1900;
-    # obachman: Let's do it as the Americans do
-    return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year);
-}
-
-
-###################################################################
-# Layout of standard header and footer
-#
-
-# Set the default body text, inserted between <BODY ... > 
-###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-$T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
-# text inserted after <BODY ...>
-$T2H_AFTER_BODY_OPEN = '';
-#text inserted before </BODY>
-$T2H_PRE_BODY_CLOSE = '';
-# this is used in footer
-$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
-$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
-# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
-# can be used for <style> <script>, <meta> tags
-$T2H_EXTRA_HEAD = '';
-
-sub T2H_DEFAULT_print_page_head
-{
-  my $fh = shift; 
-  my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}";
-  print $fh <<EOT;
-<HTML>
-$T2H_DOCTYPE
-<!-- Created on $T2H_TODAY by $THISPROG -->
-<!-- 
-$T2H_AUTHORS 
--->
-<HEAD>
-<TITLE>$longtitle</TITLE>
-
-<META NAME="description" CONTENT="$longtitle">
-<META NAME="keywords" CONTENT="$longtitle">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="$THISPROG">
-$T2H_EXTRA_HEAD
-</HEAD>
-
-<BODY $T2H_BODYTEXT>
-$T2H_AFTER_BODY_OPEN
-EOT
-}
-
-sub T2H_DEFAULT_print_page_foot
-{
-  my $fh = shift;
-  print $fh <<EOT;
-<BR>  
-<FONT SIZE="-1">
-This document was generated
-$T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-$T2H_PRE_BODY_CLOSE
-</BODY>
-</HTML>
-EOT
-}
-
-###################################################################
-# Layout of navigation panel
-
-# if this is set, then a vertical navigation panel is used
-$T2H_VERTICAL_HEAD_NAVIGATION = 0;
-sub T2H_DEFAULT_print_head_navigation
-{
-  my $fh = shift;
-  if ($T2H_VERTICAL_HEAD_NAVIGATION)
-  {
-    print $fh <<EOT;
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR VALIGN="TOP">
-<TD ALIGN="LEFT">
-EOT
-  }
-  &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION);
-  if ($T2H_VERTICAL_HEAD_NAVIGATION)
-  {
-    print $fh <<EOT;
-</TD>
-<TD ALIGN="LEFT">
-EOT
-  }
-  elsif ($T2H_SPLIT eq 'section')
-  {
-    print $fh "<HR SIZE=1>\n";
-  }
-}
-
-# Specifies the minimum page length required before a navigation panel
-# is placed at the bottom of a page (the default is that of latex2html)
-# T2H_THIS_WORDS_IN_PAGE holds number of words of current page
-$T2H_WORDS_IN_PAGE = 300;
-sub T2H_DEFAULT_print_foot_navigation
-{
-  my $fh = shift;
-  my $nwords = shift;
-  if ($T2H_VERTICAL_HEAD_NAVIGATION)
-  {
-    print $fh <<EOT;
-</TD>
-</TR>
-</TABLE>
-EOT
-  }
-  print $fh "<HR SIZE=1>\n";
-  &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE)
-}
-
-######################################################################
-# navigation panel
-#
-# specify in this array which "buttons" should appear in which order
-# in the navigation panel for sections; use ' ' for empty buttons (space)
-@T2H_SECTION_BUTTONS =
-  (
-   'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',  
-   ' ', ' ', ' ', ' ',
-   'Top', 'Contents', 'Index', 'About', 
-  );
-
-# buttons for misc stuff
-@T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About');
-
-# insert here name of icon images for buttons 
-# Icons are used, if $T2H_ICONS and resp. value are set
-%T2H_ACTIVE_ICONS =
-  (
-   'Top',      '',
-   'Contents', '',
-   'Overview', '',
-   'Index',    '',
-   'Back',     '',
-   'FastBack', '',
-   'Prev',     '',
-   'Up',       '',
-   'Next',     '',
-   'Forward',  '',
-   'FastForward', '',
-   'About' ,    '',
-   'First',    '',
-   'Last',     '',
-   ' ',        ''
-  );
-
-# insert here name of icon images for these, if button is inactive
-%T2H_PASSIVE_ICONS =
-  (
-   'Top',      '',
-   'Contents', '',
-   'Overview', '',
-   'Index',    '',
-   'Back',     '',
-   'FastBack', '',
-   'Prev',     '',
-   'Up',       '',
-   'Next',     '',
-   'Forward',  '',
-   'FastForward', '',
-   'About',     '',
-   'First',    '',
-   'Last',     '',
-  );
-
-# how to create IMG tag
-sub T2H_DEFAULT_button_icon_img
-{
-  my $button = shift;
-  my $icon = shift;
-  my $name = shift;
-  return qq{<IMG SRC="$icon" BORDER="0" ALT="$button: $name" ALIGN="MIDDLE">};
-}
-
-# Names of text as alternative for icons
-%T2H_NAVIGATION_TEXT =
-  (
-   'Top',      'Top',
-   'Contents', 'Contents',
-   'Overview', 'Overview',
-   'Index',    'Index',
-   ' ',        ' &nbsp; ',
-   'Back',     ' &lt; ',
-   'FastBack', ' &lt;&lt; ',
-   'Prev',     'Prev',
-   'Up',       ' Up ',
-   'Next',     'Next',
-   'Forward',  ' &gt; ',
-   'FastForward',  ' &gt;&gt; ',
-   'About',     ' ? ',
-   'First',    ' |&lt; ',
-   'Last',     ' &gt;| '
-  );
-
-sub T2H_DEFAULT_print_navigation
-{
-  my $fh = shift;
-  my $vertical = shift;
-  my $spacing = 1;
-  print $fh "<TABLE CELLPADDING=$spacing CELLSPACING=$spacing BORDER=0>\n";
-
-  print $fh "<TR>" unless $vertical;
-  for $button (@$T2H_BUTTONS)
-  {
-    print $fh qq{<TR VALIGN="TOP" ALIGN="LEFT">\n} if $vertical;
-    print $fh qq{<TD VALIGN="MIDDLE" ALIGN="LEFT">};
-
-    if (ref($button) eq 'CODE')
-    {
-      &$button($fh, $vertical);
-    }
-    elsif ($button eq ' ')
-    { # handle space button
-      print $fh 
-       $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ? 
-        &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) :
-        $T2H_NAVIGATION_TEXT{' '};
-      next;
-    }
-    elsif ($T2H_HREF{$button})
-    { # button is active
-      print $fh   
-        $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ? 
-          t2h_anchor('', $T2H_HREF{$button},  # yes
-                   &$T2H_button_icon_img($button,
-                                       $T2H_ACTIVE_ICONS{$button},
-                                       $T2H_NAME{$button})) 
-        : # use text
-        "[" . 
-        t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) .
-        "]";  
-    }
-    else
-    { # button is passive 
-      print $fh 
-       $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ?
-        &$T2H_button_icon_img($button,
-                              $T2H_PASSIVE_ICONS{$button},
-                              $T2H_NAME{$button}) :
-        
-        "[" . $T2H_NAVIGATION_TEXT{$button} . "]";
-    }
-    print $fh "</TD>\n";
-    print $fh "</TR>\n" if $vertical;
-  }
-  print $fh "</TR>" unless $vertical;
-  print $fh "</TABLE>\n";
-}
-
-######################################################################
-# Frames: this is from "Richard Y. Kim" <ryk@coho.net>
-# Should be improved to be more conforming to other _print* functions
-
-sub T2H_DEFAULT_print_frame
-{
-  my $fh = shift;
-  print $fh <<EOT;
-<HTML>
-<HEAD><TITLE>$T2H_THISDOC{title}</TITLE></HEAD>
-<FRAMESET cols="140,*"> 
-  <FRAME name=toc  src="$docu_toc_frame_file">
-  <FRAME name=main src="$docu_doc">
-</FRAMESET> 
-</HTML>
-EOT
-}
-
-sub T2H_DEFAULT_print_toc_frame
-{
-  my $fh = shift;
-  &$T2H_print_page_head($fh);
-  print $fh <<EOT;
-<H2>Content</H2>
-EOT
-  print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines;
-  print $fh "</BODY></HTML>\n";
-}
-
-######################################################################
-# About page
-#
-
-# T2H_PRE_ABOUT might be a function
-$T2H_PRE_ABOUT = <<EOT;
-This document was generated $T2H_ADDRESS
-using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
-<P></P>  
-EOT
-$T2H_AFTER_ABOUT = '';
-
-sub T2H_DEFAULT_about_body
-{
-  my $about;
-  if (ref($T2H_PRE_ABOUT) eq 'CODE')
-  {
-    $about = &$T2H_PRE_ABOUT();
-  }
-  else
-  {
-    $about = $T2H_PRE_ABOUT;
-  }
-  $about .= <<EOT;
-The buttons in the navigation panels have the following meaning:
-<P></P>
-<table border = "1">
-<TR>
-<TH> Button </TH>
-<TH> Name </TH>
-<TH> Go to </TH>
-<TH> From 1.2.3 go to</TH>
-</TR>
-EOT
-  
-  for $button (@T2H_SECTION_BUTTONS)
-  {
-    next if $button eq ' ' || ref($button) eq 'CODE';
-    $about .= <<EOT;
-<TR>
-<TD ALIGN="CENTER">
-EOT
-    $about .=  
-      ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ?
-       &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) :
-       " [" . $T2H_NAVIGATION_TEXT{$button} . "] ");
-    $about .= <<EOT;
-</TD>
-<TD ALIGN="CENTER">
-$button
-</TD>
-<TD>
-$T2H_BUTTONS_GOTO{$button}
-</TD>
-<TD>
-$T2H_BUTTONS_EXAMPLE{$button}
-</TD>
-</TR>
-EOT
-  }
-
-  $about .= <<EOT;
-</TABLE>
-<P></P>
-where the <STRONG> Example </STRONG> assumes that the current position 
-is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of 
-the following structure:
-<UL>
-<LI> 1. Section One  </LI>
-<UL>
-<LI>1.1 Subsection One-One</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.2 Subsection One-Two</LI>
-<UL>
-<LI>1.2.1 Subsubsection One-Two-One
-</LI><LI>1.2.2 Subsubsection One-Two-Two
-</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
-&lt;== Current Position </STRONG>
-</LI><LI>1.2.4 Subsubsection One-Two-Four
-</LI></UL>
-<LI>1.3 Subsection One-Three</LI>
-<UL>
-<LI> ... </LI>
-</UL>
-<LI>1.4 Subsection One-Four</LI>
-</UL>
-</UL>
-$T2H_AFTER_ABOUT
-EOT
-  return $about;  
-}
-
-  
-%T2H_BUTTONS_GOTO =
-  (
-   'Top',      'cover (top) of document',
-   'Contents', 'table of contents',
-   'Overview', 'short table of contents',
-   'Index',    'concept index',
-   'Back',     'previous section in reading order',
-   'FastBack', 'previous or up-and-previous section ',
-   'Prev',     'previous section same level',
-   'Up',       'up section',
-   'Next',     'next section same level',
-   'Forward',  'next section in reading order',
-   'FastForward', 'next or up-and-next section',
-   'About' ,    'this page',
-   'First',    'first section in reading order',
-   'Last',     'last section in reading order',
-  );
-
-%T2H_BUTTONS_EXAMPLE = 
-(
-   'Top',      ' &nbsp; ',
-   'Contents', ' &nbsp; ',
-   'Overview', ' &nbsp; ',
-   'Index',    ' &nbsp; ',
-   'Back',     '1.2.2',
-   'FastBack', '1.1',
-   'Prev',     '1.2.2',
-   'Up',       '1.2',
-   'Next',     '1.2.4',
-   'Forward',  '1.2.4',
-   'FastForward', '1.3',
-   'About',     ' &nbsp; ',
-   'First',    '1.',
-   'Last',     '1.2.4',
-);
-
-
-######################################################################
-# from here on, its l2h init stuff 
-#
-
-## initialization for latex2html as for Singular manual generation
-## obachman 3/99
-
-#
-# Options controlling Titles, File-Names, Tracing and Sectioning
-#
-$TITLE = '';
-
-$SHORTEXTN = 0;
-
-$LONG_TITLES = 0;
-
-$DESTDIR = ''; # should be overwritten by cmd-line argument
-
-$NO_SUBDIR = 0;# should be overwritten by cmd-line argument
-
-$PREFIX = '';  # should be overwritten by cmd-line argument
-
-$AUTO_PREFIX = 0; # this is needed, so that prefix settings are used
-
-$AUTO_LINK = 0; 
-
-$SPLIT = 0;
-
-$MAX_LINK_DEPTH = 0;
-
-$TMP = ''; # should be overwritten by cmd-line argument
-
-$DEBUG = 0;
-
-$VERBOSE = 1;
-
-#
-# Options controlling Extensions and Special Features 
-#
-$HTML_VERSION = "3.2";
-
-$TEXDEFS = 1; # we absolutely need that
-
-$EXTERNAL_FILE = '';
-
-$SCALABLE_FONTS = 1;
-
-$NO_SIMPLE_MATH = 1;
-
-$LOCAL_ICONS = 1;
-
-$SHORT_INDEX = 0;
-
-$NO_FOOTNODE = 1;
-
-$ADDRESS = '';
-
-$INFO = '';
-
-#
-# Switches controlling Image Generation 
-#
-$ASCII_MODE = 0;
-
-$NOLATEX = 0;
-
-$EXTERNAL_IMAGES = 0;
-
-$PS_IMAGES = 0;
-
-$NO_IMAGES = 0;
-
-$IMAGES_ONLY = 0;
-
-$REUSE = 2;
-
-$ANTI_ALIAS = 1;
-
-$ANTI_ALIAS_TEXT = 1;
-
-#
-#Switches controlling Navigation Panels
-#
-$NO_NAVIGATION = 1;
-$ADDRESS = '';
-$INFO = 0;              # 0 = do not make a "About this document..." section 
-
-#
-#Switches for Linking to other documents 
-#
-# actuall -- we don't care
-
-$MAX_SPLIT_DEPTH = 0;  # Stop making separate files at this depth
-
-$MAX_LINK_DEPTH = 0;    # Stop showing child nodes at this depth   
-
-$NOLATEX = 0;           # 1 = do not pass unknown environments to Latex
-
-$EXTERNAL_IMAGES = 0;   # 1 = leave the images outside the document 
-
-$ASCII_MODE = 0;        # 1 = do not use any icons or internal images
-
-# 1 =  use links to external postscript images rather than inlined bitmap
-# images.
-$PS_IMAGES = 0;
-$SHOW_SECTION_NUMBERS = 0;
-
-### Other global variables ###############################################
-$CHILDLINE = "";
-
-# This is the line width measured in pixels and it is used to right justify
-# equations and equation arrays; 
-$LINE_WIDTH = 500;             
-
-# Used in conjunction with AUTO_NAVIGATION
-$WORDS_IN_PAGE = 300;  
-
-# Affects ONLY the way accents are processed 
-$default_language = 'english'; 
-
-# The value of this variable determines how many words to use in each 
-# title that is added to the navigation panel (see below)
-# 
-$WORDS_IN_NAVIGATION_PANEL_TITLES = 0;
-
-# This number will determine the size of the equations, special characters,
-# and anything which will be converted into an inlined image
-# *except* "image generating environments" such as "figure", "table" 
-# or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$MATH_SCALE_FACTOR = 1.5;
-
-# This number will determine the size of 
-# image generating environments such as "figure", "table" or "minipage".
-# Effective values are those greater than 0.
-# Sensible values are between 0.1 - 4.
-$FIGURE_SCALE_FACTOR = 1.6;
-
-
-#  If both of the following two variables are set then the "Up" button
-#  of the navigation panel in the first node/page of a converted document
-#  will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set
-#  to some text which describes this external link.
-$EXTERNAL_UP_LINK = "";
-$EXTERNAL_UP_TITLE = "";
-
-# If this is set then the resulting HTML will look marginally better if viewed 
-# with Netscape.
-$NETSCAPE_HTML = 1;
-
-# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0"
-# Paper sizes has no effect other than in the time it takes to create inlined
-# images and in whether large images can be created at all ie
-#  - larger paper sizes *MAY* help with large image problems 
-#  - smaller paper sizes are quicker to handle
-$PAPERSIZE = "a4";
-
-# Replace "english" with another language in order to tell LaTeX2HTML that you 
-# want some generated section titles (eg "Table of Contents" or "References")
-# to appear in a different language. Currently only "english" and "french"
-# is supported but it is very easy to add your own. See the example in the
-# file "latex2html.config" 
-$TITLES_LANGUAGE = "english";
-
-1;     # This must be the last non-comment line
-
-# End File texi2html.init
-######################################################################
-
-
-require "$ENV{T2H_HOME}/texi2html.init" 
-  if ($0 =~ /\.pl$/ &&
-      -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-#+++############################################################################
-#                                                                              #
-# Initialization                                                               #
-# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing        #
-#                                                                              #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
-
-# 
-package Getopt::MySimple;
-
-# Name:
-#      Getopt::MySimple.
-#
-# Documentation:
-#      POD-style (incomplete) documentation is in file MySimple.pod
-#
-# Tabs:
-#      4 spaces || die.
-#
-# Author:
-#      Ron Savage      rpsavage@ozemail.com.au.
-#      1.00    19-Aug-97       Initial version.
-#      1.10    13-Oct-97       Add arrays of switches (eg '=s@').
-#      1.20     3-Dec-97       Add 'Help' on a per-switch basis.
-#      1.30    11-Dec-97       Change 'Help' to 'verbose'. Make all hash keys lowercase.
-#      1.40    10-Nov-98       Change width of help report. Restructure tests.
-#               1-Jul-00        Modifications for Texi2html
-
-# --------------------------------------------------------------------------
-# Locally modified by obachman (Display type instead of env, order by cmp)
-# $Id: MySimple.pm,v 1.1 2000/07/03 08:44:13 obachman Exp $
-
-# use strict;
-# no strict 'refs';
-
-use vars qw(@EXPORT @EXPORT_OK @ISA);
-use vars qw($fieldWidth $opt $VERSION);
-
-use Exporter();
-use Getopt::Long;
-
-@ISA           = qw(Exporter);
-@EXPORT                = qw();
-@EXPORT_OK     = qw($opt);     # An alias for $self -> {'opt'}.
-
-# --------------------------------------------------------------------------
-
-$fieldWidth    = 20;
-$VERSION       = '1.41';
-
-# --------------------------------------------------------------------------
-
-sub byOrder
-{
-       my($self) = @_;
-       
-       return uc($a) cmp (uc($b));
-}
-
-# --------------------------------------------------------------------------
-
-sub dumpOptions
-{
-       my($self) = @_;
-
-       print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n";
-
-       for (sort byOrder keys(%{$self -> {'opt'} }) )
-       {
-         print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n";
-       }
-
-       print "\n";
-
-}      # End of dumpOptions.
-
-# --------------------------------------------------------------------------
-# Return:
-#      0 -> Error.
-#      1 -> Ok.
-
-sub getOptions
-{
-       push(@_, 0) if ($#_ == 2);      # Default for $ignoreCase is 0.
-       push(@_, 1) if ($#_ == 3);      # Default for $helpThenExit is 1.
-
-       my($self, $default, $helpText, $versionText, 
-          $helpThenExit, $versionThenExit, $ignoreCase) = @_;
-       
-       $helpThenExit = 1 unless (defined($helpThenExit));
-       $versionThenExit = 1 unless (defined($versionThenExit));
-       $ignoreCase = 0 unless (defined($ignoreCase));
-
-       $self -> {'default'}            = $default;
-       $self -> {'helpText'}           = $helpText;
-       $self -> {'versionText'}        = $versionText;
-       $Getopt::Long::ignorecase       = $ignoreCase;
-
-       unless (defined($self -> {'default'}{'help'}))
-       {
-         $self -> {'default'}{'help'} = 
-         { 
-          type => ':i', 
-          default => '',
-          linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;},
-          verbose => "print help and exit"
-         };
-       }
-
-       unless (defined($self -> {'default'}{'version'}))
-       {
-         $self -> {'default'}{'version'} = 
-         { 
-          type => '', 
-          default => '',
-          linkage => sub {print $self->{'versionText'};  exit (0) if versionTheExit;},
-          verbose => "print version and exit"
-         };
-       }
-
-       for (keys(%{$self -> {'default'} }) )
-       {
-         my $type = ${$self -> {'default'} }{$_}{'type'};
-         push(@{$self -> {'type'} }, "$_$type");
-         $self->{'opt'}->{$_} =  ${$self -> {'default'} }{$_}{'linkage'}
-            if ${$self -> {'default'} }{$_}{'linkage'};
-       }
-
-       my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} });
-
-        return $result unless $result;
-
-       for (keys(%{$self -> {'default'} }) )
-       {
-          if (! defined(${$self -> {'opt'} }{$_})) #{
-            {
-            ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'};
-            }
-       }
-
-       $result;
-}      # End of getOptions.
-
-# --------------------------------------------------------------------------
-
-sub helpOptions
-{
-       my($self) = shift;
-       my($noHelp) = shift;
-       $noHelp = 0 unless $noHelp;
-       my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth) 
-         = (10, 5, 9, 78, 4, 11);
-
-       print "$self->{'helpText'}" if ($self -> {'helpText'});
-
-       print ' Option', ' ' x ($optwidth - length('Option') -1 ),
-               'Type', ' ' x ($typewidth - length('Type') + 1),
-               'Default', ' ' x ($defaultwidth - length('Default') ),
-               "Description\n";
-
-       for (sort byOrder keys(%{$self -> {'default'} }) )
-       {
-         my($line, $help, $option, $val);
-         $option = $_;
-         next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp;
-               $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) .
-                       "${$self->{'default'} }{$_}{'type'} ".
-                       ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
-
-                 $val = ${$self->{'default'} }{$_}{'linkage'};
-                if ($val)
-                {
-                  if (ref($val) eq 'SCALAR')
-                 {
-                   $val = $$val; 
-                 }
-                 else
-                 {
-                   $val = '';
-                 }
-                }
-               else
-               {
-                 $val = ${$self->{'default'} }{$_}{'default'};
-               }
-               $line .= "$val  ";
-               $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line));
-               
-               if (defined(${$self -> {'default'} }{$_}{'verbose'}) &&
-                 ${$self -> {'default'} }{$_}{'verbose'} ne '')
-             {
-               $help = "${$self->{'default'} }{$_}{'verbose'}";
-             }
-             else
-             {
-               $help = ' ';
-             }
-             if ((length("$line") + length($help)) < $maxlinewidth)
-             {
-               print $line , $help, "\n";
-             }
-             else
-             {
-               print $line, "\n", ' ' x $valind, $help, "\n";
-             }
-             for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}}))
-             {
-               print ' ' x ($valind + 2);
-               print $val, '  ', ' ' x ($valwidth - length($val) - 2);
-               print ${$self->{'default'}}{$option}{'values'}{$val}, "\n";
-             }
-       }
-
-       print <<EOT;
-Note: 'Options' may be abbreviated. 'Type' specifications mean:
- <none>| !    no argument: variable is set to 1 on -foo (or, to 0 on -nofoo)
-    =s | :s   mandatory (or, optional)  string argument
-    =i | :i   mandatory (or, optional)  integer argument
-EOT
-}      # End of helpOptions.
-
-#-------------------------------------------------------------------
-
-sub new
-{
-       my($class)                              = @_;
-       my($self)                               = {};
-       $self -> {'default'}    = {};
-       $self -> {'helpText'}   = '';
-       $self -> {'opt'}                = {};
-       $opt                                    = $self -> {'opt'};      # An alias for $self -> {'opt'}.
-       $self -> {'type'}               = ();
-
-       return bless $self, $class;
-
-}      # End of new.
-
-# --------------------------------------------------------------------------
-
-1;
-
-# End MySimple.pm
-
-require "$ENV{T2H_HOME}/MySimple.pm" 
-  if ($0 =~ /\.pl$/ &&
-      -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
-
-package main;
-
-#+++############################################################################
-#                                                                              #
-# Constants                                                                    #
-#                                                                              #
-#---############################################################################
-
-$DEBUG_TOC   =  1;
-$DEBUG_INDEX =  2;
-$DEBUG_BIB   =  4;
-$DEBUG_GLOSS =  8;
-$DEBUG_DEF   = 16;
-$DEBUG_HTML  = 32;
-$DEBUG_USER  = 64;
-$DEBUG_L2H   = 128;
-
-
-$BIBRE = '\[[\w\/-]+\]';               # RE for a bibliography reference
-$FILERE = '[\/\w.+-]+';                        # RE for a file name
-$VARRE = '[^\s\{\}]+';                 # RE for a variable name
-$NODERE = '[^,:]+';                    # RE for a node name
-$NODESRE = '[^:]+';                    # RE for a list of node names
-
-$ERROR = "***";                                # prefix for errors 
-$WARN  = "**";                          # prefix for warnings
-  
-                                        # program home page
-$PROTECTTAG = "_ThisIsProtected_";     # tag to recognize protected sections
-
-$CHAPTEREND = "<!-- End chapter -->\n"; # to know where a chpater ends
-$SECTIONEND = "<!-- End section -->\n"; # to know where section ends
-$TOPEND     = "<!-- End top     -->\n"; # to know where top ends
-
-  
-
-#
-# pre-defined indices
-#
-$index_properties =
-{
- 'c' => { name => 'cp'},
- 'f' => { name => 'fn', code => 1},
- 'v' => { name => 'vr', code => 1},
- 'k' => { name => 'ky', code => 1},
- 'p' => { name => 'pg', code => 1},
- 't' => { name => 'tp', code => 1}
-};
-
-
-%predefined_index = (
-                   'cp', 'c',
-                   'fn', 'f',
-                   'vr', 'v',
-                   'ky', 'k',
-                   'pg', 'p',
-                   'tp', 't',
-                   );
-
-#
-# valid indices
-#
-%valid_index = (
-                   'c', 1,
-                   'f', 1,
-                   'v', 1,
-                   'k', 1,
-                   'p', 1,
-                   't', 1,
-               );
-
-#
-# texinfo section names to level
-#
-%sec2level = (
-             'top', 0,
-             'chapter', 1,
-             'unnumbered', 1,
-             'majorheading', 1,
-             'chapheading', 1,
-             'appendix', 1,
-             'section', 2,
-             'unnumberedsec', 2,
-             'heading', 2,
-             'appendixsec', 2,
-             'appendixsection', 2,
-             'subsection', 3,
-             'unnumberedsubsec', 3,
-             'subheading', 3,
-             'appendixsubsec', 3,
-             'subsubsection', 4,
-             'unnumberedsubsubsec', 4,
-             'subsubheading', 4,
-             'appendixsubsubsec', 4,
-             );
-
-#
-# accent map, TeX command to ISO name
-#
-%accent_map = (
-              '"',  'uml',
-              '~',  'tilde',
-              '^',  'circ',
-              '`',  'grave',
-              '\'', 'acute',
-              );
-
-#
-# texinfo "simple things" (@foo) to HTML ones
-#
-%simple_map = (
-              # cf. makeinfo.c
-              "*", "<BR>",             # HTML+
-              " ", " ",
-              "\t", " ",
-              "-", "&#173;",   # soft hyphen
-              "\n", "\n",
-              "|", "",
-              'tab', '<\/TD><TD>',
-              # spacing commands
-              ":", "",
-              "!", "!",
-              "?", "?",
-              ".", ".",
-              "-", "",
-              );
-
-#
-# texinfo "things" (@foo{}) to HTML ones
-#
-%things_map = (
-              'TeX', 'TeX',
-              'br', '<P>',             # paragraph break
-              'bullet', '*',
-              'copyright', '(C)',
-              'dots', '<small>...<\/small>',
-              'enddots', '<small>....<\/small>',
-              'equiv', '==',
-              'error', 'error-->',
-              'expansion', '==>',
-              'minus', '-',
-              'point', '-!-',
-              'print', '-|',
-              'result', '=>',
-              'today', $T2H_TODAY,
-              'aa', '&aring;',
-              'AA', '&Aring;',
-              'ae', '&aelig;',
-              'oe', '&#156;',
-              'AE', '&AElig;',
-              'OE', '&#140;',
-              'o',  '&oslash;',
-              'O',  '&Oslash;',
-              'ss', '&szlig;',
-              'l', '\/l',
-              'L', '\/L',
-              'exclamdown', '&iexcl;',
-              'questiondown', '&iquest;',
-              'pounds', '&pound;'
-              );
-
-#
-# texinfo styles (@foo{bar}) to HTML ones
-#
-%style_map = (
-             'acronym', '&do_acronym',
-             'asis', '',
-             'b', 'B',
-             'cite', 'CITE',
-             'code', 'CODE',
-             'command', 'CODE',
-             'ctrl', '&do_ctrl',       # special case
-             'dfn', 'EM',              # DFN tag is illegal in the standard
-             'dmn', '',                # useless
-             'email', '&do_email',     # insert a clickable email address
-             'emph', 'EM',
-             'env', 'CODE',
-             'file', '"TT',            # will put quotes, cf. &apply_style
-             'i', 'I',
-             'kbd', 'KBD',
-             'key', 'KBD',
-             'math', '&do_math',
-             'option', '"SAMP',        # will put quotes, cf. &apply_style
-             'r', '',                  # unsupported
-             'samp', '"SAMP',          # will put quotes, cf. &apply_style
-             'sc', '&do_sc',           # special case
-             'strong', 'STRONG',
-             't', 'TT',
-             'titlefont', '',          # useless
-             'uref', '&do_uref',       # insert a clickable URL
-             'url', '&do_url',         # insert a clickable URL
-             'var', 'VAR',
-             'w', '',                  # unsupported
-             'H', '&do_accent',
-             'dotaccent', '&do_accent',
-             'ringaccent','&do_accent',
-             'tieaccent', '&do_accent',
-             'u','&do_accent',
-             'ubaraccent','&do_accent',
-             'udotaccent','&do_accent',
-             'v', '&do_accent',
-             ',', '&do_accent',
-             'dotless', '&do_accent'
-             );
-
-#
-# texinfo format (@foo/@end foo) to HTML ones
-#
-%format_map = (
-              'quotation', 'BLOCKQUOTE',
-              # lists
-              'itemize', 'UL',
-              'enumerate', 'OL',
-              # poorly supported
-              'flushleft', 'PRE',
-              'flushright', 'PRE',
-              );
-
-#
-# an eval of these $complex_format_map->{what}->[0] yields beginning
-# an eval of these $complex_format_map->{what}->[1] yieleds end
-$complex_format_map =
-{
- example => 
- [
-  q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=example><pre>"},
-  q{'</pre></td></tr></table>'}
- ],
- smallexample => 
- [
-  q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smallexample><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre>"},
-  q{'</FONT></pre></td></tr></table>'}
- ],
- display =>
- [
-  q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=display><pre " . 'style="font-family: serif">'},
-  q{'</pre></td></tr></table>'}
- ],
- smalldisplay =>
- [
-  q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smalldisplay><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre " . 'style="font-family: serif">'},
-  q{'</pre></FONT></td></tr></table>'}
- ]
-};
-
-$complex_format_map->{lisp} = $complex_format_map->{example};
-$complex_format_map->{smalllisp} = $complex_format_map->{smallexample};
-$complex_format_map->{format} = $complex_format_map->{display};
-$complex_format_map->{smallformat} = $complex_format_map->{smalldisplay};
-
-#
-# texinfo definition shortcuts to real ones
-#
-%def_map = (
-           # basic commands
-           'deffn', 0,
-           'defvr', 0,
-           'deftypefn', 0,
-           'deftypevr', 0,
-           'defcv', 0,
-           'defop', 0,
-           'deftp', 0,
-           # basic x commands
-           'deffnx', 0,
-           'defvrx', 0,
-           'deftypefnx', 0,
-           'deftypevrx', 0,
-           'defcvx', 0,
-           'defopx', 0,
-           'deftpx', 0,
-           # shortcuts
-           'defun', 'deffn Function',
-           'defmac', 'deffn Macro',
-           'defspec', 'deffn {Special Form}',
-           'defvar', 'defvr Variable',
-           'defopt', 'defvr {User Option}',
-           'deftypefun', 'deftypefn Function',
-           'deftypevar', 'deftypevr Variable',
-           'defivar', 'defcv {Instance Variable}',
-           'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME
-           'defmethod', 'defop Method',
-           'deftypemethod', 'defop Method', # NEW:FIXME
-           # x shortcuts
-           'defunx', 'deffnx Function',
-           'defmacx', 'deffnx Macro',
-           'defspecx', 'deffnx {Special Form}',
-           'defvarx', 'defvrx Variable',
-           'defoptx', 'defvrx {User Option}',
-           'deftypefunx', 'deftypefnx Function',
-           'deftypevarx', 'deftypevrx Variable',
-           'defivarx', 'defcvx {Instance Variable}',
-           'defmethodx', 'defopx Method',
-           );
-
-#
-# things to skip
-#
-%to_skip = (
-           # comments
-           'c', 1,
-           'comment', 1,
-            'ifnotinfo', 1,
-            'ifnottex', 1,
-           'ifhtml', 1,
-           'end ifhtml', 1,
-            'end ifnotinfo', 1,
-            'end ifnottex', 1,
-           # useless
-           'detailmenu', 1,
-            'direntry', 1,
-           'contents', 1,
-           'shortcontents', 1,
-           'summarycontents', 1,
-           'footnotestyle', 1,
-           'end ifclear', 1,
-           'end ifset', 1,
-           'titlepage', 1,
-           'end titlepage', 1,
-           # unsupported commands (formatting)
-           'afourpaper', 1,
-           'cropmarks', 1,
-           'finalout', 1,
-           'headings', 1,
-            'sp', 1,
-           'need', 1,
-           'page', 1,
-           'setchapternewpage', 1,
-           'everyheading', 1,
-           'everyfooting', 1,
-           'evenheading', 1,
-           'evenfooting', 1,
-           'oddheading', 1,
-           'oddfooting', 1,
-           'smallbook', 1,
-           'vskip', 1,
-           'filbreak', 1,
-           'paragraphindent', 1,
-           # unsupported formats
-           'cartouche', 1,
-           'end cartouche', 1,
-           'group', 1,
-           'end group', 1,
-           );
-
-#+++############################################################################
-#                                                                              #
-# Argument parsing, initialisation                                             #
-#                                                                              #
-#---############################################################################
-
-#
-# flush stdout and stderr after every write
-#
-select(STDERR);
-$| = 1;
-select(STDOUT);
-$| = 1;
-
-
-%value = ();                           # hold texinfo variables, see also -D
-$use_bibliography = 1;
-$use_acc = 1;
-
-#
-# called on -init-file
-sub LoadInitFile
-{
-  my $init_file = shift;
-  # second argument is value of options
-  $init_file = shift;
-  if (-f $init_file)
-  {
-    print "# reading initialization file from $init_file\n" 
-      if ($T2H_VERBOSE);
-    require($init_file);
-  }
-  else
-  {
-    print "$ERROR Error: can't read init file $int_file\n";
-    $init_file = '';
-  }
-}
-
-#
-# called on -lang
-sub SetDocumentLanguage
-{
-  my $lang = shift;
-  if (! exists($T2H_WORDS->{$lang}))
-  {
-    warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" . 
-      ($T2H_LANG ? T2H_LANG : "en") . "'\n";
-  }
-  else
-  {
-    print "# using '$lang' as document language\n" if ($T2H_VERBOSE);
-    $T2H_LANG = $lang;
-  }
-}
-
-##
-## obsolete cmd line options
-##
-$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} =
-{
- type => '!',
- linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;},
- verbose => 'obsolete, use -nosec_nav',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {use_acc} =
-{
- type => '!',
- linkage => \$use_acc,
- verbose => 'obsolete',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {expandinfo} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'info';},
- verbose => 'obsolete, use "-expand info" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {expandtex} =
-{
- type => '!',
- linkage => sub {$main::T2H_EXPAND = 'tex';},
- verbose => 'obsolete, use "-expand tex" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {monolithic} =
-{
- type => '!',
- linkage => sub {$main::T2H_SPLIT = '';},
- verbose => 'obsolete, use "-split no" instead',
- noHelp => 2
-};
-$T2H_OBSOLETE_OPTIONS -> {split_node} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'section';},
- verbose => 'obsolete, use "-split section" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {split_chapter} =
-{
- type => '!',
- linkage => sub{$main::T2H_SPLIT = 'chapter';},
- verbose => 'obsolete, use "-split chapter" instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {no_verbose} =
-{
- type => '!',
- linkage => sub {$main::T2H_VERBOSE = 0;},
- verbose => 'obsolete, use -noverbose instead',
- noHelp => 2,
-};
-$T2H_OBSOLETE_OPTIONS -> {output_file} =
-{
- type => '=s',
- linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
- verbose => 'obsolete, use -out_file instead',
- noHelp => 2
-};
-
-$T2H_OBSOLETE_OPTIONS -> {section_navigation} =
-{
- type => '!',
- linkage => \$T2H_SECTION_NAVIGATION,
- verbose => 'obsolete, use -sec_nav instead',
- noHelp => 2,
-};
-
-$T2H_OBSOLETE_OPTIONS -> {verbose} =
-{
- type => '!',
- linkage => \$T2H_VERBOSE,
- verbose => 'obsolete, use -Verbose instead',
- noHelp => 2
-};
-
-# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
-my $home = $ENV{HOME};
-defined($home) or $home = '';
-foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") {
-    if (-f $i) {
-       print "# reading initialization file from $i\n" 
-           if ($T2H_VERBOSE);
-       require($i);
-    }
-}
-
-
-#+++############################################################################
-#                                                                              #
-# parse command-line options
-#                                                                              #
-#---############################################################################
-$T2H_USAGE_TEXT = <<EOT;
-Usage: texi2html  [OPTIONS] TEXINFO-FILE
-Translates Texinfo source documentation to HTML.
-EOT
-$T2H_FAILURE_TEXT = <<EOT;
-Try 'texi2html -help' for usage instructions.
-EOT
-$options = new Getopt::MySimple;
-
-# some older version of GetOpt::Long don't have 
-# Getopt::Long::Configure("pass_through")
-eval {Getopt::Long::Configure("pass_through");};
-$Configure_failed = $@ && <<EOT;
-**WARNING: Parsing of obsolete command-line options could have failed. 
-           Consider to use only documented command-line options (run
-           'texi2html -help 2' for a complete list) or upgrade to perl 
-           version 5.005 or higher.
-EOT
-
-if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
-{
-  print $Configure_failed if $Configure_failed;
-  die $T2H_FAILURE_TEXT;
-}
-
-if (@ARGV > 1)
-{
-  eval {Getopt::Long::Configure("no_pass_through");};
-  if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
-  {
-    print $Configure_failed if $Configure_failed;
-    die $T2H_FAILURE_TEXT;
-  }
-}
-
-if ($T2H_CHECK) {
-    die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0;
-    &check;
-    exit;
-}
-
-#+++############################################################################
-#                                                                              #
-# evaluation of cmd line options
-#                                                                              #
-#---############################################################################
-
-if ($T2H_EXPAND eq 'info') 
-{
-  $to_skip{'ifinfo'} = 1;
-  $to_skip{'end ifinfo'} = 1;
-} 
-elsif ($T2H_EXPAND eq 'tex')
-{
-  $to_skip{'iftex'} = 1;
-  $to_skip{'end iftex'} = 1;
-  
-}
-
-$T2H_INVISIBLE_MARK = '<IMG SRC="invisible.xbm">' if $T2H_INVISIBLE_MARK eq 'xbm';
-
-#
-# file name buisness
-#
-die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1;
-$docu = shift(@ARGV);
-if ($docu =~ /.*\//) {
-    chop($docu_dir = $&);
-    $docu_name = $';
-} else {
-    $docu_dir = '.';
-    $docu_name = $docu;
-}
-unshift(@T2H_INCLUDE_DIRS, $docu_dir);
-$docu_name =~ s/\.te?x(i|info)?$//;    # basename of the document
-$docu_name = $T2H_PREFIX if ($T2H_PREFIX);
-
-# subdir
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
-  $T2H_SUBDIR =~ s|/*$||;
-  unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR")
-  {
-    if ( mkdir($T2H_SUBDIR, oct(755)))
-    {
-      print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE);
-    }
-    else
-    {
-      warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n";
-      $T2H_SUBDIR = '';
-    }
-  }
-}
-
-if ($T2H_SUBDIR && ! $T2H_OUT)
-{
-  $docu_rdir = "$T2H_SUBDIR/";
-  print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
-}
-else
-{
-  if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|)
-  {
-    $docu_rdir = "$1/";
-    print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
-  }
-  else
-  {
-    print "# putting result files into current directory \n" if ($T2H_VERBOSE);
-    $docu_rdir = '';
-  }
-}
-
-# extension
-if ($T2H_SHORTEXTN)
-{
-  $docu_ext = "htm";
-}
-else
-{
-  $docu_ext = "html";
-}
-if ($T2H_TOP_FILE =~ /\..*$/)
-{
-  $T2H_TOP_FILE = $`.".$docu_ext";
-}
-
-# result files
-if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i))
-{
-  $T2H_SPLIT = 'section';
-}
-elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i)
-{
-  $T2H_SPLIT = 'chapter'
-}
-else
-{
-  undef $T2H_SPLIT;
-}
-
-$docu_doc = "$docu_name.$docu_ext";            # document's contents
-$docu_doc_file = "$docu_rdir$docu_doc";
-if ($T2H_SPLIT) 
-{
-  $docu_toc  = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents
-  $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc
-  $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes
-  $docu_about = "${docu_name}_abt.$docu_ext"; # about this document
-  $docu_top  = $T2H_TOP_FILE || $docu_doc;
-}
-else
-{
-  if ($T2H_OUT)
-  {
-    $docu_doc = $T2H_OUT;
-    $docu_doc =~ s|.*/||;
-  }
-  $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
-}
-
-$docu_toc_file  = "$docu_rdir$docu_toc";
-$docu_stoc_file = "$docu_rdir$docu_stoc";
-$docu_foot_file = "$docu_rdir$docu_foot";
-$docu_about_file = "$docu_rdir$docu_about";
-$docu_top_file  = "$docu_rdir$docu_top";
-
-$docu_frame_file =     "$docu_rdir${docu_name}_frame.$docu_ext";
-$docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext";
-
-#
-# variables
-#
-$value{'html'} = 1;                    # predefine html (the output format)
-$value{'texi2html'} = $THISVERSION;    # predefine texi2html (the translator)
-# _foo: internal to track @foo
-foreach ('_author', '_title', '_subtitle',
-        '_settitle', '_setfilename', '_shorttitle') {
-    $value{$_} = '';                   # prevent -w warnings
-}
-%node2sec = ();                                # node to section name
-%sec2node = ();                                # section to node name
-%sec2number = ();                       # section to number
-%number2sec = ();                       # number to section 
-%idx2node = ();                         # index keys to node
-%node2href = ();                       # node to HREF
-%node2next = ();                       # node to next
-%node2prev = ();                       # node to prev
-%node2up   = ();                       # node to up
-%bib2href = ();                                # bibliography reference to HREF
-%gloss2href = ();                      # glossary term to HREF
-@sections = ();                                # list of sections
-%tag2pro = ();                         # protected sections
-
-#
-# initial indexes
-#
-$bib_num = 0;
-$foot_num = 0;
-$gloss_num = 0;
-$idx_num = 0;
-$sec_num = 0;
-$doc_num = 0;
-$html_num = 0;
-
-#
-# can I use ISO8879 characters? (HTML+)
-#
-if ($T2H_USE_ISO) {
-    $things_map{'bullet'} = "&bull;";
-    $things_map{'copyright'} = "&copy;";
-    $things_map{'dots'} = "&hellip;";
-    $things_map{'equiv'} = "&equiv;";
-    $things_map{'expansion'} = "&rarr;";
-    $things_map{'point'} = "&lowast;";
-    $things_map{'result'} = "&rArr;";
-}
-
-#
-# read texi2html extensions (if any)
-#
-$extensions = 'texi2html.ext'; # extensions in working directory
-if (-f $extensions) {
-    print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
-    require($extensions);
-}
-($progdir = $0) =~ s/[^\/]+$//;
-if ($progdir && ($progdir ne './')) {
-    $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
-    if (-f $extensions) {
-       print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
-       require($extensions);
-    }
-}
-
-
-print "# reading from $docu\n" if $T2H_VERBOSE;
-
-#########################################################################
-#
-# latex2html stuff
-# 
-# latex2html conversions consist of three stages:
-# 1) ToLatex: Put "latex" code into a latex file
-# 2) ToHtml: Use latex2html to generate corresponding html code and images
-# 3) FromHtml: Extract generated code and images from latex2html run
-#
-
-##########################
-# default settings
-#
-
-# defaults for files and names
-
-sub l2h_Init 
-{
-  local($root) = @_;
-  
-  return 0 unless ($root);
-  
-  $l2h_name =  "${root}_l2h";
-  
-  $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
-  $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
-  $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H);
-  
-  # destination dir -- generated images are put there, should be the same
-  # as dir of enclosing html document -- 
-  $l2h_html_file = "$docu_rdir${l2h_name}.html";
-  $l2h_prefix = "${l2h_name}_";
-  return 1;
-}
-
-
-##########################
-# 
-# First stage: Generation of Latex file
-# Initialize with: l2h_InitToLatex
-# Add content with: l2h_ToLatex($text) --> HTML placeholder comment
-# Finish with: l2h_FinishToLatex
-# 
-
-$l2h_latex_preample = <<EOT;
-% This document was automatically generated by the l2h extenstion of texi2html
-% DO NOT EDIT !!!
-\\documentclass{article}
-\\usepackage{html}
-\\begin{document}
-EOT
-
-$l2h_latex_closing = <<EOT;
-\\end{document}
-EOT
-
-# return used latex 1, if l2h could be initalized properly, 0 otherwise
-sub l2h_InitToLatex
-{
-  %l2h_to_latex = ();
-  unless ($T2H_L2H_SKIP)
-  {
-    unless (open(L2H_LATEX, ">$l2h_latex_file"))
-    {
-      warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n";
-      return 0;
-    }  
-    print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE);
-    print L2H_LATEX $l2h_latex_preample;
-  }
-  # open database for caching
-  l2h_InitCache();
-  $l2h_latex_count = 0;
-  $l2h_to_latex_count = 0;
-  $l2h_cached_count = 0;
-  return  1;
-}
-
-# print text (1st arg) into latex file (if not already there), return
-# HTML commentary which can be later on replaced by the latex2html
-# generated text
-sub l2h_ToLatex
-{
-  my($text) = @_;
-  my($count);
-  
-  $l2h_to_latex_count++;
-  $text =~ s/(\s*)$//;
-  
-  # try whether we can cache it
-  my $cached_text = l2h_FromCache($text);
-  if ($cached_text)
-  {
-    $l2h_cached_count++;
-    return $cached_text;
-  }
-  
-  # try whether we have text already on things to do
-  unless ($count = $l2h_to_latex{$text})
-  {
-    $count = $l2h_latex_count;
-    $l2h_latex_count++;
-    $l2h_to_latex{$text} = $count;
-    $l2h_to_latex[$count] = $text;
-    unless ($T2H_L2H_SKIP)
-    {
-      print L2H_LATEX "\\begin{rawhtml}\n";
-      print L2H_LATEX "<!-- l2h_begin ${l2h_name} ${count} -->\n";
-      print L2H_LATEX "\\end{rawhtml}\n";
-      
-      print L2H_LATEX "$text\n";
-      
-      print L2H_LATEX "\\begin{rawhtml}\n";
-      print L2H_LATEX "<!-- l2h_end ${l2h_name} ${count} -->\n";
-      print L2H_LATEX "\\end{rawhtml}\n";
-    }
-  }
-  return "<!-- l2h_replace ${l2h_name} ${count} -->"; 
-}
-
-# print closing into latex file and close it
-sub l2h_FinishToLatex
-{
-  local ($reused);
-  
-  $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count;
-  unless ($T2H_L2H_SKIP)
-  {
-    print L2H_LATEX $l2h_latex_closing;
-    close(L2H_LATEX);
-  }
-  print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE);
-  unless ($l2h_latex_count)
-  {
-    l2h_Finish();
-    return 0;
-  }
-  return 1;
-}
-
-###################################
-# Second stage: Use latex2html to generate corresponding html code and images
-#
-# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]):
-#   Call latex2html on $l2h_latex_file
-#   Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
-#   Return 1, on success
-#          0, otherwise
-#
-sub l2h_ToHtml
-{
-  local($call, $ext, $root, $dotbug);
-  
-  if ($T2H_L2H_SKIP)
-  {
-    print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE);
-    return 1;
-  }
-  
-  # Check for dot in directory where dvips will work
-  if ($T2H_L2H_TMP)
-  {
-    if ($T2H_L2H_TMP =~ /\./)
-    {
-      warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
-      $dotbug = 1;
-    }
-  }
-  else
-  {
-    if (&getcwd =~ /\./)
-    {
-     warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
-     $dotbug = 1;
-   }
-  }
-  # fix it, if necessary and hope that it works 
-  $T2H_L2H_TMP = "/tmp" if ($dotbug);
-    
-  $call = $T2H_L2H_L2H;
-  # use init file, if specified
-  $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file);
-  # set output dir
-  $call .=  ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
-  # use l2h_tmp, if specified
-  $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP);
-  # options we want to be sure of
-  $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
-  $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file"; 
-
-  print "# l2h: executing '$call'\n" if ($T2H_VERBOSE);
-  if (system($call))
-  {
-    warn "l2h ***Error: '${call}' did not succeed\n";
-    return 0;
-  }
-  else
-  {
-    print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE);
-    return 1;
-  }
-}
-
-# this is directly pasted over from latex2html
-sub getcwd {
-    local($_) = `pwd`;
-
-    die "'pwd' failed (out of memory?)\n"
-       unless length;
-    chop;
-    $_;
-}
-
-
-##########################
-# Third stage: Extract generated contents from latex2html run
-# Initialize with: l2h_InitFromHtml
-#   open $l2h_html_file for reading
-#   reads in contents into array indexed by numbers
-#   return 1,  on success -- 0, otherwise
-# Extract Html code with: l2h_FromHtml($text)
-#   replaces in $text all previosuly inserted comments by generated html code
-#   returns (possibly changed) $text
-# Finish with: l2h_FinishFromHtml
-#   closes $l2h_html_dir/$l2h_name.".$docu_ext" 
-
-sub l2h_InitFromHtml
-{
-  local($h_line, $h_content, $count, %l2h_img);
-
-  if (! open(L2H_HTML, "<${l2h_html_file}"))
-  {
-    print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n";
-    return 0;
-  }
-  print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE);
-
-  $l2h_html_count = 0;
-  
-  while ($h_line = <L2H_HTML>)
-  {
-    if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
-    {
-      $count = $1;
-      $h_content = "";
-      while ($h_line = <L2H_HTML>)
-      {
-       if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
-       {
-         chomp $h_content;
-         chomp $h_content;
-         $l2h_html_count++;
-         $h_content = l2h_ToCache($count, $h_content);
-         $l2h_from_html[$count] = $h_content;
-         $h_content = '';
-         last;
-       }
-       $h_content = $h_content.$h_line;
-      }
-      if ($hcontent)
-      {
-       print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n" 
-         if ($T2H_VERBOSE);
-       close(L2H_HTML);
-       return 0;
-      }
-    }
-  }
-  print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n"
-    if ($T2H_VERBOSE);
-
-  close(L2H_HTML);
-  return 1;
-}
-
-sub l2h_FromHtml
-{
-  local($text) = @_;
-  local($done, $to_do, $count);
-  
-  $to_do = $text;
-  
-  while ($to_do =~ /([^\000]*)<!-- l2h_replace $l2h_name ([0-9]+) -->([^\000]*)/)
-  {
-    $to_do = $1;
-    $count = $2;
-    $done = $3.$done;
-    
-    $done = "<!-- l2h_end $l2h_name $count -->".$done
-      if ($T2H_DEBUG & $DEBUG_L2H);
-
-    $done = &l2h_ExtractFromHtml($count) . $done;
-
-    $done = "<!-- l2h_begin $l2h_name $count -->".$done
-      if ($T2H_DEBUG & $DEBUG_L2H);
-  }
-  return $to_do.$done;
-}
-
-
-sub l2h_ExtractFromHtml
-{
-  local($count) = @_;
-  
-  return $l2h_from_html[$count] if ($l2h_from_html[$count]);
-  
-  if ($count >= 0 && $count < $l2h_latex_count)
-  {
-    # now we are in trouble
-    local($l_l2h, $_);
-
-    $l2h_extract_error++;
-    print "$ERROR l2h: can't extract content $count from html\n" 
-      if ($T2H_VERBOSE);
-    # try simple (ordinary) substition (without l2h)
-    $l_l2h = $T2H_L2H;
-    $T2H_L2H = 0;
-    $_ = $l2h_to_latex{$count};
-    $_ = &substitute_style($_); 
-    &unprotect_texi;
-    $_ = "<!-- l2h: ". __LINE__ . " use texi2html -->" . $_
-      if ($T2H_DEBUG & $DEBUG_L2H);
-    $T2H_L2H = $l_l2h;
-    return $_;
-  }
-  else
-  {
-    # now we have been incorrectly called
-    $l2h_range_error++;
-    print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n";
-    return "<!-- l2h: ". __LINE__ . " out of range count $count -->"
-      if ($T2H_DEBUG & $DEBUG_L2H);
-    return "<!-- l2h: out of range count $count -->";
-  }
-}
-    
-sub l2h_FinishFromHtml
-{
-  if ($T2H_VERBOSE)
-  {
-    if ($l2h_extract_error + $l2h_range_error)
-    {
-      print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n";
-    }
-    else
-    {
-      print "# l2h: finished from html (no errors)\n";
-    }
-  }
-}
-
-sub l2h_Finish
-{
-  l2h_StoreCache();
-  if ($T2H_L2H_CLEAN)
-  {
-    print "# l2h: removing temporary files generated by l2h extension\n"
-      if $T2H_VERBOSE;
-    while (<"$docu_rdir$l2h_name"*>)
-    {
-      unlink $_;
-    }
-  }
-  print "# l2h: Finished\n" if $T2H_VERBOSE;
-  return 1;
-}
-
-##############################
-# stuff for l2h caching
-#
-
-# I tried doing this with a dbm data base, but it did not store all
-# keys/values. Hence, I did as latex2html does it
-sub l2h_InitCache
-{
-  if (-r "$l2h_cache_file")
-  {
-    my $rdo = do "$l2h_cache_file";
-    warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
-      unless ($rdo);
-  }
-}
-
-sub l2h_StoreCache
-{
-  return unless $l2h_latex_count;
-  
-  my ($key, $value);
-  open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
-
-  
-  while (($key, $value) = each %l2h_cache)
-  {
-    # escape stuff
-    $key =~ s|/|\\/|g;
-    $key =~ s|\\\\/|\\/|g;
-    # weird, a \ at the end of the key results in an error
-    # maybe this also broke the dbm database stuff
-    $key =~ s|\\$|\\\\|;
-    $value =~ s/\|/\\\|/g; 
-    $value =~ s/\\\\\|/\\\|/g; 
-    $value =~ s|\\\\|\\\\\\\\|g;
-    print FH "\n\$l2h_cache_key = q/$key/;\n";
-    print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
-  }
-  print FH "1;";
-  close(FH);
-}
-
-# return cached html, if it exists for text, and if all pictures
-# are there, as well
-sub l2h_FromCache
-{
-  my $text = shift;
-  my $cached = $l2h_cache{$text};
-  if ($cached)
-  {
-    while ($cached =~ m/SRC="(.*?)"/g)
-    {
-      unless (-e "$docu_rdir$1")
-      {
-       return undef;
-      }
-    }
-    return $cached;
-  }
-  return undef;
-}
-
-# insert generated html into cache, move away images, 
-# return transformed html
-$maximage = 1;
-sub l2h_ToCache
-{
-  my $count = shift;
-  my $content = shift;
-  my @images = ($content =~ /SRC="(.*?)"/g);
-  my ($src, $dest);
-
-  for $src (@images)
-  {
-    $dest = $l2h_img{$src};
-    unless ($dest)
-    {
-      my $ext;
-      if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
-      {
-       $ext = $1;
-      }
-      else
-      {
-       warn "$ERROR: L2h image $src has invalid extension\n";
-       next;
-      }
-      while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;}
-      $dest = "${docu_name}_$maximage.$ext";
-      system("cp -f $docu_rdir$src $docu_rdir$dest");
-      $l2h_img{$src} = $dest;
-      unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H);
-    }
-    $content =~ s/$src/$dest/g;
-  }
-  $l2h_cache{$l2h_to_latex[$count]} = $content;
-  return $content;
-}
-
-
-#+++############################################################################
-#                                                                              #
-# Pass 1: read source, handle command, variable, simple substitution           #
-#                                                                              #
-#---############################################################################
-
-@lines = ();                           # whole document
-@toc_lines = ();                       # table of contents
-@stoc_lines = ();                      # table of contents
-$curlevel = 0;                         # current level in TOC
-$node = '';                            # current node name
-$node_next = '';                        # current node next name               
-$node_prev = '';                        # current node prev name
-$node_up = '';                          # current node up name
-$in_table = 0;                         # am I inside a table
-$table_type = '';                      # type of table ('', 'f', 'v', 'multi')
-@tables = ();                          # nested table support
-$in_bibliography = 0;                  # am I inside a bibliography
-$in_glossary = 0;                      # am I inside a glossary
-$in_top = 0;                           # am I inside the top node
-$has_top = 0;                          # did I see a top node?
-$has_top_command = 0;                  # did I see @top for automatic pointers?
-$in_pre = 0;                           # am I inside a preformatted section
-$in_list = 0;                          # am I inside a list
-$in_html = 0;                          # am I inside an HTML section
-$first_line = 1;                       # is it the first line
-$dont_html = 0;                                # don't protect HTML on this line
-$deferred_ref = '';                    # deferred reference for indexes
-@html_stack = ();                      # HTML elements stack
-$html_element = '';                    # current HTML element
-&html_reset;
-%macros = ();                           # macros
-
-# init l2h
-$T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H);
-$T2H_L2H = &l2h_InitToLatex      if ($T2H_L2H);    
-
-# build code for simple substitutions
-# the maps used (%simple_map and %things_map) MUST be aware of this
-# watch out for regexps, / and escaped characters!
-$subst_code = '';
-foreach (keys(%simple_map)) {
-    ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars
-    $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n";
-}
-foreach (keys(%things_map)) {
-    $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n";
-}
-if ($use_acc) {
-    # accentuated characters
-    foreach (keys(%accent_map)) {
-       if ($_ eq "`") {
-           $subst_code .= "s/$;3";
-       } elsif ($_ eq "'") {
-           $subst_code .= "s/$;4";
-       } else {
-           $subst_code .= "s/\\\@\\$_";
-       }
-       $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n";
-    }
-}
-eval("sub simple_substitutions { $subst_code }");
-
-&init_input;
-INPUT_LINE: while ($_ = &next_line) {
-    #
-    # remove \input on the first lines only
-    #
-    if ($first_line) {
-       next if /^\\input/;
-       $first_line = 0;
-    }
-    # non-@ substitutions cf. texinfmt.el
-    #
-    # parse texinfo tags
-    #
-    $tag = '';
-    $end_tag = '';
-    if (/^\s*\@end\s+(\w+)\b/) {
-       $end_tag = $1;
-    } elsif (/^\s*\@(\w+)\b/) {
-       $tag = $1;
-    }
-    #
-    # handle @html / @end html
-    #
-    if ($in_html) {
-       if ($end_tag eq 'html') {
-           $in_html = 0;
-       } else {
-           $tag2pro{$in_html} .= $_;
-       }
-       next;
-    } elsif ($tag eq 'html') {
-       $in_html = $PROTECTTAG . ++$html_num;
-       push(@lines, $in_html);
-       next;
-    }
-
-    #
-    # try to remove inlined comments
-    # syntax from tex-mode.el comment-start-skip
-    #
-    s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/;
-
-# Sometimes I use @c right at the end of  a line ( to suppress the line feed )
-#    s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/;
-#     s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
-#     s/(.*)\@c{.*?}(.*)/$1$2/;
-#     s/(.*)\@comment{.*?}(.*)/$1$2/;
-#     s/^(.*)\@c /$1/;
-#     s/^(.*)\@comment /$1/;
-
-    #############################################################
-    # value substitution before macro expansion, so that
-    # it works in macro arguments                          
-    s/\@value{($VARRE)}/$value{$1}/eg;
-                           
-    #############################################################
-    # macro substitution
-    while (/\@(\w+)/g)
-    {
-      if (exists($macros->{$1}))    
-      {
-       my $before = $`;
-       my $name = $1;
-       my $after = $';
-       my @args;
-       my $args;
-       if ($after =~ /^\s*{(.*?[^\\])}(.*)/)  
-       {
-         $args = $1;
-         $after = $2;
-       }
-       elsif (@{$macros->{$name}->{Args}} == 1)
-       {
-         $args = $after;
-         $args =~ s/^\s*//;
-         $args =~ s/\s*$//;
-         $after = '';
-       }
-       $args =~ s|\\\\|\\|g;
-       $args =~ s|\\{|{|g;
-        $args =~ s|\\}|}|g;
-       if (@{$macros->{$name}->{Args}} > 1)
-       {
-         $args =~ s/(^|[^\\]),/$1$;/g ;
-         $args =~ s|\\,|,|g;
-         @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1);
-       }
-       else
-       {
-         $args =~ s|\\,|,|g;
-         @args = ($args);
-       }
-       my $macrobody = $macros->{$name}->{Body};
-       for ($i=0; $i<=$#args; $i++)
-       {
-         $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g;
-       }
-       $macrobody =~ s|\\\\|\\|g;
-       $_ = $before . $macrobody . $after;
-       unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_);
-       next INPUT_LINE;
-      }
-    }                          #
-                           
-    
-    #
-    # try to skip the line
-    #
-    if ($end_tag) {
-        $in_titlepage = 0 if $end_tag eq 'titlepage';
-       next if $to_skip{"end $end_tag"};
-    } elsif ($tag) {
-      $in_titlepage = 1 if $tag eq 'titlepage';
-      next if $to_skip{$tag};
-      last if $tag eq 'bye';
-    }
-    if ($in_top) {
-       # parsing the top node
-       if ($tag eq 'node' || 
-           ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/))
-       {
-           # no more in top
-           $in_top = 0;
-           push(@lines, $TOPEND);
-       }
-    }
-    unless ($in_pre) {
-       s/``/\"/g;
-       s/''/\"/g;
-       s/([\w ])---([\w ])/$1--$2/g;
-    }
-    #
-    # analyze the tag
-    #
-    if ($tag) {
-       # skip lines
-       &skip_until($tag), next if $tag eq 'ignore';
-       &skip_until($tag), next if $tag eq 'ifnothtml';
-       if ($tag eq 'ifinfo')
-       {
-         &skip_until($tag), next unless $T2H_EXPAND eq 'info';
-       }
-       if ($tag eq 'iftex')
-       {
-         &skip_until($tag), next unless $T2H_EXPAND eq 'tex';
-       } 
-       if ($tag eq 'tex')
-       {
-         # add to latex2html file
-         if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre)
-         {
-           # add space to the end -- tex(i2dvi) does this, as well 
-           push(@lines, &l2h_ToLatex(&string_until($tag) . " "));
-         }
-         else
-         {
-           &skip_until($tag);
-         }
-         next;
-       }
-       if ($tag eq 'titlepage')
-       {
-         next;
-       }
-       # handle special tables
-       if ($tag =~ /^(|f|v|multi)table$/) {
-           $table_type = $1;
-           $tag = 'table';
-       }
-       # special cases
-       if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) {
-           $in_top = 1;
-           $has_top = 1;
-           $has_top_command = 1 if $tag eq 'top';
-           @lines = (); # ignore all lines before top (title page garbage)
-           next;
-       } elsif ($tag eq 'node') {
-         if ($in_top)
-         {
-           $in_top = 0;
-           push(@lines, $TOPEND);
-         }
-         warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
-         # request of "Richard Y. Kim" <ryk@ap.com>
-         s/^\@node\s+//;
-         $_ = &protect_html($_); # if node contains '&' for instance
-         ($node, $node_next, $node_prev, $node_up) = split(/,/);
-         &normalise_node($node);
-         &normalise_node($node_next);
-         &normalise_node($node_prev);
-         &normalise_node($node_up);
-         $node =~ /\"/ ?
-           push @lines, &html_debug("<A NAME='$node'></A>\n", __LINE__) :
-           push @lines, &html_debug("<A NAME=\"$node\"></A>\n", __LINE__);
-         next;
-       } elsif ($tag eq 'include') {
-           if (/^\@include\s+($FILERE)\s*$/o) {
-               $file = LocateIncludeFile($1);
-               if ($file && -e $file) {
-                   &open($file);
-                   print "# including $file\n" if $T2H_VERBOSE;
-               } else {
-                   warn "$ERROR Can't find $1, skipping";
-               }
-           } else {
-               warn "$ERROR Bad include line: $_";
-           }
-           next;
-       } elsif ($tag eq 'ifclear') {
-           if (/^\@ifclear\s+($VARRE)\s*$/o) {
-               next unless defined($value{$1});
-               &skip_until($tag);
-           } else {
-               warn "$ERROR Bad ifclear line: $_";
-           }
-           next;
-       } elsif ($tag eq 'ifset') {
-           if (/^\@ifset\s+($VARRE)\s*$/o) {
-               next if defined($value{$1});
-               &skip_until($tag);
-           } else {
-               warn "$ERROR Bad ifset line: $_";
-           }
-           next;
-       } elsif ($tag eq 'menu') {
-           unless ($T2H_SHOW_MENU) {
-               &skip_until($tag);
-               next;
-           }
-           &html_push_if($tag);
-           push(@lines, &html_debug('', __LINE__));
-       } elsif ($format_map{$tag}) {
-           $in_pre = 1 if $format_map{$tag} eq 'PRE';
-           &html_push_if($format_map{$tag});
-           push(@lines, &html_debug('', __LINE__));
-           $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
-#          push(@lines, &debug("<BLOCKQUOTE>\n", __LINE__))
-#            if $tag =~ /example/i;
-           # sunshine@sunshineco.com: <PRE>bla</PRE> looks better than
-           # <PRE>\nbla</PRE> (at least on NeXTstep browser
-           push(@lines, &debug("<$format_map{$tag}>" . 
-                               ($in_pre ? '' : "\n"), __LINE__));
-           next;
-       }
-       elsif (exists $complex_format_map->{$tag})
-       {
-         my $start = eval $complex_format_map->{$tag}->[0];
-         if ($@)
-         {
-           print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@";
-           $start = '<pre>'
-         }
-         $in_pre = 1 if $start =~ /<pre/;
-         push(@lines, html_debug($start. ($in_pre ? '' : "\n"), __LINE__));
-         next;
-       } elsif ($tag eq 'table') {
-         # anorland@hem2.passagen.se
-         # if (/^\s*\@(|f|v|multi)table\s+\@(\w+)/) {
-            if (/^\s*\@(|f|v|multi)table\s+\@(\w+)|(\{[^\}]*\})/) {
-               $in_table = $2;
-               unshift(@tables, join($;, $table_type, $in_table));
-               if ($table_type eq "multi") {
-                   # don't use borders -- gets confused by empty cells
-                   push(@lines, &debug("<TABLE>\n", __LINE__));
-                   &html_push_if('TABLE');
-               } else {
-                   push(@lines, &debug("<DL COMPACT>\n", __LINE__));
-                   &html_push_if('DL');
-               }
-               push(@lines, &html_debug('', __LINE__));
-           } else {
-               warn "$ERROR Bad table line: $_";
-           }
-           next;
-       } 
-       elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') 
-       {
-         if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/) 
-         {
-           my $from = $1;
-           my $to = $2;
-           my $prefix_from = IndexName2Prefix($from);
-           my $prefix_to = IndexName2Prefix($to);
-
-           warn("$ERROR unknown from index name $from ind syn*index line: $_"), next
-             unless $prefix_from;
-           warn("$ERROR unknown to index name $to ind syn*index line: $_"), next
-             unless $prefix_to;
-
-           if ($tag eq 'syncodeindex')
-           {
-             $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1;
-           }
-           else
-           {
-              $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1;
-           }
-         } 
-         else 
-         {
-           warn "$ERROR Bad syn*index line: $_";
-         }
-         next;
-       } 
-       elsif ($tag eq 'defindex' || $tag eq 'defcodeindex') 
-       {
-         if (/^\@$tag\s+(\w+)\s*$/) 
-         {
-           my $name = $1;
-           $index_properties->{$name}->{name} = $name;
-           $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex';
-         } 
-         else 
-         {
-           warn "$ERROR Bad defindex line: $_";
-         }
-         next;
-       }
-       elsif (/^\@printindex/)
-       {
-         push (@lines, "<!--::${section}::-->$_");
-         next;
-       }
-       elsif ($tag eq 'sp') {
-           push(@lines, &debug("<P>\n", __LINE__));
-           next;
-       } elsif ($tag eq 'center') {
-           push(@lines, &debug("<center>\n", __LINE__));
-           s/\@center//;
-       } elsif ($tag eq 'setref') {
-           &protect_html; # if setref contains '&' for instance
-           if (/^\@$tag\s*{($NODERE)}\s*$/) {
-               $setref = $1;
-               $setref =~ s/\s+/ /g; # normalize
-               $setref =~ s/ $//;
-               $node2sec{$setref} = $name;
-               $sec2node{$name} = $setref;
-               $node2href{$setref} = "$docu_doc#$docid";
-           } else {
-               warn "$ERROR Bad setref line: $_";
-           }
-           next;
-       } elsif ($tag eq 'lowersections') {
-           local ($sec, $level);
-           while (($sec, $level) = each %sec2level) {
-               $sec2level{$sec} = $level + 1;
-           }
-           next;
-       } elsif ($tag eq 'raisesections') {
-           local ($sec, $level);
-           while (($sec, $level) = each %sec2level) {
-               $sec2level{$sec} = $level - 1;
-           }
-           next;
-       }
-       elsif ($tag eq 'macro' || $tag eq 'rmacro')
-       {
-         if (/^\@$tag\s*(\w+)\s*(.*)/)
-         {
-           my $name = $1;
-           my @args;
-           @args = split(/\s*,\s*/ , $1)
-             if ($2 =~ /^\s*{(.*)}\s*/);
-           
-           $macros->{$name}->{Args} = \@args;
-           $macros->{$name}->{Body} = '';
-           while (($_ = &next_line) && $_ !~ /\@end $tag/)
-           {
-             $macros->{$name}->{Body} .= $_;
-           }
-           die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n"
-             unless (/\@end $tag/);
-           chomp $macros->{$name}->{Body};
-         }
-         else
-         {
-           warn "$ERROR: Bad macro defintion $_"
-         }
-         next;
-       }
-       elsif ($tag eq 'unmacro')
-       {
-         delete $macros->{$1} if (/^\@unmacro\s*(\w+)/);
-         next;
-       }
-       elsif ($tag eq 'documentlanguage')
-       {
-         SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/);
-       }
-       elsif (defined($def_map{$tag})) {
-           if ($def_map{$tag}) {
-               s/^\@$tag\s+//;
-               $tag = $def_map{$tag};
-               $_ = "\@$tag $_";
-               $tag =~ s/\s.*//;
-           }
-       } elsif (defined($user_sub{$tag})) {
-           s/^\@$tag\s+//;
-           $sub = $user_sub{$tag};
-           print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER;
-           if (defined(&$sub)) {
-               chop($_);
-               &$sub($_);
-           } else {
-               warn "$ERROR Bad user sub for $tag: $sub\n";
-           }
-           next;
-         } 
-       if (defined($def_map{$tag})) {
-           s/^\@$tag\s+//;
-           if ($tag =~ /x$/) {
-               # extra definition line
-               $tag = $`;
-               $is_extra = 1;
-           } else {
-               $is_extra = 0;
-           }
-           while (/\{([^\{\}]*)\}/) {
-               # this is a {} construct
-               ($before, $contents, $after) = ($`, $1, $');
-               # protect spaces
-               $contents =~ s/\s+/$;9/g;
-               # restore $_ protecting {}
-               $_ = "$before$;7$contents$;8$after";
-           }
-           @args = split(/\s+/, &protect_html($_));
-           foreach (@args) {
-               s/$;9/ /g;      # unprotect spaces
-               s/$;7/\{/g;     # ... {
-               s/$;8/\}/g;     # ... }
-           }
-           $type = shift(@args);
-           $type =~ s/^\{(.*)\}$/$1/;
-           print "# def ($tag): {$type} ", join(', ', @args), "\n"
-               if $T2H_DEBUG & $DEBUG_DEF;
-           $type .= ':'; # it's nicer like this
-           my $name = shift(@args);
-           $name =~ s/^\{(.*)\}$/$1/;
-           if ($is_extra) {
-               $_ = &debug("<DT>", __LINE__);
-           } else {
-               $_ = &debug("<DL>\n<DT>", __LINE__);
-           }
-           if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') {
-               $_ .= "<U>$type</U> <B>$name</B>";
-               $_ .= " <I>@args</I>" if @args;
-           } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr'
-                    || $tag eq 'defcv' || $tag eq 'defop') {
-               $ftype = $name;
-               $name = shift(@args);
-               $name =~ s/^\{(.*)\}$/$1/;
-               $_ .= "<U>$type</U> $ftype <B>$name</B>";
-               $_ .= " <I>@args</I>" if @args;
-           } else {
-               warn "$ERROR Unknown definition type: $tag\n";
-               $_ .= "<U>$type</U> <B>$name</B>";
-               $_ .= " <I>@args</I>" if @args;
-           }
-           $_ .= &debug("\n<DD>", __LINE__);
-           $name = &unprotect_html($name);
-           if ($tag eq 'deffn' || $tag eq 'deftypefn') {
-             EnterIndexEntry('f', $name, $docu_doc, $section, \@lines);
-#              unshift(@input_spool, "\@findex $name\n");
-           } elsif ($tag eq 'defop') {
-             EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines);
-#              unshift(@input_spool, "\@findex $name on $ftype\n");
-           } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') {
-             EnterIndexEntry('v', $name, $docu_doc, $section, \@lines);
-#              unshift(@input_spool, "\@vindex $name\n");
-           } else {
-             EnterIndexEntry('t', $name, $docu_doc, $section, \@lines);
-#              unshift(@input_spool, "\@tindex $name\n");
-           }
-           $dont_html = 1;
-       }
-    } elsif ($end_tag) {
-       if ($format_map{$end_tag}) {
-           $in_pre = 0 if $format_map{$end_tag} eq 'PRE';
-           $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ;
-           &html_pop_if('P');
-           &html_pop_if('LI');
-           &html_pop_if();
-           push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
-           push(@lines, &html_debug('', __LINE__));
-       }
-       elsif (exists $complex_format_map->{$end_tag})
-       {
-         my $end = eval $complex_format_map->{$end_tag}->[1];
-         if ($@)
-         {
-           print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@";
-           $end = '</pre>'
-         }
-         $in_pre = 0 if $end =~ m|</pre>|;
-         push(@lines, html_debug($end, __LINE__));
-       } elsif ($end_tag =~ /^(|f|v|multi)table$/) {
-           unless (@tables) {
-               warn "$ERROR \@end $end_tag without \@*table\n";
-               next;
-           }
-           &html_pop_if('P');
-           ($table_type, $in_table) = split($;, shift(@tables));
-           unless ($1 eq $table_type) {
-               warn "$ERROR \@end $end_tag without matching \@$end_tag\n";
-               next;
-           }
-           if ($table_type eq "multi") {
-               push(@lines, "</TR></TABLE>\n");
-               &html_pop_if('TR');
-           } else {
-               push(@lines, "</DL>\n");
-               &html_pop_if('DD');
-           }
-           &html_pop_if();
-           if (@tables) {
-               ($table_type, $in_table) = split($;, $tables[0]);
-           } else {
-               $in_table = 0;
-           }
-       } elsif (defined($def_map{$end_tag})) {
-           push(@lines, &debug("</DL>\n", __LINE__));
-       } elsif ($end_tag eq 'menu') {
-           &html_pop_if();
-           push(@lines, $_); # must keep it for pass 2
-       } 
-       next;
-    }
-    #############################################################
-    # anchor insertion
-    while (/\@anchor\s*\{(.*?)\}/)
-    {
-      $_ = $`.$';
-      my $anchor = $1;
-      $anchor = &normalise_node($anchor);
-      push @lines, &html_debug("<A NAME=\"$anchor\"></A>\n");
-      $node2href{$anchor} = "$docu_doc#$anchor";
-      next INPUT_LINE if $_ =~ /^\s*$/;
-    }
-
-    #############################################################
-    # index entry generation, after value substitutions
-    if (/^\@(\w+?)index\s+/)
-    {
-      EnterIndexEntry($1, $', $docu_doc, $section, \@lines);
-      next;
-    }
-    #
-    # protect texi and HTML things
-    &protect_texi;
-    $_ = &protect_html($_) unless $dont_html;
-    $dont_html = 0;
-    # substitution (unsupported things)
-    s/^\@exdent\s+//g;
-    s/\@noindent\s+//g;
-    s/\@refill\s+//g;
-    # other substitutions
-    &simple_substitutions;
-    s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4
-    #
-    # analyze the tag again
-    #
-    if ($tag) {
-      if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
-           if (/^\@$tag\s+(.+)$/) {
-               $name = $1;
-               $name = &normalise_node($name);
-               $level = $sec2level{$tag};
-               # check for index
-               $first_index_chapter = $name
-                 if ($level == 1 && !$first_index_chapter && 
-                     $name =~ /index/i);
-               if ($in_top && /heading/){
-                   $T2H_HAS_TOP_HEADING = 1;
-                    $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
-                   &html_push_if('body');
-                   print "# top heading, section $name, level $level\n"
-                       if $T2H_DEBUG & $DEBUG_TOC;
-               }
-               else
-               {
-                 unless (/^\@\w*heading/)
-                 {
-                   unless (/^\@unnumbered/)
-                   {
-                     my $number = &update_sec_num($tag, $level);
-                     $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS;
-                     $sec2number{$name} = $number;
-                     $number2sec{$number} = $name;
-                   }
-                   if (defined($toplevel))
-                   {
-                     push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND);
-                   }
-                   else
-                   {
-                     # first time we see a "section"
-                     unless ($level == 1) 
-                     {
-                       warn "$WARN The first section found is not of level 1: $_";
-                     }
-                     $toplevel = $level;
-                   }
-                   push(@sections, $name);
-                   next_doc() if ($T2H_SPLIT eq 'section' ||
-                                  $T2H_SPLIT && $level == $toplevel);
-                 }
-                 $sec_num++;
-                 $docid = "SEC$sec_num";
-                 $tocid = (/^\@\w*heading/ ? undef : "TOC$sec_num");
-                 # check biblio and glossary
-                 $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
-                 $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
-                 # check node
-                 if ($node)
-                 {
-                   warn "$ERROR Duplicate node found: $node\n"
-                     if ($node2sec{$node});
-                 }
-                 else
-                 {
-                   $name .= ' ' while ($node2sec{$name});
-                   $node = $name;
-                 }
-                 $name .= ' ' while ($sec2node{$name});
-                 $section = $name; 
-                 $node2sec{$node} = $name;
-                 $sec2node{$name} = $node;
-                 $node2href{$node} = "$docu_doc#$docid";
-                 $node2next{$node} = $node_next;
-                 $node2prev{$node} = $node_prev;
-                 $node2up{$node} = $node_up;
-                 print "# node $node, section $name, level $level\n"
-                   if $T2H_DEBUG & $DEBUG_TOC;
-
-                 $node = '';
-                 $node_next = '';
-                 $node_prev = '';
-                 $node_next = '';
-                 if ($tocid)
-                 {
-                   # update TOC
-                   while ($level > $curlevel) {
-                     $curlevel++;
-                     push(@toc_lines, "<UL>\n");
-                   }
-                   while ($level < $curlevel) {
-                     $curlevel--;
-                     push(@toc_lines, "</UL>\n");
-                   }
-                   $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1);
-                   $_ = &substitute_style($_);
-                   push(@stoc_lines, "$_<BR>\n") if ($level == 1);
-                   if ($T2H_NUMBER_SECTIONS)
-                   {
-                     push(@toc_lines, $_ . "<BR>\n")
-                   }
-                   else
-                   {
-                     push(@toc_lines, "<LI>" . $_ ."</LI>");
-                   }
-                 }
-                 else
-                 {
-                   push(@lines, &html_debug("<A NAME=\"$docid\"></A>\n", 
-                                          __LINE__));
-                 }
-                 # update DOC
-                 push(@lines, &html_debug('', __LINE__));
-                 &html_reset;
-                 $_ =  "<H$level> $name </H$level>\n<!--docid::${docid}::-->\n";
-                 $_ = &debug($_, __LINE__);
-                 push(@lines, &html_debug('', __LINE__));
-               }
-               # update DOC
-               foreach $line (split(/\n+/, $_)) {
-                   push(@lines, "$line\n");
-               }
-               next;
-           } else {
-               warn "$ERROR Bad section line: $_";
-           }
-       } else {
-           # track variables
-           $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o;
-           delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o;
-           # store things
-           $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/;
-           $value{'_setfilename'}   = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/;
-           $value{'_settitle'}      = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/;
-           $value{'_author'}   .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/;
-           $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/;
-           $value{'_title'}    .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/;
-
-           # list item
-           if (/^\s*\@itemx?\s+/) {
-               $what = $';
-               $what =~ s/\s+$//;
-               if ($in_bibliography && $use_bibliography) {
-                   if ($what =~ /^$BIBRE$/o) {
-                       $id = 'BIB' . ++$bib_num;
-                       $bib2href{$what} = "$docu_doc#$id";
-                       print "# found bibliography for '$what' id $id\n"
-                           if $T2H_DEBUG & $DEBUG_BIB;
-                       $what = &t2h_anchor($id, '', $what);
-                   }
-               } elsif ($in_glossary && $T2H_USE_GLOSSARY) {
-                   $id = 'GLOSS' . ++$gloss_num;
-                   $entry = $what;
-                   $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
-                   $gloss2href{$entry} = "$docu_doc#$id";
-                   print "# found glossary for '$entry' id $id\n"
-                       if $T2H_DEBUG & $DEBUG_GLOSS;
-                   $what = &t2h_anchor($id, '', $what);
-               }
-               elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v'))
-               {
-                 EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines);
-               }
-               &html_pop_if('P');
-               if ($html_element eq 'DL' || $html_element eq 'DD') {
-                   if ($things_map{$in_table} && !$what) {
-                       # special case to allow @table @bullet for instance
-                       push(@lines, &debug("<DT>$things_map{$in_table}\n", __LINE__));
-                   } else {
-                       push(@lines, &debug("<DT>\@$in_table\{$what\}\n", __LINE__));
-                   }
-                   push(@lines, "<DD>");
-                   &html_push('DD') unless $html_element eq 'DD';
-                   if ($table_type) { # add also an index
-                       unshift(@input_spool, "\@${table_type}index $what\n");
-                   }
-               } elsif ($html_element eq 'TABLE') {
-                   push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
-                   &html_push('TR');
-               } elsif ($html_element eq 'TR') {
-                   push(@lines, &debug("</TR>\n", __LINE__));
-                   push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
-               } else {
-                   push(@lines, &debug("<LI>$what\n", __LINE__));
-                   &html_push('LI') unless $html_element eq 'LI';
-               }
-               push(@lines, &html_debug('', __LINE__));
-               if ($deferred_ref) {
-                   push(@lines, &debug("$deferred_ref\n", __LINE__));
-                   $deferred_ref = '';
-               }
-               next;
-           } elsif (/^\@tab\s+(.*)$/) {
-               push(@lines, "<TD>$1</TD>\n");
-               next;
-           }
-       }
-    }
-    # paragraph separator
-    if ($_ eq "\n" && ! $in_pre) {
-       next if $#lines >= 0 && $lines[$#lines] eq "\n";
-       if ($html_element eq 'P') {
-           push (@lines, &debug("</P><P>\n", __LINE__));
-       }
-#      else
-#      {
-#        push(@lines, "<P></P>\n");
-#        $_ = &debug("<P></P>\n", __LINE__);
-#      }
-        elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI') 
-       {
-         &html_push('P');
-         push(@lines, &debug("<P>\n", __LINE__));
-       }
-      }
-    # otherwise
-    push(@lines, $_) unless $in_titlepage;
-    push(@lines, &debug("</center>\n", __LINE__))  if ($tag eq 'center');
-}
-
-# finish TOC
-$level = 0;
-while ($level < $curlevel) {
-    $curlevel--;
-    push(@toc_lines, "</UL>\n");
-}
-
-print "# end of pass 1\n" if $T2H_VERBOSE;
-
-SetDocumentLanguage('en') unless ($T2H_LANG);
-#+++############################################################################
-#                                                                              #
-# Stuff related to Index generation                                            #
-#                                                                              #
-#---############################################################################
-
-sub EnterIndexEntry
-{
-  my $prefix = shift;
-  my $key = shift;
-  my $docu_doc = shift;
-  my $section = shift;
-  my $lines = shift;
-  local $_;
-
-  warn "$ERROR Undefined index command: $_", next
-    unless (exists ($index_properties->{$prefix}));
-  $key =~ s/\s+$//;
-  $_ = $key;
-  &protect_texi;
-  $key = $_;
-  $_ = &protect_html($_);
-  my $html_key = substitute_style($_);
-  my $id;
-  $key = remove_style($key);
-  $key = remove_things($key);
-  $_ = $key;
-  &unprotect_texi;
-  $key = $_;
-  while (exists $index->{$prefix}->{$key}) {$key .= ' '};
-  if ($lines->[$#lines] =~ /^<!--docid::(.+)::-->$/)
-  {
-    $id = $1;
-  }
-  else
-  {
-    $id = 'IDX' . ++$idx_num;
-    push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre));
-  }
-  $index->{$prefix}->{$key}->{html_key} = $html_key;
-  $index->{$prefix}->{$key}->{section} = $section;
-  $index->{$prefix}->{$key}->{href} = "$docu_doc#$id";
-  print "# found ${prefix}index  for '$key' with id $id\n"
-    if $T2H_DEBUG & $DEBUG_INDEX;
-}
-
-sub IndexName2Prefix
-{
-  my $name = shift;
-  my $prefix;
-
-  for $prefix (keys %$index_properties)
-  {
-    return $prefix if ($index_properties->{$prefix}->{name} eq $name);
-  }
-  return undef;
-}
-
-sub GetIndexEntries
-{
-  my $normal = shift;
-  my $code = shift;
-  my ($entries, $prefix, $key) = ({});
-  
-  for $prefix (keys %$normal)
-  {
-    for $key (keys %{$index->{$prefix}})
-    {
-      $entries->{$key} = {%{$index->{$prefix}->{$key}}};
-    }
-  }
-
-  if (defined($code))
-  {
-    for $prefix (keys %$code)
-    {
-      unless (exists $normal->{$keys})
-      {
-       for $key (keys %{$index->{$prefix}})
-       {
-         $entries->{$key} = {%{$index->{$prefix}->{$key}}};
-         $entries->{$key}->{html_key} = "<CODE>$entries->{$key}->{html_key}</CODE>";
-       }
-      }
-    }
-  }
-  return $entries;
-}
-
-sub byAlpha
-{
-  if ($a =~ /^[A-Za-z]/)
-  {
-    if ($b =~ /^[A-Za-z]/)
-    {
-      return lc($a) cmp lc($b);
-    }
-    else
-    {
-      return 1;
-    }
-  }
-  elsif ($b =~ /^[A-Za-z]/)
-  {
-    return -1;
-  }
-  else
-  {
-    return lc($a) cmp lc($b);
-  } 
-}
-
-sub GetIndexPages
-{
-  my $entries = shift;
-  my (@Letters, $key);
-  my ($EntriesByLetter, $Pages, $page) = ({}, [], {});
-  my @keys = sort byAlpha keys %$entries;
-
-  for $key (@keys)
-  {
-    push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key};
-  }
-  @Letters = sort byAlpha keys %$EntriesByLetter;
-  
-  $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT);
-
-  unless ($T2H_SPLIT_INDEX)
-  {
-    $page->{First} = $Letters[0];
-    $page->{Last} = $Letters[$#Letters];
-    $page->{Letters} = \@Letters;
-    $page->{EntriesByLetter} = $EntriesByLetter;
-    push @$Pages, $page;
-    return $Pages;
-  }
-
-  if ($T2H_SPLIT_INDEX =~ /^\d+$/)
-  {
-    my $i = 0;
-    my ($prev_letter, $letter);
-    $page->{First} = $Letters[0];
-    for $letter (@Letters)
-    {
-      if ($i > $T2H_SPLIT_INDEX)
-      {
-       $page->{Last} = $prev_letter;
-       push @$Pages, {%$page};
-       $page->{Letters} = [];
-       $page->{EntriesByLetter} = {};
-       $page->{First} = $letter;
-       $i=0;
-      }
-      push @{$page->{Letters}}, $letter;
-      $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}];
-      $i += scalar(@{$EntriesByLetter->{$letter}});
-      $prev_letter = $letter;
-    }
-    $page->{Last} = $Letters[$#Letters];
-    push @$Pages, {%$page};
-  }
-  return $Pages;
-}
-
-sub GetIndexSummary
-{
-  my $first_page = shift;
-  my $Pages = shift;
-  my $name = shift;
-  my ($page, $letter, $summary, $i, $l1, $l2, $l);
-
-  $i = 0;
-  $summary = '<table><tr><th valign=top>Jump to: &nbsp; </th><td>';
-  
-  for $page ($first_page, @$Pages)
-  {
-    for $letter (@{$page->{Letters}})
-    {
-      $l = t2h_anchor('', "$page->{href}#${name}_$letter", "<b>$letter</b>", 
-                     0, 'style="text-decoration:none"') . "\n &nbsp; \n";
-      
-      if ($letter =~ /^[A-Za-z]/)
-      {
-       $l2 .= $l;
-      }
-      else
-      {
-       $l1 .= $l;
-      }
-    }
-  }
-  $summary .= $l1 . "<BR>\n" if ($l1);
-  $summary .= $l2 . '</td></tr></table><br>';
-  return $summary;
-}
-
-sub PrintIndexPage
-{
-  my $lines = shift;
-  my $summary = shift;
-  my $page = shift;
-  my $name = shift;
-
-  push @$lines, $summary;
-
-  push @$lines , <<EOT;
-<P></P>
-<TABLE border=0>
-<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-EOT
-
-  for $letter (@{$page->{Letters}})
-  {
-    push @$lines, "<TR><TH><A NAME=\"${name}_$letter\"></A>$letter</TH><TD></TD><TD></TD></TR>\n";
-    for $entry (@{$page->{EntriesByLetter}->{$letter}})
-    {
-      push @$lines, 
-      "<TR><TD></TD><TD valign=top>" . 
-       t2h_anchor('', $entry->{href}, $entry->{html_key}) .
-         "</TD><TD valign=top>" . 
-           t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) .
-             "</TD></TR>\n";
-    }
-    push @$lines, "<TR><TD COLSPAN=3> <HR></TD></TR>\n";
-  }
-  push @$lines, "</TABLE><P></P>";
-  push @$lines, $summary;
-}
-
-sub PrintIndex
-{
-  my $lines = shift;
-  my $name = shift;
-  my $section = shift;
-  $section = 'Top' unless $section;
-  my $prefix = IndexName2Prefix($name);
-
-  warn ("$ERROR printindex: bad index name: $name"), return 
-    unless $prefix;
-
-  if ($index_properties->{$prefix}->{code})
-  {
-    $index_properties->{$prefix}->{from_code}->{$prefix} = 1;
-  }
-  else
-  {
-    $index_properties->{$prefix}->{from}->{$prefix}= 1;
-  }
-
-  my $Entries = GetIndexEntries($index_properties->{$prefix}->{from}, 
-                               $index_properties->{$prefix}->{from_code});
-  return unless %$Entries;
-
-  if ($T2H_IDX_SUMMARY)
-  {
-    my $key;
-    open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx")
-      || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n";
-    print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE;
-
-    for $key (sort keys %$Entries)
-    {
-      print FHIDX "$key\t$Entries->{$key}->{href}\n";
-    }
-  }
-
-  my $Pages = GetIndexPages($Entries);
-  my $page;
-  my $first_page = shift @$Pages;
-  my $sec_name = $section;
-  # remove section number
-  $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./;
-
-  ($first_page->{href} = sec_href($section)) =~ s/\#.*$//;
-  # Update tree structure of document
-  if (@$Pages)
-  {
-    my $sec;
-    my @after;
-
-    while (@sections && $sections[$#sections] ne $section)
-    {
-      unshift @after, pop @sections;
-    }
-
-    for $page (@$Pages)
-    {
-      my $node = ($page->{First} ne $page->{Last} ? 
-                 "$sec_name: $page->{First} -- $page->{Last}" :
-                 "$sec_name: $page->{First}");
-      push @sections, $node;
-      $node2sec{$node} = $node;
-      $sec2node{$node} = $node;
-      $node2up{$node} = $section;
-      $page->{href} = next_doc();
-      $page->{name} = $node;
-      $node2href{$node} = $page->{href};
-      if ($prev_node)
-      {
-       $node2next{$prev_node} = $node;
-       $node2prev{$node} = $prev_node;
-      }
-      $prev_node = $node;
-    }
-    push @sections, @after;
-  }
-
-  my $summary = GetIndexSummary($first_page, $Pages, $name);
-  PrintIndexPage($lines, $summary, $first_page, $name);
-  for $page (@$Pages)
-  {
-    push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
-    push @$lines, "<H2 ALIGN=\"Left\">$page->{name}</H2>\n";
-    PrintIndexPage($lines, $summary, $page, $name);
-  }
-}
-
-
-#+++############################################################################
-#                                                                              #
-# Pass 2/3: handle style, menu, index, cross-reference                         #
-#                                                                              #
-#---############################################################################
-
-@lines2 = ();                          # whole document (2nd pass)
-@lines3 = ();                          # whole document (3rd pass)
-$in_menu = 0;                          # am I inside a menu
-
-while (@lines) {
-    $_ = shift(@lines);
-    #
-    # special case (protected sections)
-    #
-    if (/^$PROTECTTAG/o) {
-       push(@lines2, $_);
-       next;
-    }
-    #
-    # menu
-    #
-    if (/^\@menu\b/)
-    {
-      $in_menu = 1;
-      $in_menu_listing = 1;
-      push(@lines2, &debug("<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> \n", __LINE__));
-      next;
-    }
-    if (/^\@end\s+menu\b/)
-    {
-      if ($in_menu_listing)
-      {
-       push(@lines2, &debug("</TABLE></BLOCKQUOTE>\n", __LINE__));
-      }
-      else
-      {
-       push(@lines2, &debug("</BLOCKQUOTE>\n", __LINE__));
-      }
-      $in_menu = 0;
-      $in_menu_listing = 0;
-      next;
-    }
-    if ($in_menu) 
-    {
-      my ($node, $name, $descr);
-      if (/^\*\s+($NODERE)::/o)
-      {
-       $node = $1;
-       $descr = $';
-      }
-      elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/)
-      {
-       $name = $1;
-       $node = $2;
-       $descr = $';
-      }
-      elsif (/^\*/) 
-      {
-       warn "$ERROR Bad menu line: $_";
-      }
-      else
-      {
-       if ($in_menu_listing)
-       {
-         $in_menu_listing = 0;
-         push(@lines2, &debug("</TABLE>\n", __LINE__));
-       }
-       # should be like verbatim -- preseve spaces, etc
-       s/ /\&nbsp;/g;
-       $_ .= "<br>\n";
-       push(@lines2, $_);
-      }
-      if ($node)
-      {
-       if (! $in_menu_listing)
-       {
-         $in_menu_listing = 1;
-         push(@lines2, &debug("<TABLE BORDER=0 CELLSPACING=0>\n", __LINE__));
-       }
-       # look for continuation
-       while ($lines[0] =~ /^\s+\w+/)
-       {
-         $descr .= shift(@lines);
-       }
-       &menu_entry($node, $name, $descr);
-      } 
-      next;
-    }
-    #
-    # printindex
-    #
-    PrintIndex(\@lines2, $2, $1), next
-      if (/^<!--::(.*)::-->\@printindex\s+(\w+)/);
-    #
-    # simple style substitutions
-    #
-    $_ = &substitute_style($_);
-    #
-    # xref
-    #
-    while (/\@(x|px|info|)ref{([^{}]+)(}?)/) {
-       # note: Texinfo may accept other characters
-       ($type, $nodes, $full) = ($1, $2, $3);
-       ($before, $after) = ($`, $');
-       if (! $full && $after) {
-           warn "$ERROR Bad xref (no ending } on line): $_";
-           $_ = "$before$;0${type}ref\{$nodes$after";
-           next; # while xref
-       }
-       if ($type eq 'x') {
-           $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} ";
-       } elsif ($type eq 'px') {
-           $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} ";
-       } elsif ($type eq 'info') {
-           $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info";
-       } else {
-           $type = '';
-       }
-       unless ($full) {
-           $next = shift(@lines);
-           $next = &substitute_style($next);
-           chop($nodes); # remove final newline
-           if ($next =~ /\}/) { # split on 2 lines
-               $nodes .= " $`";
-               $after = $';
-           } else {
-               $nodes .= " $next";
-               $next = shift(@lines);
-               $next = &substitute_style($next);
-               chop($nodes);
-               if ($next =~ /\}/) { # split on 3 lines
-                   $nodes .= " $`";
-                   $after = $';
-               } else {
-                   warn "$ERROR Bad xref (no ending }): $_";
-                   $_ = "$before$;0xref\{$nodes$after";
-                   unshift(@lines, $next);
-                   next; # while xref
-               }
-           }
-       }
-       $nodes =~ s/\s+/ /g; # remove useless spaces
-       @args = split(/\s*,\s*/, $nodes);
-       $node = $args[0]; # the node is always the first arg
-       $node = &normalise_node($node);
-       $sec = $args[2] || $args[1] || $node2sec{$node};
-       $href = $node2href{$node};
-       if (@args == 5) { # reference to another manual
-           $sec = $args[2] || $node;
-           $man = $args[4] || $args[3];
-           $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'section'} `$sec' in \@cite{$man}$after";
-       } elsif ($type =~ /Info/) { # inforef
-           warn "$ERROR Wrong number of arguments: $_" unless @args == 3;
-           ($nn, $_, $in) = @args;
-           $_ = "${before}${type} file `$in', node `$nn'$after";
-       } elsif ($sec && $href && ! $T2H_SHORT_REF) {
-           $_  = "${before}${type}";
-           $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type};
-           $_ .= &t2h_anchor('', $href, $sec) . $after;
-       } 
-       elsif ($href)
-       {
-         $_ = "${before}${type} " . 
-           &t2h_anchor('', $href, $args[2] || $args[1] || $node) . 
-             $after;
-       }
-       else {
-           warn "$ERROR Undefined node ($node): $_";
-           $_ = "$before$;0xref{$nodes}$after";
-       }
-    }
-
-    # replace images
-    s[\@image\s*{(.+?)}]
-    {
-     my @args = split (/\s*,\s*/, $1);
-     my $base = $args[0];
-     my $image = 
-       LocateIncludeFile("$base.png") || 
-       LocateIncludeFile("$base.jpg") ||
-       LocateIncludeFile("$base.gif");
-     warn "$ERROR no image file for $base: $_" unless ($image && -e $image);
-     "<IMG SRC=\"$image\" ALT=\"$base\">";
-     ($T2H_CENTER_IMAGE ?
-      "<CENTER><IMG SRC=\"$image\" ALT=\"$base\"></CENTER>" :
-      "<IMG SRC=\"$image\" ALT=\"$base\">");
-    }eg;
-
-    #
-    # try to guess bibliography references or glossary terms
-    #
-    unless (/^<H\d><A NAME=\"SEC\d/) {
-       if ($use_bibliography) {
-           $done = '';
-           while (/$BIBRE/o) {
-               ($pre, $what, $post) = ($`, $&, $');
-               $href = $bib2href{$what};
-               if (defined($href) && $post !~ /^[^<]*<\/A>/) {
-                   $done .= $pre . &t2h_anchor('', $href, $what);
-               } else {
-                   $done .= "$pre$what";
-               }
-               $_ = $post;
-           }
-           $_ = $done . $_;
-       }
-       if ($T2H_USE_GLOSSARY) {
-           $done = '';
-           while (/\b\w+\b/) {
-               ($pre, $what, $post) = ($`, $&, $');
-               $entry = $what;
-               $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
-               $href = $gloss2href{$entry};
-               if (defined($href) && $post !~ /^[^<]*<\/A>/) {
-                   $done .= $pre . &t2h_anchor('', $href, $what);
-               } else {
-                   $done .= "$pre$what";
-               }
-               $_ = $post;
-           }
-           $_ = $done . $_;
-       }
-    }
-    # otherwise
-    push(@lines2, $_);
-}
-print "# end of pass 2\n" if $T2H_VERBOSE;
-
-#
-# split style substitutions
-#
-while (@lines2) {
-    $_ = shift(@lines2);
-    #
-    # special case (protected sections)
-    #
-    if (/^$PROTECTTAG/o) {
-       push(@lines3, $_);
-       next;
-    }
-    #
-    # split style substitutions
-    #
-    $old = '';
-    while ($old ne $_) {
-        $old = $_;
-       if (/\@(\w+)\{/) {
-           ($before, $style, $after) = ($`, $1, $');
-           if (defined($style_map{$style})) {
-               $_ = $after;
-               $text = '';
-               $after = '';
-               $failed = 1;
-               while (@lines2) {
-                   if (/\}/) {
-                       $text .= $`;
-                       $after = $';
-                       $failed = 0;
-                       last;
-                   } else {
-                       $text .= $_;
-                       $_ = shift(@lines2);
-                   }
-               }
-               if ($failed) {
-                   die "* Bad syntax (\@$style) after: $before\n";
-               } else {
-                   $text = &apply_style($style, $text);
-                   $_ = "$before$text$after";
-               }
-           }
-       }
-    }
-    # otherwise
-    push(@lines3, $_);
-}
-print "# end of pass 3\n" if $T2H_VERBOSE;
-       
-#+++############################################################################
-#                                                                              #
-# Pass 4: foot notes, final cleanup                                            #
-#                                                                              #
-#---############################################################################
-
-@foot_lines = ();                      # footnotes
-@doc_lines = ();                       # final document
-$end_of_para = 0;                      # true if last line is <P>
-       
-while (@lines3) {
-    $_ = shift(@lines3);
-    #
-    # special case (protected sections)
-    #
-    if (/^$PROTECTTAG/o) {
-       push(@doc_lines, $_);
-       $end_of_para = 0;
-       next;
-    }
-    #
-    # footnotes
-    #
-    while (/\@footnote([^\{\s]+)\{/) {
-       ($before, $d, $after) = ($`, $1, $');
-       $_ = $after;
-       $text = '';
-       $after = '';
-       $failed = 1;
-       while (@lines3) {
-           if (/\}/) {
-               $text .= $`;
-               $after = $';
-               $failed = 0;
-               last;
-           } else {
-               $text .= $_;
-               $_ = shift(@lines3);
-           }
-       }
-       if ($failed) {
-           die "* Bad syntax (\@footnote) after: $before\n";
-       } else {
-           $foot_num++;
-           $docid  = "DOCF$foot_num";
-           $footid = "FOOT$foot_num";
-           $foot = "($foot_num)";
-           push(@foot_lines, "<H3>" . &t2h_anchor($footid, "$d#$docid", $foot) . "</H3>\n");
-           $text = "<P>$text" unless $text =~ /^\s*<P>/;
-           push(@foot_lines, "$text\n");
-           $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after;
-       }
-    }
-    #
-    # remove unnecessary <P>
-    #
-    if (/^\s*<P>\s*$/) {
-       next if $end_of_para++;
-    } else {
-       $end_of_para = 0;
-    }
-    # otherwise
-    push(@doc_lines, $_);
-}
-       
-print "# end of pass 4\n" if $T2H_VERBOSE;
-
-#+++############################################################################
-#                                                                              #
-# Pass 5: print things                                                         #
-#                                                                              #
-#---############################################################################
-
-$T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H);
-$T2H_L2H = &l2h_ToHtml        if ($T2H_L2H);
-$T2H_L2H = &l2h_InitFromHtml  if ($T2H_L2H);
-
-# fix node2up, node2prev, node2next, if desired
-if ($has_top_command)
-{
-  for $section (keys %sec2number)
-  {
-    $node = $sec2node{$section};
-    $node2up{$node} = Sec2UpNode($section) unless $node2up{$node};
-    $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node};
-    $node2next{$node} = Sec2NextNode($section) unless $node2next{$node};
-  }
-}
-
-# prepare %T2H_THISDOC
-$T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
-$T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle};
-$T2H_THISDOC{author} = $value{'_author'};
-$T2H_THISDOC{subtitle} = $value{'_subtitle'};
-$T2H_THISDOC{shorttitle} = $value{'_shorttitle'};
-for $key (keys %T2H_THISDOC)
-{
-  $_ = &substitute_style($T2H_THISDOC{$key});
-  &unprotect_texi;
-  s/\s*$//;
-  $T2H_THISDOC{$key} = $_;
-}
-
-# if no sections, then simply print document as is
-unless (@sections)
-{
-  print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE;
-  open(FILE, "> $docu_top_file") 
-    || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-
-  &$T2H_print_page_head(\*FILE);
-  $T2H_THIS_SECTION = \@doc_lines;
-  t2h_print_lines(\*FILE);
-  &$T2H_print_foot_navigation(\*FILE);
-  &$T2H_print_page_foot(\*FILE);
-  close(FILE);
-  goto Finish;
-}
-
-# initialize $T2H_HREF, $T2H_NAME
-%T2H_HREF = 
-  (
-   'First' ,   sec_href($sections[0]),
-   'Last',     sec_href($sections[$#sections]),
-   'About',     $docu_about. '#SEC_About',
-  );
-
-# prepare TOC, OVERVIEW, TOP
-$T2H_TOC = \@toc_lines;
-$T2H_OVERVIEW = \@stoc_lines;
-if ($has_top)
-{
-  while (1)
-  {
-    $_ = shift @doc_lines;
-    last if /$TOPEND/;
-    push @$T2H_TOP, $_;
-  }
-  $T2H_HREF{'Top'} = $docu_top . '#SEC_Top';
-}
-else
-{
-  $T2H_HREF{'Top'} = $T2H_HREF{First};
-}
-
-$node2href{Top} = $T2H_HREF{Top};
-$T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines;
-$T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines;
-
-# settle on index
-if ($T2H_INDEX_CHAPTER)
-{
-  $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)};
-  warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n"
-    unless $T2H_HREF{Index};
-}
-if (! $T2H_HREF{Index} && $first_index_chapter)
-{
-  $T2H_INDEX_CHAPTER = $first_index_chapter;
-  $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER};
-}
-
-print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n"
-  if ($T2H_VERBOSE && $T2H_HREF{Index});
-
-%T2H_NAME =
-  (
-   'First',   clean_name($sec2node{$sections[0]}),
-   'Last',    clean_name($sec2node{$sections[$#sections]}),
-   'About',    $T2H_WORDS->{$T2H_LANG}->{'About_Title'},
-   'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'},
-   'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'},
-   'Index' ,   clean_name($T2H_INDEX_CHAPTER),
-   'Top',      clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}),
-  );
-
-#############################################################################
-# print frame and frame toc file
-#
-if ( $T2H_FRAMES )
-{
-  open(FILE, "> $docu_frame_file") 
-    || die "$ERROR: Can't open $docu_frame_file for writing: $!\n";
-  print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
-  &$T2H_print_frame(\*FILE);
-  close(FILE);
-
-  open(FILE, "> $docu_toc_frame_file") 
-    || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n";
-  print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
-   &$T2H_print_toc_frame(\*FILE);
-  close(FILE);
-}
-
-
-#############################################################################
-# print Top
-#
-open(FILE, "> $docu_top_file") 
-  || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
-&$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT);
-
-if ($has_top)
-{
-  print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE;
-  $T2H_THIS_SECTION = $T2H_TOP;
-  $T2H_HREF{This} = $T2H_HREF{Top};
-  $T2H_NAME{This} = $T2H_NAME{Top};
-  &$T2H_print_Top(\*FILE);
-}
-  
-close(FILE) if $T2H_SPLIT;
-
-#############################################################################
-# Print sections
-#
-$T2H_NODE{Forward} = $sec2node{$sections[0]};
-$T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]});
-$T2H_HREF{Forward} = sec_href($sections[0]);
-$T2H_NODE{This} = 'Top';
-$T2H_NAME{This} = $T2H_NAME{Top};
-$T2H_HREF{This} = $T2H_HREF{Top};
-if ($T2H_SPLIT)
-{
-  print "# writing " . scalar(@sections) . 
-    " sections in $docu_rdir$docu_name"."_[1..$doc_num]"
-         if $T2H_VERBOSE;
-  $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
-  undef $FH;
-  $doc_num = 0;
-}
-else
-{
-  print "# writing " . scalar(@sections) . " sections in $docu_top_file ..." 
-    if $T2H_VERBOSE;
-  $FH = \*FILE;
-  $previous = '';
-}
-
-$counter = 0;
-# loop through sections
-while ($section = shift(@sections)) 
-{
-  if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND))
-  { 
-    if ($FH)
-    {
-      #close previous page
-      &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
-      &$T2H_print_page_foot($FH);
-      close($FH);
-      undef $FH;
-    }
-  }
-  $T2H_NAME{Back} = $T2H_NAME{This};
-  $T2H_HREF{Back} = $T2H_HREF{This};
-  $T2H_NODE{Back} = $T2H_NODE{This};
-  $T2H_NAME{This} = $T2H_NAME{Forward};
-  $T2H_HREF{This} = $T2H_HREF{Forward};
-  $T2H_NODE{This} = $T2H_NODE{Forward};
-  if ($sections[0])
-  {
-    $T2H_NODE{Forward} = $sec2node{$sections[0]};
-    $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward});
-    $T2H_HREF{Forward} = sec_href($sections[0]);
-  }
-  else
-  {
-    undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward};
-  }
-
-  $node = $node2up{$T2H_NODE{This}};
-  $T2H_HREF{Up} = $node2href{$node};
-  if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up})
-  {
-    $T2H_NAME{Up} = $T2H_NAME{Top};
-    $T2H_HREF{Up} = $T2H_HREF{Top};
-    $T2H_NODE{Up} = 'Up';
-  }
-  else
-  {
-    $T2H_NAME{Up} = &clean_name($node);
-    $T2H_NODE{Up} = $node;
-  }
-
-  $node = $T2H_NODE{This};
-  $node = $node2prev{$node};
-  $T2H_NAME{Prev} = &clean_name($node);
-  $T2H_HREF{Prev} = $node2href{$node};
-  $T2H_NODE{Prev} = $node;
-
-  $node = $T2H_NODE{This};
-  if ($node2up{$node} && $node2up{$node} ne 'Top'&&
-      ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node}))
-  {
-    $node = $node2up{$node};
-    while ($node && $node ne $node2up{$node} && ! $node2prev{$node})
-    {
-      $node = $node2up{$node};
-    }
-    $node = $node2prev{$node} 
-      unless $node2up{$node} eq 'Top' || ! $node2up{$node};
-  }
-  else
-  {
-    $node = $node2prev{$node};
-  }
-  $T2H_NAME{FastBack} = &clean_name($node);
-  $T2H_HREF{FastBack} = $node2href{$node};
-  $T2H_NODE{FastBack} = $node;
-  
-  $node = $T2H_NODE{This};
-  $node = $node2next{$node};
-  $T2H_NAME{Next} = &clean_name($node);
-  $T2H_HREF{Next} = $node2href{$node};
-  $T2H_NODE{Next} = $node;
-
-  $node = $T2H_NODE{This};
-  if ($node2up{$node} && $node2up{$node} ne 'Top'&& 
-      ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node}))
-  {
-    $node = $node2up{$node};
-    while ($node && $node ne $node2up{$node} && ! $node2next{$node})
-    {
-      $node = $node2up{$node};
-    }
-  }
-  $node = $node2next{$node};
-  $T2H_NAME{FastForward} = &clean_name($node);
-  $T2H_HREF{FastForward} = $node2href{$node};
-  $T2H_NODE{FastForward} = $node;
-
-  if (! defined($FH))
-  {
-    my $file = $T2H_HREF{This};
-    $file =~ s/\#.*$//;
-    open(FILE, "> $docu_rdir$file") || 
-      die "$ERROR: Can't open $docu_rdir$file for writing: $!\n";
-    $FH = \*FILE;
-    &$T2H_print_page_head($FH);
-    t2h_print_label($FH);
-    &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter';
-  }
-  else
-  {
-    t2h_print_label($FH);
-  }
-
-  $T2H_THIS_SECTION = [];
-  while (@doc_lines) {
-    $_ = shift(@doc_lines);
-    last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND);
-    push(@$T2H_THIS_SECTION, $_);
-  }
-  $previous = $_;
-  &$T2H_print_section($FH);
-
-  if ($T2H_VERBOSE)
-  {
-    $counter++;
-    print "." if $counter =~ /00$/;
-  }
-}
-if ($T2H_SPLIT)
-{
-  &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
-  &$T2H_print_page_foot($FH);
-  close($FH);
-}
-print "\n" if $T2H_VERBOSE;
-
-#############################################################################
-# Print ToC, Overview, Footnotes
-#
-undef $T2H_HREF{Prev};
-undef $T2H_HREF{Next};
-undef $T2H_HREF{Back};
-undef $T2H_HREF{Forward};
-undef $T2H_HREF{Up};
-
-if (@foot_lines)
-{
-  print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE;
-  open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n"
-      if $T2H_SPLIT;
-  $T2H_HREF{This} = $docu_foot;
-  $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'};
-  $T2H_THIS_SECTION = \@foot_lines;
-  &$T2H_print_Footnotes(\*FILE);
-  close(FILE) if $T2H_SPLIT;
-}
-
-if (@toc_lines)
-{
-  print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE;
-  open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n"
-      if $T2H_SPLIT;
-  $T2H_HREF{This} = $T2H_HREF{Contents};
-  $T2H_NAME{This} = $T2H_NAME{Contents};
-  $T2H_THIS_SECTION = \@toc_lines;
-  &$T2H_print_Toc(\*FILE);
-  close(FILE) if $T2H_SPLIT;
-}
-
-if (@stoc_lines)
-{
-  print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE;
-  open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n"
-      if $T2H_SPLIT;
-  
-  $T2H_HREF{This} = $T2H_HREF{Overview};
-  $T2H_NAME{This} = $T2H_NAME{Overview};
-  $T2H_THIS_SECTION = \@stoc_lines;
-  unshift @$T2H_THIS_SECTION, "<BLOCKQUOTE>\n";
-  push @$T2H_THIS_SECTION, "\n</BLOCKQUOTE>\n";
-  &$T2H_print_Overview(\*FILE);
-  close(FILE) if $T2H_SPLIT;
-}
-
-if ($about_body = &$T2H_about_body())
-{
-  print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE;
-  open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n"
-      if $T2H_SPLIT;
-  
-  $T2H_HREF{This} = $T2H_HREF{About};
-  $T2H_NAME{This} = $T2H_NAME{About};
-  $T2H_THIS_SECTION = [$about_body];
-  &$T2H_print_About(\*FILE);
-  close(FILE) if $T2H_SPLIT;
-}
-
-unless ($T2H_SPLIT)
-{
-  &$T2H_print_page_foot(\*FILE);
-  close (FILE);
-}
-  
-Finish:
-&l2h_FinishFromHtml if ($T2H_L2H);
-&l2h_Finish if($T2H_L2H);
-print "# that's all folks\n" if $T2H_VERBOSE;
-
-exit(0);
-
-#+++############################################################################
-#                                                                              #
-# Low level functions                                                          #
-#                                                                              #
-#---############################################################################
-
-sub LocateIncludeFile
-{
-  my $file = shift;
-  my $dir;
-
-  return $file if (-e $file && -r $file);
-  foreach $dir (@T2H_INCLUDE_DIRS)
-  {
-    return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file");
-  }
-  return undef;
-}
-
-sub clean_name 
-{
-  local ($_);
-  $_ = &remove_style($_[0]);
-  &unprotect_texi;
-  return $_;
-}
-
-sub update_sec_num {
-    local($name, $level) = @_;
-    my $ret;
-
-    $level--; # here we start at 0
-    if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
-       # appendix style
-       if (defined(@appendix_sec_num)) {
-           &incr_sec_num($level, @appendix_sec_num);
-       } else {
-           @appendix_sec_num = ('A', 0, 0, 0);
-       }
-       $ret = join('.', @appendix_sec_num[0..$level]);
-    } else {
-       # normal style
-       if (defined(@normal_sec_num)) 
-       {
-         &incr_sec_num($level, @normal_sec_num);
-       } 
-       else 
-       {
-         @normal_sec_num = (1, 0, 0, 0);
-       }
-       $ret = join('.', @normal_sec_num[0..$level]);
-    }
-    
-    $ret .= "." if $level == 0;
-    return $ret;
-}
-
-sub incr_sec_num {
-    local($level, $l);
-    $level = shift(@_);
-    $_[$level]++;
-    foreach $l ($level+1 .. 3) {
-       $_[$l] = 0;
-    }
-}
-
-sub Sec2UpNode
-{
-  my $sec = shift;
-  my $num = $sec2number{$sec};
-
-  return '' unless $num;
-  return 'Top' unless $num =~ /\.\d+/;
-  $num =~ s/\.[^\.]*$//;
-  $num = $num . '.' unless $num =~ /\./;
-  return $sec2node{$number2sec{$num}};
-}
-
-sub Sec2PrevNode
-{
-  my $sec = shift;
-  my $num = $sec2number{$sec};
-  my ($i, $post);
-  
-  if ($num =~ /(\w+)(\.$|$)/)
-  {
-    $num = $`;
-    $i = $1;
-    $post = $2;
-    if ($i eq 'A')
-    {
-      $i = $normal_sec_num[0];
-    }
-    elsif ($i ne '1')
-    {
-      # unfortunately, -- operator is not magical
-      $i = chr(ord($i) + 1);
-    }
-    else
-    {
-      return '';
-    }
-    return $sec2node{$number2sec{$num . $i . $post}}
-  }
-  return '';
-}
-
-sub Sec2NextNode
-{
-  my $sec = shift;
-  my $num = $sec2number{$sec};
-  my $i;
-
-  if ($num =~ /(\w+)(\.$|$)/)
-  {
-    $num = $`;
-    $i = $1;
-    $post = $2;
-    if ($post eq '.' && $i eq $normal_sec_num[0])
-    {
-      $i = 'A';
-    }
-    else
-    {
-      $i++;
-    }
-    return $sec2node{$number2sec{$num . $i . $post}}
-  }
-  return '';
-}
-
-sub check {
-    local($_, %seen, %context, $before, $match, $after);
-
-    while (<>) {
-       if (/\@(\*|\.|\:|\@|\{|\})/) {
-           $seen{$&}++;
-           $context{$&} .= "> $_" if $T2H_VERBOSE;
-           $_ = "$`XX$'";
-           redo;
-       }
-       if (/\@(\w+)/) {
-           ($before, $match, $after) = ($`, $&, $');
-           if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
-               $seen{'e-mail address'}++;
-               $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE;
-           } else {
-               $seen{$match}++;
-               $context{$match} .= "> $_" if $T2H_VERBOSE;
-           }
-           $match =~ s/^\@/X/;
-           $_ = "$before$match$after";
-           redo;
-       }
-    }
-    
-    foreach (sort(keys(%seen))) {
-       if ($T2H_VERBOSE) {
-           print "$_\n";
-           print $context{$_};
-       } else {
-           print "$_ ($seen{$_})\n";
-       }
-    }
-}
-
-sub open {
-    local($name) = @_;
-
-    ++$fh_name;
-    if (open($fh_name, $name)) {
-       unshift(@fhs, $fh_name);
-    } else {
-       warn "$ERROR Can't read file $name: $!\n";
-    }
-}
-
-sub init_input {
-    @fhs = ();                 # hold the file handles to read
-    @input_spool = ();         # spooled lines to read
-    $fh_name = 'FH000';
-    &open($docu);
-}
-
-sub next_line {
-    local($fh, $line);
-
-    if (@input_spool) {
-       $line = shift(@input_spool);
-       return($line);
-    }
-    while (@fhs) {
-       $fh = $fhs[0];
-       $line = <$fh>;
-       return($line) if $line;
-       close($fh);
-       shift(@fhs);
-    }
-    return(undef);
-}
-
-# used in pass 1, use &next_line
-sub skip_until {
-    local($tag) = @_;
-    local($_);
-
-    while ($_ = &next_line) {
-       return if /^\@end\s+$tag\s*$/;
-    }
-    die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-# used in pass 1 for l2h use &next_line
-sub string_until {
-    local($tag) = @_;
-    local($_, $string);
-
-    while ($_ = &next_line) {
-       return $string if /^\@end\s+$tag\s*$/;
-#      $_ =~ s/hbox/mbox/g;
-       $string = $string.$_;
-    }
-    die "* Failed to find '$tag' after: " . $lines[$#lines];
-}
-
-#
-# HTML stacking to have a better HTML output
-#
-
-sub html_reset {
-    @html_stack = ('html');
-    $html_element = 'body';
-}
-
-sub html_push {
-    local($what) = @_;
-    push(@html_stack, $html_element);
-    $html_element = $what;
-}
-
-sub html_push_if {
-    local($what) = @_;
-    push(@html_stack, $html_element)
-       if ($html_element && $html_element ne 'P');
-    $html_element = $what;
-}
-
-sub html_pop {
-    $html_element = pop(@html_stack);
-}
-
-sub html_pop_if {
-    local($elt);
-
-    if (@_) {
-       foreach $elt (@_) {
-           if ($elt eq $html_element) {
-               $html_element = pop(@html_stack) if @html_stack;
-               last;
-           }
-       }
-    } else {
-       $html_element = pop(@html_stack) if @html_stack;
-    }
-}
-
-sub html_debug {
-    local($what, $line) = @_;
-    if ($T2H_DEBUG & $DEBUG_HTML)
-    {
-     $what = "\n" unless $what;
-     return("<!-- $line @html_stack, $html_element -->$what")
-    }  
-    return($what);
-}
-
-# to debug the output...
-sub debug {
-    local($what, $line) = @_;
-    return("<!-- $line -->$what")
-       if $T2H_DEBUG & $DEBUG_HTML;
-    return($what);
-}
-
-sub SimpleTexi2Html
-{
-  local $_ = $_[0];
-  &protect_texi;
-  &protect_html;
-  $_ = substitute_style($_);
-  $_[0]  = $_;
-}
-
-sub normalise_node {
-  local $_ = $_[0];
-  s/\s+/ /g;
-  s/ $//;
-  s/^ //;
-  &protect_texi;
-  &protect_html;
-  $_ = substitute_style($_);
-  $_[0]  = $_;
-}
-
-sub menu_entry 
-{
-  my ($node, $name, $descr) = @_;
-  my ($href, $entry);
-  
-  &normalise_node($node);
-  $href = $node2href{$node};
-  if ($href) 
-  {
-    $descr =~ s/^\s+//;
-    $descr =~ s/\s*$//;
-    $descr = SimpleTexi2Html($descr);
-    if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node})
-    {
-      $entry = $node2sec{$node};
-      $name = '';
-    }
-    else
-    {
-      &normalise_node($name);
-      $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY) 
-               ? "$name : $node" : $node);
-    }
-
-    if ($T2H_AVOID_MENU_REDUNDANCY && $descr)
-    {
-      my $clean_entry = $entry;
-      $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /);
-      $clean_entry =~ s/[^\w]//g;
-      my $clean_descr = $descr;
-      $clean_descr =~ s/[^\w]//g;
-      $descr = '' if ($clean_entry eq $clean_descr)
-    }
-    push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' . 
-                       &t2h_anchor('', $href, $entry) . 
-                       '</TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">' . 
-                       $descr . 
-                       "</TD></TR>\n", __LINE__));
-  }
-  elsif ($node =~ /^\(.*\)\w+/)
-  {
-    push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' . 
-                       $entry . 
-                       '</TD><TD ALIGN="left" VALIGN="TOP">' . $descr . 
-                       "</TD></TR>\n", __LINE__))
-  }
-  else
-  {
-    warn "$ERROR Undefined node of menu_entry ($node): $_";
-  }
-}
-
-sub do_ctrl { "^$_[0]" }
-
-sub do_email {
-    local($addr, $text) = split(/,\s*/, $_[0]);
-
-    $text = $addr unless $text;
-    &t2h_anchor('', "mailto:$addr", $text);
-}
-
-sub do_sc 
-{ 
-  # l2h does this much better
-  return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H);
-  return "\U$_[0]\E";
-}
-
-sub do_math
-{
-  return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H);
-  return "<EM>".$text."</EM>";
-}
-
-sub do_uref {
-    local($url, $text, $only_text) = split(/,\s*/, $_[0]);
-
-    $text = $only_text if $only_text;
-    $text = $url unless $text;
-    &t2h_anchor('', $url, $text);
-}
-
-sub do_url { &t2h_anchor('', $_[0], $_[0]) }
-
-sub do_acronym
-{
-  return '<FONT SIZE="-1">' . $_[0] . '</FONT>';
-}
-
-sub do_accent
-{
-  return "&$_[0]acute;" if $_[1] eq 'H';
-  return "$_[0]." if $_[1] eq 'dotaccent';
-  return "$_[0]*" if $_[1] eq 'ringaccent';
-  return "$_[0]".'[' if $_[1] eq 'tieaccent';
-  return "$_[0]".'(' if $_[1] eq 'u';
-  return "$_[0]_" if $_[1] eq 'ubaraccent';
-  return ".$_[0]" if $_[1] eq 'udotaccent';
-  return "$_[0]&lt;" if $_[1] eq 'v';
-  return "&$_[0]cedil;" if $_[1] eq ',';
-  return "$_[0]" if $_[1] eq 'dotless';
-  return undef;
-}
-
-sub apply_style {
-    local($texi_style, $text) = @_;
-    local($style);
-
-    $style = $style_map{$texi_style};
-    if (defined($style)) { # known style
-       if ($style =~ /^\"/) { # add quotes
-           $style = $';
-           $text = "\`$text\'";
-       }
-       if ($style =~ /^\&/) { # custom
-           $style = $';
-           $text = &$style($text, $texi_style);
-       } elsif ($style) { # good style
-           $text = "<$style>$text</$style>";
-       } else { # no style
-       }
-    } else { # unknown style
-       $text = undef;
-    }
-    return($text);
-}
-
-# remove Texinfo styles
-sub remove_style {
-    local($_) = @_;
-    1 while(s/\@\w+{([^\{\}]+)}/$1/g);
-    return($_);
-}
-
-sub remove_things
-{
-  local ($_) = @_;
-  s|\@(\w+)\{\}|$1|g;
-  return $_;
-}
-
-sub substitute_style {
-    local($_) = @_;
-    local($changed, $done, $style, $text);
-
-    &simple_substitutions;
-    $changed = 1;
-    while ($changed) {
-       $changed = 0;
-       $done = '';
-       while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) {
-           $text = &apply_style($1, $2);
-           if ($text) {
-               $_ = "$`$text$'";
-               $changed = 1;
-           } else {
-               $done .= "$`\@$1";
-               $_ = "{$2}$'";
-           }
-       }
-        $_ = $done . $_;
-    }
-    return($_);
-}
-
-sub t2h_anchor {
-    local($name, $href, $text, $newline, $extra_attribs) = @_;
-    local($result);
-
-    $result = "<A";
-    $result .= " NAME=\"$name\"" if $name;
-    if ($href)
-    {
-      $href =~ s|^$T2H_HREF_DIR_INSTEAD_FILE|./| 
-       if ($T2H_HREF_DIR_INSTEAD_FILE);
-      $result .= ($href =~ /\"/ ? " HREF='$href'"  : " HREF=\"$href\"");
-    }
-    $result .= " $extra_attribs" if $extra_attribs;
-    $result .= ">$text</A>";
-    $result .= "\n" if $newline;
-    return($result);
-}
-
-sub pretty_date {
-    local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
-    @MoY = ('January', 'February', 'March', 'April', 'May', 'June',
-           'July', 'August', 'September', 'October', 'November', 'December');
-    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
-    $year += ($year < 70) ? 2000 : 1900;
-    # obachman: Let's do it as the Americans do
-    return("$MoY[$mon], $mday  $year");
-}
-
-sub doc_href {
-    local($num) = @_;
-
-    return("${docu_name}_$num.$docu_ext");
-}
-
-sub sec_href
-{
-  return $node2href{$sec2node{$_[0]}};
-}
-
-sub next_doc {
-    $docu_doc = &doc_href(++$doc_num);
-}
-
-sub t2h_print_lines {
-    my ($fh, $lines) = @_;
-    local($_);
-    $lines = $T2H_THIS_SECTION unless $lines;
-    my $cnt = 0;
-    for (@$lines) 
-    {
-       $_ = l2h_FromHtml($_) if ($T2H_L2H);
-       if (/^$PROTECTTAG/o) {
-           $_ = $tag2pro{$_};
-       } else {
-           &unprotect_texi;
-       }
-       print $fh $_;
-       $cnt += split(/\W*\s+\W*/);
-    }
-    return $cnt;
-}
-
-sub protect_texi {
-    # protect @ { } ` '
-    s/\@\@/$;0/go;
-    s/\@\{/$;1/go;
-    s/\@\}/$;2/go;
-    s/\@\`/$;3/go;
-    s/\@\'/$;4/go;
-}
-
-sub protect_html {
-    local($what) = @_;
-    # protect & < >
-    $what =~ s/\&/\&\#38;/g;
-    $what =~ s/\</\&\#60;/g;
-    $what =~ s/\>/\&\#62;/g;
-    # restore anything in quotes
-    # this fixes my problem where I had:
-    # < IMG SRC="leftarrow.gif" ALT="<--" >  but what if I wanted &#60; in my ALT text ??
-    # maybe byte stuffing or some other technique should be used.
-    $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g;
-    $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g;
-    $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g;
-    # but recognize some HTML things
-    $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g;            # </A>
-    $what =~ s/\&\#60;A ([^\&]+)\&\#62;/<A $1>/g;     # <A [^&]+>
-    $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;/<IMG $1>/g; # <IMG [^&]+>
-    return($what);
-}
-
-sub unprotect_texi {
-    s/$;0/\@/go;
-    s/$;1/\{/go;
-    s/$;2/\}/go;
-    s/$;3/\`/go;
-    s/$;4/\'/go;
-}
-
-sub Unprotect_texi 
-{
-  local $_ = shift;
-  &unprotect_texi;
-  return($_);
-}
-
-sub unprotect_html {
-    local($what) = @_;
-    $what =~ s/\&\#38;/\&/g;
-    $what =~ s/\&\#60;/\</g;
-    $what =~ s/\&\#62;/\>/g;
-    return($what);
-}
-
-sub t2h_print_label
-{
-    my $fh = shift;
-    my $href = shift || $T2H_HREF{This};
-    $href =~ s/.*#(.*)$/$1/;
-    print $fh qq{<A NAME="$href"></A>\n};
-}
-
-##############################################################################
-
-       # These next few lines are legal in both Perl and nroff.
-
-.00 ;                  # finish .ig
-'di                    \" finish diversion--previous line must be blank
-.nr nl 0-1             \" fake up transition to first page again
-.nr % 0                        \" start at page 1
-'; __END__ ############# From here on it's a standard manual page ############
-.so /usr/local/man/man1/texi2html.1
diff --git a/support/version2.c b/support/version2.c
deleted file mode 100644 (file)
index 83e2b13..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/* version.c -- distribution and version numbers. */
-
-/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 2 of the License, or
-   (at your option) any later version.
-
-   Bash is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-
-#include <stdio.h>
-
-#include "stdc.h"
-
-#include "version.h"
-#include "patchlevel.h"
-#include "conftypes.h"
-
-#include "bashintl.h"
-
-extern char *shell_name;
-
-/* Defines from version.h */
-const char * const dist_version = DISTVERSION;
-const int patch_level = PATCHLEVEL;
-const int build_version = BUILDVERSION;
-#ifdef RELSTATUS
-const char * const release_status = RELSTATUS;
-#else
-const char * const release_status = (char *)0;
-#endif
-const char * const sccs_version = SCCSVERSION;
-
-/* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
-int shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
-
-/* Functions for getting, setting, and displaying the shell version. */
-
-/* Forward declarations so we don't have to include externs.h */
-extern char *shell_version_string __P((void));
-extern void show_shell_version __P((int));
-
-/* Give version information about this shell. */
-char *
-shell_version_string ()
-{
-  static char tt[32] = { '\0' };
-
-  if (tt[0] == '\0')
-    {
-      if (release_status)
-#if defined (HAVE_SNPRINTF)
-       snprintf (tt, sizeof (tt), "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status);
-#else
-       sprintf (tt, "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status);
-#endif
-      else
-#if defined (HAVE_SNPRINTF)
-       snprintf (tt, sizeof (tt), "%s.%d(%d)", dist_version, patch_level, build_version);
-#else
-       sprintf (tt, "%s.%d(%d)", dist_version, patch_level, build_version);
-#endif
-    }
-  return tt;
-}
-
-void
-show_shell_version (extended)
-     int extended;
-{
-  printf (_("GNU bash, version %s (%s)\n"), shell_version_string (), MACHTYPE);
-  if (extended)
-    {
-      printf (_("Copyright (C) 2009 Free Software Foundation, Inc.\n"));
-      printf (_("License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>\n"));
-      printf (_("This is free software; you are free to change and redistribute it.\n"));
-      printf (_("There is NO WARRANTY, to the extent permitted by law.\n"));
-    }
-}
diff --git a/support/xenix-link.sh b/support/xenix-link.sh
deleted file mode 100755 (executable)
index 4d82e00..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-:
-# link bash for Xenix under SCO Unix
-#
-# For xenix 2.2:
-#      CC="cc -xenix -lx" ./configure
-#      edit config.h:
-#              comment out the define for HAVE_DIRENT_H
-#              enable the define for HAVE_SYS_NDIR_H to 1
-#      make
-#      CC="cc -xenix -lx" ./link.sh
-#
-# For xenix 2.3:
-#      CC="cc -x2.3" ./configure
-#      make
-#      CC="cc -x2.3" ./link.sh
-
-# Copyright (C) 1989-2002 Free Software Foundation, Inc.
-#
-#   This program is free software: you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation, either version 3 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-
-set -x
-
-rm -f bash
-
-if [ -z "$CC" ]
-then
-       if [ -f /unix ] && [ ! -f /xenix ]
-       then
-               CC="cc -xenix"
-       else
-               CC=gcc
-       fi
-fi
-
-try_dir=no
-try_23=no
-try_x=yes
-
-case "$CC" in
-*-ldir*) try_dir=yes ;;
-esac
-
-case "$CC" in
-*-lx*) try_23=no ; try_x=yes ;;
-esac
-
-case "$CC" in
-*-x2.3*|*-l2.3*) try_23=yes ; try_dir=yes ;;
-esac
-
-libs=
-try="socket"
-if [ $try_dir = yes ] ; then try="$try dir" ; fi
-if [ $try_23 = yes ] ; then try="$try 2.3" ; fi
-if [ $try_x = yes ] ; then try="$try x" ; fi
-for name in $try
-do
-       if [ -r "/lib/386/Slib${name}.a" ] ; then libs="$libs -l$name" ; fi
-done
-
-$CC -o bash shell.o eval.o y.tab.o \
-general.o make_cmd.o print_cmd.o dispose_cmd.o execute_cmd.o variables.o \
-copy_cmd.o error.o expr.o flags.o nojobs.o subst.o hashcmd.o hashlib.o \
-mailcheck.o trap.o input.o unwind_prot.o pathexp.o sig.o test.o \
-version.o alias.o array.o braces.o bracecomp.o bashhist.o bashline.o \
-getcwd.o siglist.o vprint.o oslib.o list.o stringlib.o locale.o \
-xmalloc.o builtins/libbuiltins.a \
-lib/readline/libreadline.a lib/readline/libhistory.a \
--ltermcap lib/glob/libglob.a lib/tilde/libtilde.a lib/malloc/libmalloc.a \
-$libs
-
-ls -l bash
diff --git a/tests/200 b/tests/200
deleted file mode 100644 (file)
index e69de29..0000000